diff --git a/.gitignore b/.gitignore index f0f7e9dc..803e48ed 100644 --- a/.gitignore +++ b/.gitignore @@ -36,3 +36,4 @@ examples/sidecar/templates/python/__pycache__/* .settings CLAUDE.md .dagger +openapi-gen diff --git a/ci/go.mod b/ci/go.mod index 1af6432a..618424a7 100644 --- a/ci/go.mod +++ b/ci/go.mod @@ -2,46 +2,6 @@ module dagger/interlink go 1.24.0 -require ( - github.com/99designs/gqlgen v0.17.80 - github.com/Khan/genqlient v0.8.1 - github.com/vektah/gqlparser/v2 v2.5.30 - go.opentelemetry.io/otel v1.38.0 - go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.14.0 - go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.14.0 - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0 - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.38.0 - go.opentelemetry.io/otel/log v0.14.0 - go.opentelemetry.io/otel/sdk v1.38.0 - go.opentelemetry.io/otel/sdk/log v0.14.0 - go.opentelemetry.io/otel/trace v1.38.0 - go.opentelemetry.io/proto/otlp v1.8.0 - golang.org/x/sync v0.17.0 - google.golang.org/grpc v1.75.1 -) - -require ( - github.com/cenkalti/backoff/v5 v5.0.3 // indirect - github.com/go-logr/logr v1.4.3 // indirect - github.com/go-logr/stdr v1.2.2 // indirect - github.com/google/uuid v1.6.0 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 // indirect - github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect - github.com/sosodev/duration v1.3.1 // indirect - go.opentelemetry.io/auto/sdk v1.1.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.38.0 - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.38.0 - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 // indirect - go.opentelemetry.io/otel/metric v1.38.0 - go.opentelemetry.io/otel/sdk/metric v1.38.0 - golang.org/x/net v0.44.0 // indirect - golang.org/x/sys v0.36.0 // indirect - golang.org/x/text v0.29.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect - google.golang.org/protobuf v1.36.9 // indirect -) - replace go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc => go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.14.0 replace go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp => go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.14.0 diff --git a/ci/go.sum b/ci/go.sum index d49b1da2..e69de29b 100644 --- a/ci/go.sum +++ b/ci/go.sum @@ -1,99 +0,0 @@ -github.com/99designs/gqlgen v0.17.80 h1:S64VF9SK+q3JjQbilgdrM0o4iFQgB54mVQ3QvXEO4Ek= -github.com/99designs/gqlgen v0.17.80/go.mod h1:vgNcZlLwemsUhYim4dC1pvFP5FX0pr2Y+uYUoHFb1ig= -github.com/Khan/genqlient v0.8.1 h1:wtOCc8N9rNynRLXN3k3CnfzheCUNKBcvXmVv5zt6WCs= -github.com/Khan/genqlient v0.8.1/go.mod h1:R2G6DzjBvCbhjsEajfRjbWdVglSH/73kSivC9TLWVjU= -github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883 h1:bvNMNQO63//z+xNgfBlViaCIJKLlCJ6/fmUseuG0wVQ= -github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= -github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1xcsSM= -github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= -github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= -github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= -github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= -github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= -github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= -github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= -github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= -github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 h1:8Tjv8EJ+pM1xP8mK6egEbD1OgnVTyacbefKhmbLhIhU= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2/go.mod h1:pkJQ2tZHJ0aFOVEEot6oZmaVEZcRme73eIFmhiVuRWs= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8= -github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= -github.com/sosodev/duration v1.3.1 h1:qtHBDMQ6lvMQsL15g4aopM4HEfOaYuhWBw3NPTtlqq4= -github.com/sosodev/duration v1.3.1/go.mod h1:RQIBBX0+fMLc/D9+Jb/fwvVmo0eZvDDEERAikUR6SDg= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= -github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= -github.com/vektah/gqlparser/v2 v2.5.30 h1:EqLwGAFLIzt1wpx1IPpY67DwUujF1OfzgEyDsLrN6kE= -github.com/vektah/gqlparser/v2 v2.5.30/go.mod h1:D1/VCZtV3LPnQrcPBeR/q5jkSQIPti0uYCP/RI0gIeo= -go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= -go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= -go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.14.0 h1:OMqPldHt79PqWKOMYIAQs3CxAi7RLgPxwfFSwr4ZxtM= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.14.0/go.mod h1:1biG4qiqTxKiUCtoWDPpL3fB3KxVwCiGw81j3nKMuHE= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.14.0 h1:QQqYw3lkrzwVsoEX0w//EhH/TCnpRdEenKBOOEIMjWc= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.14.0/go.mod h1:gSVQcr17jk2ig4jqJ2DX30IdWH251JcNAecvrqTxH1s= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.38.0 h1:vl9obrcoWVKp/lwl8tRE33853I8Xru9HFbw/skNeLs8= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.38.0/go.mod h1:GAXRxmLJcVM3u22IjTg74zWBrRCKq8BnOqUVLodpcpw= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.38.0 h1:Oe2z/BCg5q7k4iXC3cqJxKYg0ieRiOqF0cecFYdPTwk= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.38.0/go.mod h1:ZQM5lAJpOsKnYagGg/zV2krVqTtaVdYdDkhMoX6Oalg= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 h1:GqRJVj7UmLjCVyVJ3ZFLdPRmhDUp2zFmQe3RHIOsw24= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0/go.mod h1:ri3aaHSmCTVYu2AWv44YMauwAQc0aqI9gHKIcSbI1pU= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0 h1:lwI4Dc5leUqENgGuQImwLo4WnuXFPetmPpkLi2IrX54= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0/go.mod h1:Kz/oCE7z5wuyhPxsXDuaPteSWqjSBD5YaSdbxZYGbGk= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.38.0 h1:aTL7F04bJHUlztTsNGJ2l+6he8c+y/b//eR0jjjemT4= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.38.0/go.mod h1:kldtb7jDTeol0l3ewcmd8SDvx3EmIE7lyvqbasU3QC4= -go.opentelemetry.io/otel/log v0.14.0 h1:2rzJ+pOAZ8qmZ3DDHg73NEKzSZkhkGIua9gXtxNGgrM= -go.opentelemetry.io/otel/log v0.14.0/go.mod h1:5jRG92fEAgx0SU/vFPxmJvhIuDU9E1SUnEQrMlJpOno= -go.opentelemetry.io/otel/metric v1.38.0 h1:Kl6lzIYGAh5M159u9NgiRkmoMKjvbsKtYRwgfrA6WpA= -go.opentelemetry.io/otel/metric v1.38.0/go.mod h1:kB5n/QoRM8YwmUahxvI3bO34eVtQf2i4utNVLr9gEmI= -go.opentelemetry.io/otel/sdk v1.38.0 h1:l48sr5YbNf2hpCUj/FoGhW9yDkl+Ma+LrVl8qaM5b+E= -go.opentelemetry.io/otel/sdk v1.38.0/go.mod h1:ghmNdGlVemJI3+ZB5iDEuk4bWA3GkTpW+DOoZMYBVVg= -go.opentelemetry.io/otel/sdk/log v0.14.0 h1:JU/U3O7N6fsAXj0+CXz21Czg532dW2V4gG1HE/e8Zrg= -go.opentelemetry.io/otel/sdk/log v0.14.0/go.mod h1:imQvII+0ZylXfKU7/wtOND8Hn4OpT3YUoIgqJVksUkM= -go.opentelemetry.io/otel/sdk/log/logtest v0.14.0 h1:Ijbtz+JKXl8T2MngiwqBlPaHqc4YCaP/i13Qrow6gAM= -go.opentelemetry.io/otel/sdk/log/logtest v0.14.0/go.mod h1:dCU8aEL6q+L9cYTqcVOk8rM9Tp8WdnHOPLiBgp0SGOA= -go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6qT5wthqPoM= -go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA= -go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE= -go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= -go.opentelemetry.io/proto/otlp v1.8.0 h1:fRAZQDcAFHySxpJ1TwlA1cJ4tvcrw7nXl9xWWC8N5CE= -go.opentelemetry.io/proto/otlp v1.8.0/go.mod h1:tIeYOeNBU4cvmPqpaji1P+KbB4Oloai8wN4rWzRrFF0= -go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= -go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= -golang.org/x/net v0.44.0 h1:evd8IRDyfNBMBTTY5XRF1vaZlD+EmWx6x8PkhR04H/I= -golang.org/x/net v0.44.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= -golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= -golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= -golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= -golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= -golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= -gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= -gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 h1:BIRfGDEjiHRrk0QKZe3Xv2ieMhtgRGeLcZQ0mIVn4EY= -google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5/go.mod h1:j3QtIyytwqGr1JUDtYXwtMXWPKsEa5LtzIFN1Wn5WvE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 h1:eaY8u2EuxbRv7c3NiGK0/NedzVsCcV6hDuU5qPX5EGE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc= -google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= -google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= -google.golang.org/protobuf v1.36.9 h1:w2gp2mA27hUeUzj9Ex9FBjsBm40zfaDtEWow293U7Iw= -google.golang.org/protobuf v1.36.9/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= -gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/cmd/openapi-gen/main.go b/cmd/openapi-gen/main.go index 44958ad0..b93fd20f 100644 --- a/cmd/openapi-gen/main.go +++ b/cmd/openapi-gen/main.go @@ -14,41 +14,42 @@ import ( ) func main() { - version := flag.String("version", "0.4.0", "generate API spec for this version") + version := flag.String("version", "0.6.0", "generate API spec for this version") flag.Parse() + generateInterlinkSpec(*version) + generatePluginSpec(*version) +} + +// generateInterlinkSpec generates the OpenAPI spec for the Virtual Kubelet to interLink API +// server communication and writes it to ./docs/openapi/interlink-openapi.json. +func generateInterlinkSpec(version string) { reflector := openapi3.Reflector{} reflector.Spec = &openapi3.Spec{Openapi: "3.0.3"} reflector.Spec.Info. WithTitle("interLink server API"). - WithVersion(*version). + WithVersion(version). WithDescription("This is the API spec for the Virtual Kubelet to interLink API server communication") + // CREATE: VK sends PodCreateRequests; interLink proxies back the plugin's CreateStruct response. createOp, err := reflector.NewOperationContext(http.MethodPost, "/create") if err != nil { panic(err) } - - // CREATE - createOp.AddReqStructure(new(interlink.PodCreateRequests)) - createOp.AddRespStructure(new(interlink.RetrievedPodData), func(cu *openapi.ContentUnit) { cu.HTTPStatus = http.StatusOK }) - - err = reflector.AddOperation(createOp) - if err != nil { + createOp.AddReqStructure(new(interlink.PodCreateRequests), withRequiredBody) + createOp.AddRespStructure(new(interlink.CreateStruct), func(cu *openapi.ContentUnit) { cu.HTTPStatus = http.StatusOK }) + if err = reflector.AddOperation(createOp); err != nil { panic(err) } - // DELETE - deleteOp, err := reflector.NewOperationContext(http.MethodPost, "/delete") + // DELETE: VK sends DELETE to interLink. + deleteOp, err := reflector.NewOperationContext(http.MethodDelete, "/delete") if err != nil { panic(err) } - deleteOp.AddReqStructure(new(corev1.Pod)) deleteOp.AddRespStructure(nil, func(cu *openapi.ContentUnit) { cu.HTTPStatus = http.StatusOK }) - - err = reflector.AddOperation(deleteOp) - if err != nil { + if err = reflector.AddOperation(deleteOp); err != nil { panic(err) } @@ -57,60 +58,127 @@ func main() { if err != nil { panic(err) } - pingOp.AddReqStructure(nil) pingOp.AddRespStructure(nil, func(cu *openapi.ContentUnit) { cu.HTTPStatus = http.StatusOK }) + if err = reflector.AddOperation(pingOp); err != nil { + panic(err) + } - err = reflector.AddOperation(pingOp) + // Status: VK uses GET with a JSON body. + statusOp, err := reflector.NewOperationContext(http.MethodGet, "/status") if err != nil { panic(err) } + statusOp.AddReqStructure(new([]corev1.Pod)) + statusOp.AddRespStructure(new([]interlink.PodStatus), func(cu *openapi.ContentUnit) { cu.HTTPStatus = http.StatusOK }) + if err = reflector.AddOperation(statusOp); err != nil { + panic(err) + } - // Status - statusOp, err := reflector.NewOperationContext(http.MethodPost, "/status") + // Logs: VK uses GET with a JSON body; response is streamed plain text. + logsOp, err := reflector.NewOperationContext(http.MethodGet, "/getLogs") if err != nil { panic(err) } + logsOp.AddReqStructure(new(interlink.LogStruct)) + logsOp.AddRespStructure(nil, func(cu *openapi.ContentUnit) { + cu.HTTPStatus = http.StatusOK + cu.ContentType = "text/plain" + }) + if err = reflector.AddOperation(logsOp); err != nil { + panic(err) + } - statusOp.AddReqStructure(new([]corev1.Pod)) - statusOp.AddRespStructure(new([]interlink.PodStatus), func(cu *openapi.ContentUnit) { cu.HTTPStatus = http.StatusOK }) + writeSpec(reflector, "./docs/openapi/interlink-openapi.json") +} + +// generatePluginSpec generates the OpenAPI spec for the interLink API server to plugin +// (sidecar) communication and writes it to ./docs/openapi/plugin-openapi.json. +func generatePluginSpec(version string) { + reflector := openapi3.Reflector{} + reflector.Spec = &openapi3.Spec{Openapi: "3.0.3"} + reflector.Spec.Info. + WithTitle("interLink Plugin API"). + WithVersion(version). + WithDescription("This is the API spec for the interLink API server to plugin (sidecar) communication") - err = reflector.AddOperation(statusOp) + // CREATE: interLink sends RetrievedPodData (including jobConfig and jobScript); plugin returns CreateStruct. + createOp, err := reflector.NewOperationContext(http.MethodPost, "/create") if err != nil { panic(err) } + createOp.AddReqStructure(new(interlink.RetrievedPodData), withRequiredBody) + createOp.AddRespStructure(new(interlink.CreateStruct), func(cu *openapi.ContentUnit) { cu.HTTPStatus = http.StatusOK }) + if err = reflector.AddOperation(createOp); err != nil { + panic(err) + } - // Logs - logsOp, err := reflector.NewOperationContext(http.MethodPost, "/getLogs") + // DELETE + deleteOp, err := reflector.NewOperationContext(http.MethodPost, "/delete") if err != nil { panic(err) } + deleteOp.AddReqStructure(new(corev1.Pod), withRequiredBody) + deleteOp.AddRespStructure(nil, func(cu *openapi.ContentUnit) { cu.HTTPStatus = http.StatusOK }) + if err = reflector.AddOperation(deleteOp); err != nil { + panic(err) + } - logsOp.AddReqStructure(new(interlink.LogStruct)) - logsOp.AddRespStructure(new(string), func(cu *openapi.ContentUnit) { cu.HTTPStatus = http.StatusOK }) + // Status: interLink calls the plugin with GET and a JSON body. + statusOp, err := reflector.NewOperationContext(http.MethodGet, "/status") + if err != nil { + panic(err) + } + statusOp.AddReqStructure(new([]corev1.Pod)) + statusOp.AddRespStructure(new([]interlink.PodStatus), func(cu *openapi.ContentUnit) { cu.HTTPStatus = http.StatusOK }) + if err = reflector.AddOperation(statusOp); err != nil { + panic(err) + } - err = reflector.AddOperation(logsOp) + // Logs: interLink calls the plugin with GET; response is streamed plain text. + logsOp, err := reflector.NewOperationContext(http.MethodGet, "/getLogs") if err != nil { panic(err) } + logsOp.AddReqStructure(new(interlink.LogStruct)) + logsOp.AddRespStructure(nil, func(cu *openapi.ContentUnit) { + cu.HTTPStatus = http.StatusOK + cu.ContentType = "text/plain" + }) + if err = reflector.AddOperation(logsOp); err != nil { + panic(err) + } + writeSpec(reflector, "./docs/openapi/plugin-openapi.json") +} + +// withRequiredBody is a ContentOption that marks a request body as required in the OpenAPI spec. +// Handlers that unmarshal from the request body will fail on empty bodies, so the spec should +// reflect that the body is mandatory. +func withRequiredBody(cu *openapi.ContentUnit) { + cu.Customize = func(cor openapi.ContentOrReference) { + if rbr, ok := cor.(*openapi3.RequestBodyOrRef); ok { + rbr.RequestBodyEns().WithRequired(true) + } + } +} + +// writeSpec marshals the reflector's spec to JSON and writes it to the given file path. +func writeSpec(reflector openapi3.Reflector, path string) { schema, err := reflector.Spec.MarshalJSON() if err != nil { log.Fatal(err) } - fmt.Println(string(schema)) - // Write the JSON data to the file - file, err := os.Create("./docs/openapi/interlink-openapi.json") + file, err := os.Create(path) if err != nil { panic(err) } defer file.Close() - _, err = file.Write(schema) - if err != nil { + if _, err = file.Write(schema); err != nil { panic(err) } - fmt.Println("Successfully wrote to ./docs/openapi/interlink-openapi.json") + fmt.Printf("Successfully wrote to %s\n", path) } diff --git a/docs/openapi/GENERATING.md b/docs/openapi/GENERATING.md new file mode 100644 index 00000000..fc46a5c2 --- /dev/null +++ b/docs/openapi/GENERATING.md @@ -0,0 +1,79 @@ +# Generating interLink OpenAPI Specifications + +This directory contains the OpenAPI specifications for interLink's two HTTP APIs: + +| File | Description | +|---|---| +| `interlink-openapi.json` | Virtual Kubelet → interLink API server communication | +| `plugin-openapi.json` | interLink API server → plugin (sidecar) communication | + +Both specs are generated automatically from the Go type definitions in +[`pkg/interlink/types.go`](../../pkg/interlink/types.go) and +[`pkg/interlink/config.go`](../../pkg/interlink/config.go). + +## Quick Start + +From the repository root, run: + +```bash +make openapi +``` + +This runs `go run cmd/openapi-gen/main.go` and overwrites both JSON files. + +## Specifying a Version + +Pass a `--version` flag to stamp a different version into the spec: + +```bash +go run cmd/openapi-gen/main.go --version 0.6.0 +``` + +The default version matches the current release (see `CHANGELOG.md`). + +## How It Works + +The generator in [`cmd/openapi-gen/main.go`](../../cmd/openapi-gen/main.go) uses +[`swaggest/openapi-go`](https://github.com/swaggest/openapi-go) to reflect over +the interLink Go types and produce OpenAPI 3.0 schemas. + +### interLink server API (`interlink-openapi.json`) + +Describes how the Virtual Kubelet talks to the interLink API server: + +| Endpoint | Method | Request type | Response type | +|---|---|---|---| +| `/create` | POST | `PodCreateRequests` | `CreateStruct` | +| `/delete` | DELETE | `v1.Pod` | — | +| `/pinglink` | POST | — | — | +| `/status` | GET | `[]v1.Pod` | `[]PodStatus` | +| `/getLogs` | GET | `LogStruct` | plain text | + +### Plugin API (`plugin-openapi.json`) + +Describes how the interLink API server talks to a sidecar plugin: + +| Endpoint | Method | Request type | Response type | +|---|---|---|---| +| `/create` | POST | `RetrievedPodData` | `CreateStruct` | +| `/delete` | POST | `v1.Pod` | — | +| `/status` | GET | `[]v1.Pod` | `[]PodStatus` | +| `/getLogs` | GET | `LogStruct` | plain text | + +`RetrievedPodData` includes the `jobConfig` (`ScriptBuildConfig`) and `jobScript` +fields that allow interLink to pass a pre-built job script to the plugin. + +## Keeping the Specs Up to Date + +Whenever you modify any of the types used by these APIs, regenerate the specs: + +1. Edit the relevant struct in `pkg/interlink/types.go` or `pkg/interlink/config.go`. +2. Run `make openapi`. +3. Commit both the changed source file and the updated JSON spec files together. + +The Makefile target is: + +```makefile +openapi: + go run cmd/openapi-gen/main.go +``` diff --git a/docs/openapi/interlink-openapi.json b/docs/openapi/interlink-openapi.json index c599b01f..7d761236 100644 --- a/docs/openapi/interlink-openapi.json +++ b/docs/openapi/interlink-openapi.json @@ -1 +1 @@ -{"openapi":"3.0.3","info":{"title":"interLink server API","description":"This is the API spec for the Virtual Kubelet to interLink API server communication","version":"0.4.0"},"paths":{"/create":{"post":{"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterlinkPodCreateRequests"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterlinkRetrievedPodData"}}}}}}},"/delete":{"post":{"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Pod"}}}},"responses":{"200":{"description":"OK"}}}},"/getLogs":{"post":{"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterlinkLogStruct"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"string"}}}}}}},"/pinglink":{"post":{"responses":{"200":{"description":"OK"}}}},"/status":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/V1Pod"},"nullable":true}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/InterlinkPodStatus"}}}}}}}}},"components":{"schemas":{"InterlinkApptainerOptions":{"type":"object","properties":{"cleanenv":{"type":"boolean"},"containall":{"type":"boolean"},"executable":{"type":"string"},"fakeroot":{"type":"boolean"},"fuseMode":{"type":"string"},"noHome":{"type":"boolean"},"noInit":{"type":"boolean"},"noPrivs":{"type":"boolean"},"nvidiaSupport":{"type":"boolean"},"unsquash":{"type":"boolean"}}},"InterlinkContainerLogOpts":{"type":"object","properties":{"Bytes":{"type":"integer"},"Follow":{"type":"boolean"},"Previous":{"type":"boolean"},"SinceSeconds":{"type":"integer"},"SinceTime":{"type":"string","format":"date-time"},"Tail":{"type":"integer"},"Timestamps":{"type":"boolean"}}},"InterlinkLogStruct":{"type":"object","properties":{"ContainerName":{"type":"string"},"Namespace":{"type":"string"},"Opts":{"$ref":"#/components/schemas/InterlinkContainerLogOpts"},"PodName":{"type":"string"},"PodUID":{"type":"string"}}},"InterlinkPodCreateRequests":{"type":"object","properties":{"configmaps":{"type":"array","items":{"$ref":"#/components/schemas/V1ConfigMap"},"nullable":true},"jobscriptURL":{"type":"string"},"pod":{"$ref":"#/components/schemas/V1Pod"},"projectedvolumesmaps":{"type":"array","items":{"$ref":"#/components/schemas/V1ConfigMap"},"nullable":true},"secrets":{"type":"array","items":{"$ref":"#/components/schemas/V1Secret"},"nullable":true}}},"InterlinkPodStatus":{"type":"object","properties":{"JID":{"type":"string"},"UID":{"type":"string"},"containers":{"type":"array","items":{"$ref":"#/components/schemas/V1ContainerStatus"},"nullable":true},"initContainers":{"type":"array","items":{"$ref":"#/components/schemas/V1ContainerStatus"},"nullable":true},"name":{"type":"string"},"namespace":{"type":"string"}}},"InterlinkRetrievedContainer":{"type":"object","properties":{"configMaps":{"type":"array","items":{"$ref":"#/components/schemas/V1ConfigMap"},"nullable":true},"emptyDirs":{"type":"array","items":{"type":"string"},"nullable":true},"name":{"type":"string"},"projectedvolumemaps":{"type":"array","items":{"$ref":"#/components/schemas/V1ConfigMap"},"nullable":true},"secrets":{"type":"array","items":{"$ref":"#/components/schemas/V1Secret"},"nullable":true}}},"InterlinkRetrievedPodData":{"type":"object","properties":{"container":{"type":"array","items":{"$ref":"#/components/schemas/InterlinkRetrievedContainer"},"nullable":true},"jobConfig":{"$ref":"#/components/schemas/InterlinkScriptBuildConfig"},"jobScript":{"type":"string"},"pod":{"$ref":"#/components/schemas/V1Pod"}}},"InterlinkScriptBuildConfig":{"type":"object","properties":{"ApptainerOptions":{"$ref":"#/components/schemas/InterlinkApptainerOptions"},"SingularityHubProxy":{"$ref":"#/components/schemas/InterlinkSingularityHubConfig"},"Volumes":{"$ref":"#/components/schemas/InterlinkVolumesOptions"}}},"InterlinkSingularityHubConfig":{"type":"object","properties":{"cache_validity_seconds":{"type":"integer"},"master_token":{"type":"string"},"server":{"type":"string"}}},"InterlinkVolumesOptions":{"type":"object","properties":{"additional_directories_in_path":{"type":"array","items":{"type":"string"},"nullable":true},"apptainer_cachedir":{"type":"string"},"fuse_sleep_seconds":{"type":"integer"},"image_dir":{"type":"string"},"scratch_area":{"type":"string"}}},"IntstrIntOrString":{"type":"object"},"ResourceQuantity":{"type":"object"},"V1AWSElasticBlockStoreVolumeSource":{"type":"object","properties":{"fsType":{"type":"string"},"partition":{"type":"integer"},"readOnly":{"type":"boolean"},"volumeID":{"type":"string"}}},"V1Affinity":{"type":"object","properties":{"nodeAffinity":{"$ref":"#/components/schemas/V1NodeAffinity"},"podAffinity":{"$ref":"#/components/schemas/V1PodAffinity"},"podAntiAffinity":{"$ref":"#/components/schemas/V1PodAntiAffinity"}}},"V1AppArmorProfile":{"type":"object","properties":{"localhostProfile":{"type":"string","nullable":true},"type":{"type":"string"}}},"V1AzureDiskVolumeSource":{"type":"object","properties":{"cachingMode":{"type":"string","nullable":true},"diskName":{"type":"string"},"diskURI":{"type":"string"},"fsType":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"readOnly":{"type":"boolean","nullable":true}}},"V1AzureFileVolumeSource":{"type":"object","properties":{"readOnly":{"type":"boolean"},"secretName":{"type":"string"},"shareName":{"type":"string"}}},"V1CSIVolumeSource":{"type":"object","properties":{"driver":{"type":"string"},"fsType":{"type":"string","nullable":true},"nodePublishSecretRef":{"$ref":"#/components/schemas/V1LocalObjectReference"},"readOnly":{"type":"boolean","nullable":true},"volumeAttributes":{"type":"object","additionalProperties":{"type":"string"}}}},"V1Capabilities":{"type":"object","properties":{"add":{"type":"array","items":{"type":"string"}},"drop":{"type":"array","items":{"type":"string"}}}},"V1CephFSVolumeSource":{"type":"object","properties":{"monitors":{"type":"array","items":{"type":"string"},"nullable":true},"path":{"type":"string"},"readOnly":{"type":"boolean"},"secretFile":{"type":"string"},"secretRef":{"$ref":"#/components/schemas/V1LocalObjectReference"},"user":{"type":"string"}}},"V1CinderVolumeSource":{"type":"object","properties":{"fsType":{"type":"string"},"readOnly":{"type":"boolean"},"secretRef":{"$ref":"#/components/schemas/V1LocalObjectReference"},"volumeID":{"type":"string"}}},"V1ClusterTrustBundleProjection":{"type":"object","properties":{"labelSelector":{"$ref":"#/components/schemas/V1LabelSelector"},"name":{"type":"string","nullable":true},"optional":{"type":"boolean","nullable":true},"path":{"type":"string"},"signerName":{"type":"string","nullable":true}}},"V1ConfigMap":{"type":"object","properties":{"apiVersion":{"type":"string"},"binaryData":{"type":"object","additionalProperties":{"type":"string","format":"base64"}},"data":{"type":"object","additionalProperties":{"type":"string"}},"immutable":{"type":"boolean","nullable":true},"kind":{"type":"string"},"metadata":{"$ref":"#/components/schemas/V1ObjectMeta"}}},"V1ConfigMapEnvSource":{"type":"object","properties":{"name":{"type":"string"},"optional":{"type":"boolean","nullable":true}}},"V1ConfigMapKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean","nullable":true}}},"V1ConfigMapProjection":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/V1KeyToPath"}},"name":{"type":"string"},"optional":{"type":"boolean","nullable":true}}},"V1ConfigMapVolumeSource":{"type":"object","properties":{"defaultMode":{"type":"integer","nullable":true},"items":{"type":"array","items":{"$ref":"#/components/schemas/V1KeyToPath"}},"name":{"type":"string"},"optional":{"type":"boolean","nullable":true}}},"V1Container":{"type":"object","properties":{"args":{"type":"array","items":{"type":"string"}},"command":{"type":"array","items":{"type":"string"}},"env":{"type":"array","items":{"$ref":"#/components/schemas/V1EnvVar"}},"envFrom":{"type":"array","items":{"$ref":"#/components/schemas/V1EnvFromSource"}},"image":{"type":"string"},"imagePullPolicy":{"type":"string"},"lifecycle":{"$ref":"#/components/schemas/V1Lifecycle"},"livenessProbe":{"$ref":"#/components/schemas/V1Probe"},"name":{"type":"string"},"ports":{"type":"array","items":{"$ref":"#/components/schemas/V1ContainerPort"}},"readinessProbe":{"$ref":"#/components/schemas/V1Probe"},"resizePolicy":{"type":"array","items":{"$ref":"#/components/schemas/V1ContainerResizePolicy"}},"resources":{"$ref":"#/components/schemas/V1ResourceRequirements"},"restartPolicy":{"type":"string","nullable":true},"securityContext":{"$ref":"#/components/schemas/V1SecurityContext"},"startupProbe":{"$ref":"#/components/schemas/V1Probe"},"stdin":{"type":"boolean"},"stdinOnce":{"type":"boolean"},"terminationMessagePath":{"type":"string"},"terminationMessagePolicy":{"type":"string"},"tty":{"type":"boolean"},"volumeDevices":{"type":"array","items":{"$ref":"#/components/schemas/V1VolumeDevice"}},"volumeMounts":{"type":"array","items":{"$ref":"#/components/schemas/V1VolumeMount"}},"workingDir":{"type":"string"}}},"V1ContainerPort":{"type":"object","properties":{"containerPort":{"type":"integer"},"hostIP":{"type":"string"},"hostPort":{"type":"integer"},"name":{"type":"string"},"protocol":{"type":"string"}}},"V1ContainerResizePolicy":{"type":"object","properties":{"resourceName":{"type":"string"},"restartPolicy":{"type":"string"}}},"V1ContainerState":{"type":"object","properties":{"running":{"$ref":"#/components/schemas/V1ContainerStateRunning"},"terminated":{"$ref":"#/components/schemas/V1ContainerStateTerminated"},"waiting":{"$ref":"#/components/schemas/V1ContainerStateWaiting"}}},"V1ContainerStateRunning":{"type":"object","properties":{"startedAt":{"type":"string"}}},"V1ContainerStateTerminated":{"type":"object","properties":{"containerID":{"type":"string"},"exitCode":{"type":"integer"},"finishedAt":{"type":"string"},"message":{"type":"string"},"reason":{"type":"string"},"signal":{"type":"integer"},"startedAt":{"type":"string"}}},"V1ContainerStateWaiting":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string"}}},"V1ContainerStatus":{"type":"object","properties":{"allocatedResources":{"$ref":"#/components/schemas/V1ResourceList"},"allocatedResourcesStatus":{"type":"array","items":{"$ref":"#/components/schemas/V1ResourceStatus"}},"containerID":{"type":"string"},"image":{"type":"string"},"imageID":{"type":"string"},"lastState":{"$ref":"#/components/schemas/V1ContainerState"},"name":{"type":"string"},"ready":{"type":"boolean"},"resources":{"$ref":"#/components/schemas/V1ResourceRequirements"},"restartCount":{"type":"integer"},"started":{"type":"boolean","nullable":true},"state":{"$ref":"#/components/schemas/V1ContainerState"},"stopSignal":{"type":"string","nullable":true},"user":{"$ref":"#/components/schemas/V1ContainerUser"},"volumeMounts":{"type":"array","items":{"$ref":"#/components/schemas/V1VolumeMountStatus"}}}},"V1ContainerUser":{"type":"object","properties":{"linux":{"$ref":"#/components/schemas/V1LinuxContainerUser"}}},"V1DownwardAPIProjection":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/V1DownwardAPIVolumeFile"}}}},"V1DownwardAPIVolumeFile":{"type":"object","properties":{"fieldRef":{"$ref":"#/components/schemas/V1ObjectFieldSelector"},"mode":{"type":"integer","nullable":true},"path":{"type":"string"},"resourceFieldRef":{"$ref":"#/components/schemas/V1ResourceFieldSelector"}}},"V1DownwardAPIVolumeSource":{"type":"object","properties":{"defaultMode":{"type":"integer","nullable":true},"items":{"type":"array","items":{"$ref":"#/components/schemas/V1DownwardAPIVolumeFile"}}}},"V1EmptyDirVolumeSource":{"type":"object","properties":{"medium":{"type":"string"},"sizeLimit":{"$ref":"#/components/schemas/ResourceQuantity"}}},"V1EnvFromSource":{"type":"object","properties":{"configMapRef":{"$ref":"#/components/schemas/V1ConfigMapEnvSource"},"prefix":{"type":"string"},"secretRef":{"$ref":"#/components/schemas/V1SecretEnvSource"}}},"V1EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/V1EnvVarSource"}}},"V1EnvVarSource":{"type":"object","properties":{"configMapKeyRef":{"$ref":"#/components/schemas/V1ConfigMapKeySelector"},"fieldRef":{"$ref":"#/components/schemas/V1ObjectFieldSelector"},"resourceFieldRef":{"$ref":"#/components/schemas/V1ResourceFieldSelector"},"secretKeyRef":{"$ref":"#/components/schemas/V1SecretKeySelector"}}},"V1EphemeralContainer":{"type":"object","properties":{"args":{"type":"array","items":{"type":"string"}},"command":{"type":"array","items":{"type":"string"}},"env":{"type":"array","items":{"$ref":"#/components/schemas/V1EnvVar"}},"envFrom":{"type":"array","items":{"$ref":"#/components/schemas/V1EnvFromSource"}},"image":{"type":"string"},"imagePullPolicy":{"type":"string"},"lifecycle":{"$ref":"#/components/schemas/V1Lifecycle"},"livenessProbe":{"$ref":"#/components/schemas/V1Probe"},"name":{"type":"string"},"ports":{"type":"array","items":{"$ref":"#/components/schemas/V1ContainerPort"}},"readinessProbe":{"$ref":"#/components/schemas/V1Probe"},"resizePolicy":{"type":"array","items":{"$ref":"#/components/schemas/V1ContainerResizePolicy"}},"resources":{"$ref":"#/components/schemas/V1ResourceRequirements"},"restartPolicy":{"type":"string","nullable":true},"securityContext":{"$ref":"#/components/schemas/V1SecurityContext"},"startupProbe":{"$ref":"#/components/schemas/V1Probe"},"stdin":{"type":"boolean"},"stdinOnce":{"type":"boolean"},"targetContainerName":{"type":"string"},"terminationMessagePath":{"type":"string"},"terminationMessagePolicy":{"type":"string"},"tty":{"type":"boolean"},"volumeDevices":{"type":"array","items":{"$ref":"#/components/schemas/V1VolumeDevice"}},"volumeMounts":{"type":"array","items":{"$ref":"#/components/schemas/V1VolumeMount"}},"workingDir":{"type":"string"}}},"V1EphemeralVolumeSource":{"type":"object","properties":{"volumeClaimTemplate":{"$ref":"#/components/schemas/V1PersistentVolumeClaimTemplate"}}},"V1ExecAction":{"type":"object","properties":{"command":{"type":"array","items":{"type":"string"}}}},"V1FCVolumeSource":{"type":"object","properties":{"fsType":{"type":"string"},"lun":{"type":"integer","nullable":true},"readOnly":{"type":"boolean"},"targetWWNs":{"type":"array","items":{"type":"string"}},"wwids":{"type":"array","items":{"type":"string"}}}},"V1FieldsV1":{"type":"object"},"V1FlexVolumeSource":{"type":"object","properties":{"driver":{"type":"string"},"fsType":{"type":"string"},"options":{"type":"object","additionalProperties":{"type":"string"}},"readOnly":{"type":"boolean"},"secretRef":{"$ref":"#/components/schemas/V1LocalObjectReference"}}},"V1FlockerVolumeSource":{"type":"object","properties":{"datasetName":{"type":"string"},"datasetUUID":{"type":"string"}}},"V1GCEPersistentDiskVolumeSource":{"type":"object","properties":{"fsType":{"type":"string"},"partition":{"type":"integer"},"pdName":{"type":"string"},"readOnly":{"type":"boolean"}}},"V1GRPCAction":{"type":"object","properties":{"port":{"type":"integer"},"service":{"type":"string","nullable":true}}},"V1GitRepoVolumeSource":{"type":"object","properties":{"directory":{"type":"string"},"repository":{"type":"string"},"revision":{"type":"string"}}},"V1GlusterfsVolumeSource":{"type":"object","properties":{"endpoints":{"type":"string"},"path":{"type":"string"},"readOnly":{"type":"boolean"}}},"V1HTTPGetAction":{"type":"object","properties":{"host":{"type":"string"},"httpHeaders":{"type":"array","items":{"$ref":"#/components/schemas/V1HTTPHeader"}},"path":{"type":"string"},"port":{"$ref":"#/components/schemas/IntstrIntOrString"},"scheme":{"type":"string"}}},"V1HTTPHeader":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"}}},"V1HostAlias":{"type":"object","properties":{"hostnames":{"type":"array","items":{"type":"string"}},"ip":{"type":"string"}}},"V1HostIP":{"type":"object","properties":{"ip":{"type":"string"}}},"V1HostPathVolumeSource":{"type":"object","properties":{"path":{"type":"string"},"type":{"type":"string","nullable":true}}},"V1ISCSIVolumeSource":{"type":"object","properties":{"chapAuthDiscovery":{"type":"boolean"},"chapAuthSession":{"type":"boolean"},"fsType":{"type":"string"},"initiatorName":{"type":"string","nullable":true},"iqn":{"type":"string"},"iscsiInterface":{"type":"string"},"lun":{"type":"integer"},"portals":{"type":"array","items":{"type":"string"}},"readOnly":{"type":"boolean"},"secretRef":{"$ref":"#/components/schemas/V1LocalObjectReference"},"targetPortal":{"type":"string"}}},"V1ImageVolumeSource":{"type":"object","properties":{"pullPolicy":{"type":"string"},"reference":{"type":"string"}}},"V1KeyToPath":{"type":"object","properties":{"key":{"type":"string"},"mode":{"type":"integer","nullable":true},"path":{"type":"string"}}},"V1LabelSelector":{"type":"object","properties":{"matchExpressions":{"type":"array","items":{"$ref":"#/components/schemas/V1LabelSelectorRequirement"}},"matchLabels":{"type":"object","additionalProperties":{"type":"string"}}}},"V1LabelSelectorRequirement":{"type":"object","properties":{"key":{"type":"string"},"operator":{"type":"string"},"values":{"type":"array","items":{"type":"string"}}}},"V1Lifecycle":{"type":"object","properties":{"postStart":{"$ref":"#/components/schemas/V1LifecycleHandler"},"preStop":{"$ref":"#/components/schemas/V1LifecycleHandler"},"stopSignal":{"type":"string","nullable":true}}},"V1LifecycleHandler":{"type":"object","properties":{"exec":{"$ref":"#/components/schemas/V1ExecAction"},"httpGet":{"$ref":"#/components/schemas/V1HTTPGetAction"},"sleep":{"$ref":"#/components/schemas/V1SleepAction"},"tcpSocket":{"$ref":"#/components/schemas/V1TCPSocketAction"}}},"V1LinuxContainerUser":{"type":"object","properties":{"gid":{"type":"integer"},"supplementalGroups":{"type":"array","items":{"type":"integer"}},"uid":{"type":"integer"}}},"V1LocalObjectReference":{"type":"object","properties":{"name":{"type":"string"}}},"V1ManagedFieldsEntry":{"type":"object","properties":{"apiVersion":{"type":"string"},"fieldsType":{"type":"string"},"fieldsV1":{"$ref":"#/components/schemas/V1FieldsV1"},"manager":{"type":"string"},"operation":{"type":"string"},"subresource":{"type":"string"},"time":{"type":"string"}}},"V1NFSVolumeSource":{"type":"object","properties":{"path":{"type":"string"},"readOnly":{"type":"boolean"},"server":{"type":"string"}}},"V1NodeAffinity":{"type":"object","properties":{"preferredDuringSchedulingIgnoredDuringExecution":{"type":"array","items":{"$ref":"#/components/schemas/V1PreferredSchedulingTerm"}},"requiredDuringSchedulingIgnoredDuringExecution":{"$ref":"#/components/schemas/V1NodeSelector"}}},"V1NodeSelector":{"type":"object","properties":{"nodeSelectorTerms":{"type":"array","items":{"$ref":"#/components/schemas/V1NodeSelectorTerm"},"nullable":true}}},"V1NodeSelectorRequirement":{"type":"object","properties":{"key":{"type":"string"},"operator":{"type":"string"},"values":{"type":"array","items":{"type":"string"}}}},"V1NodeSelectorTerm":{"type":"object","properties":{"matchExpressions":{"type":"array","items":{"$ref":"#/components/schemas/V1NodeSelectorRequirement"}},"matchFields":{"type":"array","items":{"$ref":"#/components/schemas/V1NodeSelectorRequirement"}}}},"V1ObjectFieldSelector":{"type":"object","properties":{"apiVersion":{"type":"string"},"fieldPath":{"type":"string"}}},"V1ObjectMeta":{"type":"object","properties":{"annotations":{"type":"object","additionalProperties":{"type":"string"}},"creationTimestamp":{"type":"string"},"deletionGracePeriodSeconds":{"type":"integer","nullable":true},"deletionTimestamp":{"type":"string"},"finalizers":{"type":"array","items":{"type":"string"}},"generateName":{"type":"string"},"generation":{"type":"integer"},"labels":{"type":"object","additionalProperties":{"type":"string"}},"managedFields":{"type":"array","items":{"$ref":"#/components/schemas/V1ManagedFieldsEntry"}},"name":{"type":"string"},"namespace":{"type":"string"},"ownerReferences":{"type":"array","items":{"$ref":"#/components/schemas/V1OwnerReference"}},"resourceVersion":{"type":"string"},"selfLink":{"type":"string"},"uid":{"type":"string"}}},"V1OwnerReference":{"type":"object","properties":{"apiVersion":{"type":"string"},"blockOwnerDeletion":{"type":"boolean","nullable":true},"controller":{"type":"boolean","nullable":true},"kind":{"type":"string"},"name":{"type":"string"},"uid":{"type":"string"}}},"V1PersistentVolumeClaimSpec":{"type":"object","properties":{"accessModes":{"type":"array","items":{"type":"string"}},"dataSource":{"$ref":"#/components/schemas/V1TypedLocalObjectReference"},"dataSourceRef":{"$ref":"#/components/schemas/V1TypedObjectReference"},"resources":{"$ref":"#/components/schemas/V1VolumeResourceRequirements"},"selector":{"$ref":"#/components/schemas/V1LabelSelector"},"storageClassName":{"type":"string","nullable":true},"volumeAttributesClassName":{"type":"string","nullable":true},"volumeMode":{"type":"string","nullable":true},"volumeName":{"type":"string"}}},"V1PersistentVolumeClaimTemplate":{"type":"object","properties":{"metadata":{"$ref":"#/components/schemas/V1ObjectMeta"},"spec":{"$ref":"#/components/schemas/V1PersistentVolumeClaimSpec"}}},"V1PersistentVolumeClaimVolumeSource":{"type":"object","properties":{"claimName":{"type":"string"},"readOnly":{"type":"boolean"}}},"V1PhotonPersistentDiskVolumeSource":{"type":"object","properties":{"fsType":{"type":"string"},"pdID":{"type":"string"}}},"V1Pod":{"type":"object","properties":{"apiVersion":{"type":"string"},"kind":{"type":"string"},"metadata":{"$ref":"#/components/schemas/V1ObjectMeta"},"spec":{"$ref":"#/components/schemas/V1PodSpec"},"status":{"$ref":"#/components/schemas/V1PodStatus"}}},"V1PodAffinity":{"type":"object","properties":{"preferredDuringSchedulingIgnoredDuringExecution":{"type":"array","items":{"$ref":"#/components/schemas/V1WeightedPodAffinityTerm"}},"requiredDuringSchedulingIgnoredDuringExecution":{"type":"array","items":{"$ref":"#/components/schemas/V1PodAffinityTerm"}}}},"V1PodAffinityTerm":{"type":"object","properties":{"labelSelector":{"$ref":"#/components/schemas/V1LabelSelector"},"matchLabelKeys":{"type":"array","items":{"type":"string"}},"mismatchLabelKeys":{"type":"array","items":{"type":"string"}},"namespaceSelector":{"$ref":"#/components/schemas/V1LabelSelector"},"namespaces":{"type":"array","items":{"type":"string"}},"topologyKey":{"type":"string"}}},"V1PodAntiAffinity":{"type":"object","properties":{"preferredDuringSchedulingIgnoredDuringExecution":{"type":"array","items":{"$ref":"#/components/schemas/V1WeightedPodAffinityTerm"}},"requiredDuringSchedulingIgnoredDuringExecution":{"type":"array","items":{"$ref":"#/components/schemas/V1PodAffinityTerm"}}}},"V1PodCondition":{"type":"object","properties":{"lastProbeTime":{"type":"string"},"lastTransitionTime":{"type":"string"},"message":{"type":"string"},"observedGeneration":{"type":"integer"},"reason":{"type":"string"},"status":{"type":"string"},"type":{"type":"string"}}},"V1PodDNSConfig":{"type":"object","properties":{"nameservers":{"type":"array","items":{"type":"string"}},"options":{"type":"array","items":{"$ref":"#/components/schemas/V1PodDNSConfigOption"}},"searches":{"type":"array","items":{"type":"string"}}}},"V1PodDNSConfigOption":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string","nullable":true}}},"V1PodIP":{"type":"object","properties":{"ip":{"type":"string"}}},"V1PodOS":{"type":"object","properties":{"name":{"type":"string"}}},"V1PodReadinessGate":{"type":"object","properties":{"conditionType":{"type":"string"}}},"V1PodResourceClaim":{"type":"object","properties":{"name":{"type":"string"},"resourceClaimName":{"type":"string","nullable":true},"resourceClaimTemplateName":{"type":"string","nullable":true}}},"V1PodResourceClaimStatus":{"type":"object","properties":{"name":{"type":"string"},"resourceClaimName":{"type":"string","nullable":true}}},"V1PodSchedulingGate":{"type":"object","properties":{"name":{"type":"string"}}},"V1PodSecurityContext":{"type":"object","properties":{"appArmorProfile":{"$ref":"#/components/schemas/V1AppArmorProfile"},"fsGroup":{"type":"integer","nullable":true},"fsGroupChangePolicy":{"type":"string","nullable":true},"runAsGroup":{"type":"integer","nullable":true},"runAsNonRoot":{"type":"boolean","nullable":true},"runAsUser":{"type":"integer","nullable":true},"seLinuxChangePolicy":{"type":"string","nullable":true},"seLinuxOptions":{"$ref":"#/components/schemas/V1SELinuxOptions"},"seccompProfile":{"$ref":"#/components/schemas/V1SeccompProfile"},"supplementalGroups":{"type":"array","items":{"type":"integer"}},"supplementalGroupsPolicy":{"type":"string","nullable":true},"sysctls":{"type":"array","items":{"$ref":"#/components/schemas/V1Sysctl"}},"windowsOptions":{"$ref":"#/components/schemas/V1WindowsSecurityContextOptions"}}},"V1PodSpec":{"type":"object","properties":{"activeDeadlineSeconds":{"type":"integer","nullable":true},"affinity":{"$ref":"#/components/schemas/V1Affinity"},"automountServiceAccountToken":{"type":"boolean","nullable":true},"containers":{"type":"array","items":{"$ref":"#/components/schemas/V1Container"},"nullable":true},"dnsConfig":{"$ref":"#/components/schemas/V1PodDNSConfig"},"dnsPolicy":{"type":"string"},"enableServiceLinks":{"type":"boolean","nullable":true},"ephemeralContainers":{"type":"array","items":{"$ref":"#/components/schemas/V1EphemeralContainer"}},"hostAliases":{"type":"array","items":{"$ref":"#/components/schemas/V1HostAlias"}},"hostIPC":{"type":"boolean"},"hostNetwork":{"type":"boolean"},"hostPID":{"type":"boolean"},"hostUsers":{"type":"boolean","nullable":true},"hostname":{"type":"string"},"imagePullSecrets":{"type":"array","items":{"$ref":"#/components/schemas/V1LocalObjectReference"}},"initContainers":{"type":"array","items":{"$ref":"#/components/schemas/V1Container"}},"nodeName":{"type":"string"},"nodeSelector":{"type":"object","additionalProperties":{"type":"string"}},"os":{"$ref":"#/components/schemas/V1PodOS"},"overhead":{"$ref":"#/components/schemas/V1ResourceList"},"preemptionPolicy":{"type":"string","nullable":true},"priority":{"type":"integer","nullable":true},"priorityClassName":{"type":"string"},"readinessGates":{"type":"array","items":{"$ref":"#/components/schemas/V1PodReadinessGate"}},"resourceClaims":{"type":"array","items":{"$ref":"#/components/schemas/V1PodResourceClaim"}},"resources":{"$ref":"#/components/schemas/V1ResourceRequirements"},"restartPolicy":{"type":"string"},"runtimeClassName":{"type":"string","nullable":true},"schedulerName":{"type":"string"},"schedulingGates":{"type":"array","items":{"$ref":"#/components/schemas/V1PodSchedulingGate"}},"securityContext":{"$ref":"#/components/schemas/V1PodSecurityContext"},"serviceAccount":{"type":"string"},"serviceAccountName":{"type":"string"},"setHostnameAsFQDN":{"type":"boolean","nullable":true},"shareProcessNamespace":{"type":"boolean","nullable":true},"subdomain":{"type":"string"},"terminationGracePeriodSeconds":{"type":"integer","nullable":true},"tolerations":{"type":"array","items":{"$ref":"#/components/schemas/V1Toleration"}},"topologySpreadConstraints":{"type":"array","items":{"$ref":"#/components/schemas/V1TopologySpreadConstraint"}},"volumes":{"type":"array","items":{"$ref":"#/components/schemas/V1Volume"}}}},"V1PodStatus":{"type":"object","properties":{"conditions":{"type":"array","items":{"$ref":"#/components/schemas/V1PodCondition"}},"containerStatuses":{"type":"array","items":{"$ref":"#/components/schemas/V1ContainerStatus"}},"ephemeralContainerStatuses":{"type":"array","items":{"$ref":"#/components/schemas/V1ContainerStatus"}},"hostIP":{"type":"string"},"hostIPs":{"type":"array","items":{"$ref":"#/components/schemas/V1HostIP"}},"initContainerStatuses":{"type":"array","items":{"$ref":"#/components/schemas/V1ContainerStatus"}},"message":{"type":"string"},"nominatedNodeName":{"type":"string"},"observedGeneration":{"type":"integer"},"phase":{"type":"string"},"podIP":{"type":"string"},"podIPs":{"type":"array","items":{"$ref":"#/components/schemas/V1PodIP"}},"qosClass":{"type":"string"},"reason":{"type":"string"},"resize":{"type":"string"},"resourceClaimStatuses":{"type":"array","items":{"$ref":"#/components/schemas/V1PodResourceClaimStatus"}},"startTime":{"type":"string"}}},"V1PortworxVolumeSource":{"type":"object","properties":{"fsType":{"type":"string"},"readOnly":{"type":"boolean"},"volumeID":{"type":"string"}}},"V1PreferredSchedulingTerm":{"type":"object","properties":{"preference":{"$ref":"#/components/schemas/V1NodeSelectorTerm"},"weight":{"type":"integer"}}},"V1Probe":{"type":"object","properties":{"exec":{"$ref":"#/components/schemas/V1ExecAction"},"failureThreshold":{"type":"integer"},"grpc":{"$ref":"#/components/schemas/V1GRPCAction"},"httpGet":{"$ref":"#/components/schemas/V1HTTPGetAction"},"initialDelaySeconds":{"type":"integer"},"periodSeconds":{"type":"integer"},"successThreshold":{"type":"integer"},"tcpSocket":{"$ref":"#/components/schemas/V1TCPSocketAction"},"terminationGracePeriodSeconds":{"type":"integer","nullable":true},"timeoutSeconds":{"type":"integer"}}},"V1ProjectedVolumeSource":{"type":"object","properties":{"defaultMode":{"type":"integer","nullable":true},"sources":{"type":"array","items":{"$ref":"#/components/schemas/V1VolumeProjection"},"nullable":true}}},"V1QuobyteVolumeSource":{"type":"object","properties":{"group":{"type":"string"},"readOnly":{"type":"boolean"},"registry":{"type":"string"},"tenant":{"type":"string"},"user":{"type":"string"},"volume":{"type":"string"}}},"V1RBDVolumeSource":{"type":"object","properties":{"fsType":{"type":"string"},"image":{"type":"string"},"keyring":{"type":"string"},"monitors":{"type":"array","items":{"type":"string"},"nullable":true},"pool":{"type":"string"},"readOnly":{"type":"boolean"},"secretRef":{"$ref":"#/components/schemas/V1LocalObjectReference"},"user":{"type":"string"}}},"V1ResourceClaim":{"type":"object","properties":{"name":{"type":"string"},"request":{"type":"string"}}},"V1ResourceFieldSelector":{"type":"object","properties":{"containerName":{"type":"string"},"divisor":{"$ref":"#/components/schemas/ResourceQuantity"},"resource":{"type":"string"}}},"V1ResourceHealth":{"type":"object","properties":{"health":{"type":"string"},"resourceID":{"type":"string"}}},"V1ResourceList":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/ResourceQuantity"}},"V1ResourceRequirements":{"type":"object","properties":{"claims":{"type":"array","items":{"$ref":"#/components/schemas/V1ResourceClaim"}},"limits":{"$ref":"#/components/schemas/V1ResourceList"},"requests":{"$ref":"#/components/schemas/V1ResourceList"}}},"V1ResourceStatus":{"type":"object","properties":{"name":{"type":"string"},"resources":{"type":"array","items":{"$ref":"#/components/schemas/V1ResourceHealth"}}}},"V1SELinuxOptions":{"type":"object","properties":{"level":{"type":"string"},"role":{"type":"string"},"type":{"type":"string"},"user":{"type":"string"}}},"V1ScaleIOVolumeSource":{"type":"object","properties":{"fsType":{"type":"string"},"gateway":{"type":"string"},"protectionDomain":{"type":"string"},"readOnly":{"type":"boolean"},"secretRef":{"$ref":"#/components/schemas/V1LocalObjectReference"},"sslEnabled":{"type":"boolean"},"storageMode":{"type":"string"},"storagePool":{"type":"string"},"system":{"type":"string"},"volumeName":{"type":"string"}}},"V1SeccompProfile":{"type":"object","properties":{"localhostProfile":{"type":"string","nullable":true},"type":{"type":"string"}}},"V1Secret":{"type":"object","properties":{"apiVersion":{"type":"string"},"data":{"type":"object","additionalProperties":{"type":"string","format":"base64"}},"immutable":{"type":"boolean","nullable":true},"kind":{"type":"string"},"metadata":{"$ref":"#/components/schemas/V1ObjectMeta"},"stringData":{"type":"object","additionalProperties":{"type":"string"}},"type":{"type":"string"}}},"V1SecretEnvSource":{"type":"object","properties":{"name":{"type":"string"},"optional":{"type":"boolean","nullable":true}}},"V1SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean","nullable":true}}},"V1SecretProjection":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/V1KeyToPath"}},"name":{"type":"string"},"optional":{"type":"boolean","nullable":true}}},"V1SecretVolumeSource":{"type":"object","properties":{"defaultMode":{"type":"integer","nullable":true},"items":{"type":"array","items":{"$ref":"#/components/schemas/V1KeyToPath"}},"optional":{"type":"boolean","nullable":true},"secretName":{"type":"string"}}},"V1SecurityContext":{"type":"object","properties":{"allowPrivilegeEscalation":{"type":"boolean","nullable":true},"appArmorProfile":{"$ref":"#/components/schemas/V1AppArmorProfile"},"capabilities":{"$ref":"#/components/schemas/V1Capabilities"},"privileged":{"type":"boolean","nullable":true},"procMount":{"type":"string","nullable":true},"readOnlyRootFilesystem":{"type":"boolean","nullable":true},"runAsGroup":{"type":"integer","nullable":true},"runAsNonRoot":{"type":"boolean","nullable":true},"runAsUser":{"type":"integer","nullable":true},"seLinuxOptions":{"$ref":"#/components/schemas/V1SELinuxOptions"},"seccompProfile":{"$ref":"#/components/schemas/V1SeccompProfile"},"windowsOptions":{"$ref":"#/components/schemas/V1WindowsSecurityContextOptions"}}},"V1ServiceAccountTokenProjection":{"type":"object","properties":{"audience":{"type":"string"},"expirationSeconds":{"type":"integer","nullable":true},"path":{"type":"string"}}},"V1SleepAction":{"type":"object","properties":{"seconds":{"type":"integer"}}},"V1StorageOSVolumeSource":{"type":"object","properties":{"fsType":{"type":"string"},"readOnly":{"type":"boolean"},"secretRef":{"$ref":"#/components/schemas/V1LocalObjectReference"},"volumeName":{"type":"string"},"volumeNamespace":{"type":"string"}}},"V1Sysctl":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"}}},"V1TCPSocketAction":{"type":"object","properties":{"host":{"type":"string"},"port":{"$ref":"#/components/schemas/IntstrIntOrString"}}},"V1Toleration":{"type":"object","properties":{"effect":{"type":"string"},"key":{"type":"string"},"operator":{"type":"string"},"tolerationSeconds":{"type":"integer","nullable":true},"value":{"type":"string"}}},"V1TopologySpreadConstraint":{"type":"object","properties":{"labelSelector":{"$ref":"#/components/schemas/V1LabelSelector"},"matchLabelKeys":{"type":"array","items":{"type":"string"}},"maxSkew":{"type":"integer"},"minDomains":{"type":"integer","nullable":true},"nodeAffinityPolicy":{"type":"string","nullable":true},"nodeTaintsPolicy":{"type":"string","nullable":true},"topologyKey":{"type":"string"},"whenUnsatisfiable":{"type":"string"}}},"V1TypedLocalObjectReference":{"type":"object","properties":{"apiGroup":{"type":"string","nullable":true},"kind":{"type":"string"},"name":{"type":"string"}}},"V1TypedObjectReference":{"type":"object","properties":{"apiGroup":{"type":"string","nullable":true},"kind":{"type":"string"},"name":{"type":"string"},"namespace":{"type":"string","nullable":true}}},"V1Volume":{"type":"object","properties":{"awsElasticBlockStore":{"$ref":"#/components/schemas/V1AWSElasticBlockStoreVolumeSource"},"azureDisk":{"$ref":"#/components/schemas/V1AzureDiskVolumeSource"},"azureFile":{"$ref":"#/components/schemas/V1AzureFileVolumeSource"},"cephfs":{"$ref":"#/components/schemas/V1CephFSVolumeSource"},"cinder":{"$ref":"#/components/schemas/V1CinderVolumeSource"},"configMap":{"$ref":"#/components/schemas/V1ConfigMapVolumeSource"},"csi":{"$ref":"#/components/schemas/V1CSIVolumeSource"},"downwardAPI":{"$ref":"#/components/schemas/V1DownwardAPIVolumeSource"},"emptyDir":{"$ref":"#/components/schemas/V1EmptyDirVolumeSource"},"ephemeral":{"$ref":"#/components/schemas/V1EphemeralVolumeSource"},"fc":{"$ref":"#/components/schemas/V1FCVolumeSource"},"flexVolume":{"$ref":"#/components/schemas/V1FlexVolumeSource"},"flocker":{"$ref":"#/components/schemas/V1FlockerVolumeSource"},"gcePersistentDisk":{"$ref":"#/components/schemas/V1GCEPersistentDiskVolumeSource"},"gitRepo":{"$ref":"#/components/schemas/V1GitRepoVolumeSource"},"glusterfs":{"$ref":"#/components/schemas/V1GlusterfsVolumeSource"},"hostPath":{"$ref":"#/components/schemas/V1HostPathVolumeSource"},"image":{"$ref":"#/components/schemas/V1ImageVolumeSource"},"iscsi":{"$ref":"#/components/schemas/V1ISCSIVolumeSource"},"name":{"type":"string"},"nfs":{"$ref":"#/components/schemas/V1NFSVolumeSource"},"persistentVolumeClaim":{"$ref":"#/components/schemas/V1PersistentVolumeClaimVolumeSource"},"photonPersistentDisk":{"$ref":"#/components/schemas/V1PhotonPersistentDiskVolumeSource"},"portworxVolume":{"$ref":"#/components/schemas/V1PortworxVolumeSource"},"projected":{"$ref":"#/components/schemas/V1ProjectedVolumeSource"},"quobyte":{"$ref":"#/components/schemas/V1QuobyteVolumeSource"},"rbd":{"$ref":"#/components/schemas/V1RBDVolumeSource"},"scaleIO":{"$ref":"#/components/schemas/V1ScaleIOVolumeSource"},"secret":{"$ref":"#/components/schemas/V1SecretVolumeSource"},"storageos":{"$ref":"#/components/schemas/V1StorageOSVolumeSource"},"vsphereVolume":{"$ref":"#/components/schemas/V1VsphereVirtualDiskVolumeSource"}}},"V1VolumeDevice":{"type":"object","properties":{"devicePath":{"type":"string"},"name":{"type":"string"}}},"V1VolumeMount":{"type":"object","properties":{"mountPath":{"type":"string"},"mountPropagation":{"type":"string","nullable":true},"name":{"type":"string"},"readOnly":{"type":"boolean"},"recursiveReadOnly":{"type":"string","nullable":true},"subPath":{"type":"string"},"subPathExpr":{"type":"string"}}},"V1VolumeMountStatus":{"type":"object","properties":{"mountPath":{"type":"string"},"name":{"type":"string"},"readOnly":{"type":"boolean"},"recursiveReadOnly":{"type":"string","nullable":true}}},"V1VolumeProjection":{"type":"object","properties":{"clusterTrustBundle":{"$ref":"#/components/schemas/V1ClusterTrustBundleProjection"},"configMap":{"$ref":"#/components/schemas/V1ConfigMapProjection"},"downwardAPI":{"$ref":"#/components/schemas/V1DownwardAPIProjection"},"secret":{"$ref":"#/components/schemas/V1SecretProjection"},"serviceAccountToken":{"$ref":"#/components/schemas/V1ServiceAccountTokenProjection"}}},"V1VolumeResourceRequirements":{"type":"object","properties":{"limits":{"$ref":"#/components/schemas/V1ResourceList"},"requests":{"$ref":"#/components/schemas/V1ResourceList"}}},"V1VsphereVirtualDiskVolumeSource":{"type":"object","properties":{"fsType":{"type":"string"},"storagePolicyID":{"type":"string"},"storagePolicyName":{"type":"string"},"volumePath":{"type":"string"}}},"V1WeightedPodAffinityTerm":{"type":"object","properties":{"podAffinityTerm":{"$ref":"#/components/schemas/V1PodAffinityTerm"},"weight":{"type":"integer"}}},"V1WindowsSecurityContextOptions":{"type":"object","properties":{"gmsaCredentialSpec":{"type":"string","nullable":true},"gmsaCredentialSpecName":{"type":"string","nullable":true},"hostProcess":{"type":"boolean","nullable":true},"runAsUserName":{"type":"string","nullable":true}}}}}} \ No newline at end of file +{"openapi":"3.0.3","info":{"title":"interLink server API","description":"This is the API spec for the Virtual Kubelet to interLink API server communication","version":"0.6.0"},"paths":{"/create":{"post":{"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterlinkPodCreateRequests"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterlinkCreateStruct"}}}}}}},"/delete":{"delete":{"responses":{"200":{"description":"OK"}}}},"/getLogs":{"get":{"responses":{"200":{"description":"OK","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/pinglink":{"post":{"responses":{"200":{"description":"OK"}}}},"/status":{"get":{"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/InterlinkPodStatus"}}}}}}}}},"components":{"schemas":{"InterlinkCreateStruct":{"type":"object","properties":{"PodJID":{"type":"string"},"PodUID":{"type":"string"}}},"InterlinkPodCreateRequests":{"type":"object","properties":{"configmaps":{"type":"array","items":{"$ref":"#/components/schemas/V1ConfigMap"},"nullable":true},"jobscriptURL":{"type":"string"},"pod":{"$ref":"#/components/schemas/V1Pod"},"projectedvolumesmaps":{"type":"array","items":{"$ref":"#/components/schemas/V1ConfigMap"},"nullable":true},"secrets":{"type":"array","items":{"$ref":"#/components/schemas/V1Secret"},"nullable":true}}},"InterlinkPodStatus":{"type":"object","properties":{"JID":{"type":"string"},"UID":{"type":"string"},"containers":{"type":"array","items":{"$ref":"#/components/schemas/V1ContainerStatus"},"nullable":true},"initContainers":{"type":"array","items":{"$ref":"#/components/schemas/V1ContainerStatus"},"nullable":true},"name":{"type":"string"},"namespace":{"type":"string"}}},"IntstrIntOrString":{"type":"object"},"ResourceQuantity":{"type":"object"},"V1AWSElasticBlockStoreVolumeSource":{"type":"object","properties":{"fsType":{"type":"string"},"partition":{"type":"integer"},"readOnly":{"type":"boolean"},"volumeID":{"type":"string"}}},"V1Affinity":{"type":"object","properties":{"nodeAffinity":{"$ref":"#/components/schemas/V1NodeAffinity"},"podAffinity":{"$ref":"#/components/schemas/V1PodAffinity"},"podAntiAffinity":{"$ref":"#/components/schemas/V1PodAntiAffinity"}}},"V1AppArmorProfile":{"type":"object","properties":{"localhostProfile":{"type":"string","nullable":true},"type":{"type":"string"}}},"V1AzureDiskVolumeSource":{"type":"object","properties":{"cachingMode":{"type":"string","nullable":true},"diskName":{"type":"string"},"diskURI":{"type":"string"},"fsType":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"readOnly":{"type":"boolean","nullable":true}}},"V1AzureFileVolumeSource":{"type":"object","properties":{"readOnly":{"type":"boolean"},"secretName":{"type":"string"},"shareName":{"type":"string"}}},"V1CSIVolumeSource":{"type":"object","properties":{"driver":{"type":"string"},"fsType":{"type":"string","nullable":true},"nodePublishSecretRef":{"$ref":"#/components/schemas/V1LocalObjectReference"},"readOnly":{"type":"boolean","nullable":true},"volumeAttributes":{"type":"object","additionalProperties":{"type":"string"}}}},"V1Capabilities":{"type":"object","properties":{"add":{"type":"array","items":{"type":"string"}},"drop":{"type":"array","items":{"type":"string"}}}},"V1CephFSVolumeSource":{"type":"object","properties":{"monitors":{"type":"array","items":{"type":"string"},"nullable":true},"path":{"type":"string"},"readOnly":{"type":"boolean"},"secretFile":{"type":"string"},"secretRef":{"$ref":"#/components/schemas/V1LocalObjectReference"},"user":{"type":"string"}}},"V1CinderVolumeSource":{"type":"object","properties":{"fsType":{"type":"string"},"readOnly":{"type":"boolean"},"secretRef":{"$ref":"#/components/schemas/V1LocalObjectReference"},"volumeID":{"type":"string"}}},"V1ClusterTrustBundleProjection":{"type":"object","properties":{"labelSelector":{"$ref":"#/components/schemas/V1LabelSelector"},"name":{"type":"string","nullable":true},"optional":{"type":"boolean","nullable":true},"path":{"type":"string"},"signerName":{"type":"string","nullable":true}}},"V1ConfigMap":{"type":"object","properties":{"apiVersion":{"type":"string"},"binaryData":{"type":"object","additionalProperties":{"type":"string","format":"base64"}},"data":{"type":"object","additionalProperties":{"type":"string"}},"immutable":{"type":"boolean","nullable":true},"kind":{"type":"string"},"metadata":{"$ref":"#/components/schemas/V1ObjectMeta"}}},"V1ConfigMapEnvSource":{"type":"object","properties":{"name":{"type":"string"},"optional":{"type":"boolean","nullable":true}}},"V1ConfigMapKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean","nullable":true}}},"V1ConfigMapProjection":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/V1KeyToPath"}},"name":{"type":"string"},"optional":{"type":"boolean","nullable":true}}},"V1ConfigMapVolumeSource":{"type":"object","properties":{"defaultMode":{"type":"integer","nullable":true},"items":{"type":"array","items":{"$ref":"#/components/schemas/V1KeyToPath"}},"name":{"type":"string"},"optional":{"type":"boolean","nullable":true}}},"V1Container":{"type":"object","properties":{"args":{"type":"array","items":{"type":"string"}},"command":{"type":"array","items":{"type":"string"}},"env":{"type":"array","items":{"$ref":"#/components/schemas/V1EnvVar"}},"envFrom":{"type":"array","items":{"$ref":"#/components/schemas/V1EnvFromSource"}},"image":{"type":"string"},"imagePullPolicy":{"type":"string"},"lifecycle":{"$ref":"#/components/schemas/V1Lifecycle"},"livenessProbe":{"$ref":"#/components/schemas/V1Probe"},"name":{"type":"string"},"ports":{"type":"array","items":{"$ref":"#/components/schemas/V1ContainerPort"}},"readinessProbe":{"$ref":"#/components/schemas/V1Probe"},"resizePolicy":{"type":"array","items":{"$ref":"#/components/schemas/V1ContainerResizePolicy"}},"resources":{"$ref":"#/components/schemas/V1ResourceRequirements"},"restartPolicy":{"type":"string","nullable":true},"securityContext":{"$ref":"#/components/schemas/V1SecurityContext"},"startupProbe":{"$ref":"#/components/schemas/V1Probe"},"stdin":{"type":"boolean"},"stdinOnce":{"type":"boolean"},"terminationMessagePath":{"type":"string"},"terminationMessagePolicy":{"type":"string"},"tty":{"type":"boolean"},"volumeDevices":{"type":"array","items":{"$ref":"#/components/schemas/V1VolumeDevice"}},"volumeMounts":{"type":"array","items":{"$ref":"#/components/schemas/V1VolumeMount"}},"workingDir":{"type":"string"}}},"V1ContainerPort":{"type":"object","properties":{"containerPort":{"type":"integer"},"hostIP":{"type":"string"},"hostPort":{"type":"integer"},"name":{"type":"string"},"protocol":{"type":"string"}}},"V1ContainerResizePolicy":{"type":"object","properties":{"resourceName":{"type":"string"},"restartPolicy":{"type":"string"}}},"V1ContainerState":{"type":"object","properties":{"running":{"$ref":"#/components/schemas/V1ContainerStateRunning"},"terminated":{"$ref":"#/components/schemas/V1ContainerStateTerminated"},"waiting":{"$ref":"#/components/schemas/V1ContainerStateWaiting"}}},"V1ContainerStateRunning":{"type":"object","properties":{"startedAt":{"type":"string"}}},"V1ContainerStateTerminated":{"type":"object","properties":{"containerID":{"type":"string"},"exitCode":{"type":"integer"},"finishedAt":{"type":"string"},"message":{"type":"string"},"reason":{"type":"string"},"signal":{"type":"integer"},"startedAt":{"type":"string"}}},"V1ContainerStateWaiting":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string"}}},"V1ContainerStatus":{"type":"object","properties":{"allocatedResources":{"$ref":"#/components/schemas/V1ResourceList"},"allocatedResourcesStatus":{"type":"array","items":{"$ref":"#/components/schemas/V1ResourceStatus"}},"containerID":{"type":"string"},"image":{"type":"string"},"imageID":{"type":"string"},"lastState":{"$ref":"#/components/schemas/V1ContainerState"},"name":{"type":"string"},"ready":{"type":"boolean"},"resources":{"$ref":"#/components/schemas/V1ResourceRequirements"},"restartCount":{"type":"integer"},"started":{"type":"boolean","nullable":true},"state":{"$ref":"#/components/schemas/V1ContainerState"},"stopSignal":{"type":"string","nullable":true},"user":{"$ref":"#/components/schemas/V1ContainerUser"},"volumeMounts":{"type":"array","items":{"$ref":"#/components/schemas/V1VolumeMountStatus"}}}},"V1ContainerUser":{"type":"object","properties":{"linux":{"$ref":"#/components/schemas/V1LinuxContainerUser"}}},"V1DownwardAPIProjection":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/V1DownwardAPIVolumeFile"}}}},"V1DownwardAPIVolumeFile":{"type":"object","properties":{"fieldRef":{"$ref":"#/components/schemas/V1ObjectFieldSelector"},"mode":{"type":"integer","nullable":true},"path":{"type":"string"},"resourceFieldRef":{"$ref":"#/components/schemas/V1ResourceFieldSelector"}}},"V1DownwardAPIVolumeSource":{"type":"object","properties":{"defaultMode":{"type":"integer","nullable":true},"items":{"type":"array","items":{"$ref":"#/components/schemas/V1DownwardAPIVolumeFile"}}}},"V1EmptyDirVolumeSource":{"type":"object","properties":{"medium":{"type":"string"},"sizeLimit":{"$ref":"#/components/schemas/ResourceQuantity"}}},"V1EnvFromSource":{"type":"object","properties":{"configMapRef":{"$ref":"#/components/schemas/V1ConfigMapEnvSource"},"prefix":{"type":"string"},"secretRef":{"$ref":"#/components/schemas/V1SecretEnvSource"}}},"V1EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/V1EnvVarSource"}}},"V1EnvVarSource":{"type":"object","properties":{"configMapKeyRef":{"$ref":"#/components/schemas/V1ConfigMapKeySelector"},"fieldRef":{"$ref":"#/components/schemas/V1ObjectFieldSelector"},"resourceFieldRef":{"$ref":"#/components/schemas/V1ResourceFieldSelector"},"secretKeyRef":{"$ref":"#/components/schemas/V1SecretKeySelector"}}},"V1EphemeralContainer":{"type":"object","properties":{"args":{"type":"array","items":{"type":"string"}},"command":{"type":"array","items":{"type":"string"}},"env":{"type":"array","items":{"$ref":"#/components/schemas/V1EnvVar"}},"envFrom":{"type":"array","items":{"$ref":"#/components/schemas/V1EnvFromSource"}},"image":{"type":"string"},"imagePullPolicy":{"type":"string"},"lifecycle":{"$ref":"#/components/schemas/V1Lifecycle"},"livenessProbe":{"$ref":"#/components/schemas/V1Probe"},"name":{"type":"string"},"ports":{"type":"array","items":{"$ref":"#/components/schemas/V1ContainerPort"}},"readinessProbe":{"$ref":"#/components/schemas/V1Probe"},"resizePolicy":{"type":"array","items":{"$ref":"#/components/schemas/V1ContainerResizePolicy"}},"resources":{"$ref":"#/components/schemas/V1ResourceRequirements"},"restartPolicy":{"type":"string","nullable":true},"securityContext":{"$ref":"#/components/schemas/V1SecurityContext"},"startupProbe":{"$ref":"#/components/schemas/V1Probe"},"stdin":{"type":"boolean"},"stdinOnce":{"type":"boolean"},"targetContainerName":{"type":"string"},"terminationMessagePath":{"type":"string"},"terminationMessagePolicy":{"type":"string"},"tty":{"type":"boolean"},"volumeDevices":{"type":"array","items":{"$ref":"#/components/schemas/V1VolumeDevice"}},"volumeMounts":{"type":"array","items":{"$ref":"#/components/schemas/V1VolumeMount"}},"workingDir":{"type":"string"}}},"V1EphemeralVolumeSource":{"type":"object","properties":{"volumeClaimTemplate":{"$ref":"#/components/schemas/V1PersistentVolumeClaimTemplate"}}},"V1ExecAction":{"type":"object","properties":{"command":{"type":"array","items":{"type":"string"}}}},"V1FCVolumeSource":{"type":"object","properties":{"fsType":{"type":"string"},"lun":{"type":"integer","nullable":true},"readOnly":{"type":"boolean"},"targetWWNs":{"type":"array","items":{"type":"string"}},"wwids":{"type":"array","items":{"type":"string"}}}},"V1FieldsV1":{"type":"object"},"V1FlexVolumeSource":{"type":"object","properties":{"driver":{"type":"string"},"fsType":{"type":"string"},"options":{"type":"object","additionalProperties":{"type":"string"}},"readOnly":{"type":"boolean"},"secretRef":{"$ref":"#/components/schemas/V1LocalObjectReference"}}},"V1FlockerVolumeSource":{"type":"object","properties":{"datasetName":{"type":"string"},"datasetUUID":{"type":"string"}}},"V1GCEPersistentDiskVolumeSource":{"type":"object","properties":{"fsType":{"type":"string"},"partition":{"type":"integer"},"pdName":{"type":"string"},"readOnly":{"type":"boolean"}}},"V1GRPCAction":{"type":"object","properties":{"port":{"type":"integer"},"service":{"type":"string","nullable":true}}},"V1GitRepoVolumeSource":{"type":"object","properties":{"directory":{"type":"string"},"repository":{"type":"string"},"revision":{"type":"string"}}},"V1GlusterfsVolumeSource":{"type":"object","properties":{"endpoints":{"type":"string"},"path":{"type":"string"},"readOnly":{"type":"boolean"}}},"V1HTTPGetAction":{"type":"object","properties":{"host":{"type":"string"},"httpHeaders":{"type":"array","items":{"$ref":"#/components/schemas/V1HTTPHeader"}},"path":{"type":"string"},"port":{"$ref":"#/components/schemas/IntstrIntOrString"},"scheme":{"type":"string"}}},"V1HTTPHeader":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"}}},"V1HostAlias":{"type":"object","properties":{"hostnames":{"type":"array","items":{"type":"string"}},"ip":{"type":"string"}}},"V1HostIP":{"type":"object","properties":{"ip":{"type":"string"}}},"V1HostPathVolumeSource":{"type":"object","properties":{"path":{"type":"string"},"type":{"type":"string","nullable":true}}},"V1ISCSIVolumeSource":{"type":"object","properties":{"chapAuthDiscovery":{"type":"boolean"},"chapAuthSession":{"type":"boolean"},"fsType":{"type":"string"},"initiatorName":{"type":"string","nullable":true},"iqn":{"type":"string"},"iscsiInterface":{"type":"string"},"lun":{"type":"integer"},"portals":{"type":"array","items":{"type":"string"}},"readOnly":{"type":"boolean"},"secretRef":{"$ref":"#/components/schemas/V1LocalObjectReference"},"targetPortal":{"type":"string"}}},"V1ImageVolumeSource":{"type":"object","properties":{"pullPolicy":{"type":"string"},"reference":{"type":"string"}}},"V1KeyToPath":{"type":"object","properties":{"key":{"type":"string"},"mode":{"type":"integer","nullable":true},"path":{"type":"string"}}},"V1LabelSelector":{"type":"object","properties":{"matchExpressions":{"type":"array","items":{"$ref":"#/components/schemas/V1LabelSelectorRequirement"}},"matchLabels":{"type":"object","additionalProperties":{"type":"string"}}}},"V1LabelSelectorRequirement":{"type":"object","properties":{"key":{"type":"string"},"operator":{"type":"string"},"values":{"type":"array","items":{"type":"string"}}}},"V1Lifecycle":{"type":"object","properties":{"postStart":{"$ref":"#/components/schemas/V1LifecycleHandler"},"preStop":{"$ref":"#/components/schemas/V1LifecycleHandler"},"stopSignal":{"type":"string","nullable":true}}},"V1LifecycleHandler":{"type":"object","properties":{"exec":{"$ref":"#/components/schemas/V1ExecAction"},"httpGet":{"$ref":"#/components/schemas/V1HTTPGetAction"},"sleep":{"$ref":"#/components/schemas/V1SleepAction"},"tcpSocket":{"$ref":"#/components/schemas/V1TCPSocketAction"}}},"V1LinuxContainerUser":{"type":"object","properties":{"gid":{"type":"integer"},"supplementalGroups":{"type":"array","items":{"type":"integer"}},"uid":{"type":"integer"}}},"V1LocalObjectReference":{"type":"object","properties":{"name":{"type":"string"}}},"V1ManagedFieldsEntry":{"type":"object","properties":{"apiVersion":{"type":"string"},"fieldsType":{"type":"string"},"fieldsV1":{"$ref":"#/components/schemas/V1FieldsV1"},"manager":{"type":"string"},"operation":{"type":"string"},"subresource":{"type":"string"},"time":{"type":"string"}}},"V1NFSVolumeSource":{"type":"object","properties":{"path":{"type":"string"},"readOnly":{"type":"boolean"},"server":{"type":"string"}}},"V1NodeAffinity":{"type":"object","properties":{"preferredDuringSchedulingIgnoredDuringExecution":{"type":"array","items":{"$ref":"#/components/schemas/V1PreferredSchedulingTerm"}},"requiredDuringSchedulingIgnoredDuringExecution":{"$ref":"#/components/schemas/V1NodeSelector"}}},"V1NodeSelector":{"type":"object","properties":{"nodeSelectorTerms":{"type":"array","items":{"$ref":"#/components/schemas/V1NodeSelectorTerm"},"nullable":true}}},"V1NodeSelectorRequirement":{"type":"object","properties":{"key":{"type":"string"},"operator":{"type":"string"},"values":{"type":"array","items":{"type":"string"}}}},"V1NodeSelectorTerm":{"type":"object","properties":{"matchExpressions":{"type":"array","items":{"$ref":"#/components/schemas/V1NodeSelectorRequirement"}},"matchFields":{"type":"array","items":{"$ref":"#/components/schemas/V1NodeSelectorRequirement"}}}},"V1ObjectFieldSelector":{"type":"object","properties":{"apiVersion":{"type":"string"},"fieldPath":{"type":"string"}}},"V1ObjectMeta":{"type":"object","properties":{"annotations":{"type":"object","additionalProperties":{"type":"string"}},"creationTimestamp":{"type":"string"},"deletionGracePeriodSeconds":{"type":"integer","nullable":true},"deletionTimestamp":{"type":"string"},"finalizers":{"type":"array","items":{"type":"string"}},"generateName":{"type":"string"},"generation":{"type":"integer"},"labels":{"type":"object","additionalProperties":{"type":"string"}},"managedFields":{"type":"array","items":{"$ref":"#/components/schemas/V1ManagedFieldsEntry"}},"name":{"type":"string"},"namespace":{"type":"string"},"ownerReferences":{"type":"array","items":{"$ref":"#/components/schemas/V1OwnerReference"}},"resourceVersion":{"type":"string"},"selfLink":{"type":"string"},"uid":{"type":"string"}}},"V1OwnerReference":{"type":"object","properties":{"apiVersion":{"type":"string"},"blockOwnerDeletion":{"type":"boolean","nullable":true},"controller":{"type":"boolean","nullable":true},"kind":{"type":"string"},"name":{"type":"string"},"uid":{"type":"string"}}},"V1PersistentVolumeClaimSpec":{"type":"object","properties":{"accessModes":{"type":"array","items":{"type":"string"}},"dataSource":{"$ref":"#/components/schemas/V1TypedLocalObjectReference"},"dataSourceRef":{"$ref":"#/components/schemas/V1TypedObjectReference"},"resources":{"$ref":"#/components/schemas/V1VolumeResourceRequirements"},"selector":{"$ref":"#/components/schemas/V1LabelSelector"},"storageClassName":{"type":"string","nullable":true},"volumeAttributesClassName":{"type":"string","nullable":true},"volumeMode":{"type":"string","nullable":true},"volumeName":{"type":"string"}}},"V1PersistentVolumeClaimTemplate":{"type":"object","properties":{"metadata":{"$ref":"#/components/schemas/V1ObjectMeta"},"spec":{"$ref":"#/components/schemas/V1PersistentVolumeClaimSpec"}}},"V1PersistentVolumeClaimVolumeSource":{"type":"object","properties":{"claimName":{"type":"string"},"readOnly":{"type":"boolean"}}},"V1PhotonPersistentDiskVolumeSource":{"type":"object","properties":{"fsType":{"type":"string"},"pdID":{"type":"string"}}},"V1Pod":{"type":"object","properties":{"apiVersion":{"type":"string"},"kind":{"type":"string"},"metadata":{"$ref":"#/components/schemas/V1ObjectMeta"},"spec":{"$ref":"#/components/schemas/V1PodSpec"},"status":{"$ref":"#/components/schemas/V1PodStatus"}}},"V1PodAffinity":{"type":"object","properties":{"preferredDuringSchedulingIgnoredDuringExecution":{"type":"array","items":{"$ref":"#/components/schemas/V1WeightedPodAffinityTerm"}},"requiredDuringSchedulingIgnoredDuringExecution":{"type":"array","items":{"$ref":"#/components/schemas/V1PodAffinityTerm"}}}},"V1PodAffinityTerm":{"type":"object","properties":{"labelSelector":{"$ref":"#/components/schemas/V1LabelSelector"},"matchLabelKeys":{"type":"array","items":{"type":"string"}},"mismatchLabelKeys":{"type":"array","items":{"type":"string"}},"namespaceSelector":{"$ref":"#/components/schemas/V1LabelSelector"},"namespaces":{"type":"array","items":{"type":"string"}},"topologyKey":{"type":"string"}}},"V1PodAntiAffinity":{"type":"object","properties":{"preferredDuringSchedulingIgnoredDuringExecution":{"type":"array","items":{"$ref":"#/components/schemas/V1WeightedPodAffinityTerm"}},"requiredDuringSchedulingIgnoredDuringExecution":{"type":"array","items":{"$ref":"#/components/schemas/V1PodAffinityTerm"}}}},"V1PodCondition":{"type":"object","properties":{"lastProbeTime":{"type":"string"},"lastTransitionTime":{"type":"string"},"message":{"type":"string"},"observedGeneration":{"type":"integer"},"reason":{"type":"string"},"status":{"type":"string"},"type":{"type":"string"}}},"V1PodDNSConfig":{"type":"object","properties":{"nameservers":{"type":"array","items":{"type":"string"}},"options":{"type":"array","items":{"$ref":"#/components/schemas/V1PodDNSConfigOption"}},"searches":{"type":"array","items":{"type":"string"}}}},"V1PodDNSConfigOption":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string","nullable":true}}},"V1PodIP":{"type":"object","properties":{"ip":{"type":"string"}}},"V1PodOS":{"type":"object","properties":{"name":{"type":"string"}}},"V1PodReadinessGate":{"type":"object","properties":{"conditionType":{"type":"string"}}},"V1PodResourceClaim":{"type":"object","properties":{"name":{"type":"string"},"resourceClaimName":{"type":"string","nullable":true},"resourceClaimTemplateName":{"type":"string","nullable":true}}},"V1PodResourceClaimStatus":{"type":"object","properties":{"name":{"type":"string"},"resourceClaimName":{"type":"string","nullable":true}}},"V1PodSchedulingGate":{"type":"object","properties":{"name":{"type":"string"}}},"V1PodSecurityContext":{"type":"object","properties":{"appArmorProfile":{"$ref":"#/components/schemas/V1AppArmorProfile"},"fsGroup":{"type":"integer","nullable":true},"fsGroupChangePolicy":{"type":"string","nullable":true},"runAsGroup":{"type":"integer","nullable":true},"runAsNonRoot":{"type":"boolean","nullable":true},"runAsUser":{"type":"integer","nullable":true},"seLinuxChangePolicy":{"type":"string","nullable":true},"seLinuxOptions":{"$ref":"#/components/schemas/V1SELinuxOptions"},"seccompProfile":{"$ref":"#/components/schemas/V1SeccompProfile"},"supplementalGroups":{"type":"array","items":{"type":"integer"}},"supplementalGroupsPolicy":{"type":"string","nullable":true},"sysctls":{"type":"array","items":{"$ref":"#/components/schemas/V1Sysctl"}},"windowsOptions":{"$ref":"#/components/schemas/V1WindowsSecurityContextOptions"}}},"V1PodSpec":{"type":"object","properties":{"activeDeadlineSeconds":{"type":"integer","nullable":true},"affinity":{"$ref":"#/components/schemas/V1Affinity"},"automountServiceAccountToken":{"type":"boolean","nullable":true},"containers":{"type":"array","items":{"$ref":"#/components/schemas/V1Container"},"nullable":true},"dnsConfig":{"$ref":"#/components/schemas/V1PodDNSConfig"},"dnsPolicy":{"type":"string"},"enableServiceLinks":{"type":"boolean","nullable":true},"ephemeralContainers":{"type":"array","items":{"$ref":"#/components/schemas/V1EphemeralContainer"}},"hostAliases":{"type":"array","items":{"$ref":"#/components/schemas/V1HostAlias"}},"hostIPC":{"type":"boolean"},"hostNetwork":{"type":"boolean"},"hostPID":{"type":"boolean"},"hostUsers":{"type":"boolean","nullable":true},"hostname":{"type":"string"},"imagePullSecrets":{"type":"array","items":{"$ref":"#/components/schemas/V1LocalObjectReference"}},"initContainers":{"type":"array","items":{"$ref":"#/components/schemas/V1Container"}},"nodeName":{"type":"string"},"nodeSelector":{"type":"object","additionalProperties":{"type":"string"}},"os":{"$ref":"#/components/schemas/V1PodOS"},"overhead":{"$ref":"#/components/schemas/V1ResourceList"},"preemptionPolicy":{"type":"string","nullable":true},"priority":{"type":"integer","nullable":true},"priorityClassName":{"type":"string"},"readinessGates":{"type":"array","items":{"$ref":"#/components/schemas/V1PodReadinessGate"}},"resourceClaims":{"type":"array","items":{"$ref":"#/components/schemas/V1PodResourceClaim"}},"resources":{"$ref":"#/components/schemas/V1ResourceRequirements"},"restartPolicy":{"type":"string"},"runtimeClassName":{"type":"string","nullable":true},"schedulerName":{"type":"string"},"schedulingGates":{"type":"array","items":{"$ref":"#/components/schemas/V1PodSchedulingGate"}},"securityContext":{"$ref":"#/components/schemas/V1PodSecurityContext"},"serviceAccount":{"type":"string"},"serviceAccountName":{"type":"string"},"setHostnameAsFQDN":{"type":"boolean","nullable":true},"shareProcessNamespace":{"type":"boolean","nullable":true},"subdomain":{"type":"string"},"terminationGracePeriodSeconds":{"type":"integer","nullable":true},"tolerations":{"type":"array","items":{"$ref":"#/components/schemas/V1Toleration"}},"topologySpreadConstraints":{"type":"array","items":{"$ref":"#/components/schemas/V1TopologySpreadConstraint"}},"volumes":{"type":"array","items":{"$ref":"#/components/schemas/V1Volume"}}}},"V1PodStatus":{"type":"object","properties":{"conditions":{"type":"array","items":{"$ref":"#/components/schemas/V1PodCondition"}},"containerStatuses":{"type":"array","items":{"$ref":"#/components/schemas/V1ContainerStatus"}},"ephemeralContainerStatuses":{"type":"array","items":{"$ref":"#/components/schemas/V1ContainerStatus"}},"hostIP":{"type":"string"},"hostIPs":{"type":"array","items":{"$ref":"#/components/schemas/V1HostIP"}},"initContainerStatuses":{"type":"array","items":{"$ref":"#/components/schemas/V1ContainerStatus"}},"message":{"type":"string"},"nominatedNodeName":{"type":"string"},"observedGeneration":{"type":"integer"},"phase":{"type":"string"},"podIP":{"type":"string"},"podIPs":{"type":"array","items":{"$ref":"#/components/schemas/V1PodIP"}},"qosClass":{"type":"string"},"reason":{"type":"string"},"resize":{"type":"string"},"resourceClaimStatuses":{"type":"array","items":{"$ref":"#/components/schemas/V1PodResourceClaimStatus"}},"startTime":{"type":"string"}}},"V1PortworxVolumeSource":{"type":"object","properties":{"fsType":{"type":"string"},"readOnly":{"type":"boolean"},"volumeID":{"type":"string"}}},"V1PreferredSchedulingTerm":{"type":"object","properties":{"preference":{"$ref":"#/components/schemas/V1NodeSelectorTerm"},"weight":{"type":"integer"}}},"V1Probe":{"type":"object","properties":{"exec":{"$ref":"#/components/schemas/V1ExecAction"},"failureThreshold":{"type":"integer"},"grpc":{"$ref":"#/components/schemas/V1GRPCAction"},"httpGet":{"$ref":"#/components/schemas/V1HTTPGetAction"},"initialDelaySeconds":{"type":"integer"},"periodSeconds":{"type":"integer"},"successThreshold":{"type":"integer"},"tcpSocket":{"$ref":"#/components/schemas/V1TCPSocketAction"},"terminationGracePeriodSeconds":{"type":"integer","nullable":true},"timeoutSeconds":{"type":"integer"}}},"V1ProjectedVolumeSource":{"type":"object","properties":{"defaultMode":{"type":"integer","nullable":true},"sources":{"type":"array","items":{"$ref":"#/components/schemas/V1VolumeProjection"},"nullable":true}}},"V1QuobyteVolumeSource":{"type":"object","properties":{"group":{"type":"string"},"readOnly":{"type":"boolean"},"registry":{"type":"string"},"tenant":{"type":"string"},"user":{"type":"string"},"volume":{"type":"string"}}},"V1RBDVolumeSource":{"type":"object","properties":{"fsType":{"type":"string"},"image":{"type":"string"},"keyring":{"type":"string"},"monitors":{"type":"array","items":{"type":"string"},"nullable":true},"pool":{"type":"string"},"readOnly":{"type":"boolean"},"secretRef":{"$ref":"#/components/schemas/V1LocalObjectReference"},"user":{"type":"string"}}},"V1ResourceClaim":{"type":"object","properties":{"name":{"type":"string"},"request":{"type":"string"}}},"V1ResourceFieldSelector":{"type":"object","properties":{"containerName":{"type":"string"},"divisor":{"$ref":"#/components/schemas/ResourceQuantity"},"resource":{"type":"string"}}},"V1ResourceHealth":{"type":"object","properties":{"health":{"type":"string"},"resourceID":{"type":"string"}}},"V1ResourceList":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/ResourceQuantity"}},"V1ResourceRequirements":{"type":"object","properties":{"claims":{"type":"array","items":{"$ref":"#/components/schemas/V1ResourceClaim"}},"limits":{"$ref":"#/components/schemas/V1ResourceList"},"requests":{"$ref":"#/components/schemas/V1ResourceList"}}},"V1ResourceStatus":{"type":"object","properties":{"name":{"type":"string"},"resources":{"type":"array","items":{"$ref":"#/components/schemas/V1ResourceHealth"}}}},"V1SELinuxOptions":{"type":"object","properties":{"level":{"type":"string"},"role":{"type":"string"},"type":{"type":"string"},"user":{"type":"string"}}},"V1ScaleIOVolumeSource":{"type":"object","properties":{"fsType":{"type":"string"},"gateway":{"type":"string"},"protectionDomain":{"type":"string"},"readOnly":{"type":"boolean"},"secretRef":{"$ref":"#/components/schemas/V1LocalObjectReference"},"sslEnabled":{"type":"boolean"},"storageMode":{"type":"string"},"storagePool":{"type":"string"},"system":{"type":"string"},"volumeName":{"type":"string"}}},"V1SeccompProfile":{"type":"object","properties":{"localhostProfile":{"type":"string","nullable":true},"type":{"type":"string"}}},"V1Secret":{"type":"object","properties":{"apiVersion":{"type":"string"},"data":{"type":"object","additionalProperties":{"type":"string","format":"base64"}},"immutable":{"type":"boolean","nullable":true},"kind":{"type":"string"},"metadata":{"$ref":"#/components/schemas/V1ObjectMeta"},"stringData":{"type":"object","additionalProperties":{"type":"string"}},"type":{"type":"string"}}},"V1SecretEnvSource":{"type":"object","properties":{"name":{"type":"string"},"optional":{"type":"boolean","nullable":true}}},"V1SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean","nullable":true}}},"V1SecretProjection":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/V1KeyToPath"}},"name":{"type":"string"},"optional":{"type":"boolean","nullable":true}}},"V1SecretVolumeSource":{"type":"object","properties":{"defaultMode":{"type":"integer","nullable":true},"items":{"type":"array","items":{"$ref":"#/components/schemas/V1KeyToPath"}},"optional":{"type":"boolean","nullable":true},"secretName":{"type":"string"}}},"V1SecurityContext":{"type":"object","properties":{"allowPrivilegeEscalation":{"type":"boolean","nullable":true},"appArmorProfile":{"$ref":"#/components/schemas/V1AppArmorProfile"},"capabilities":{"$ref":"#/components/schemas/V1Capabilities"},"privileged":{"type":"boolean","nullable":true},"procMount":{"type":"string","nullable":true},"readOnlyRootFilesystem":{"type":"boolean","nullable":true},"runAsGroup":{"type":"integer","nullable":true},"runAsNonRoot":{"type":"boolean","nullable":true},"runAsUser":{"type":"integer","nullable":true},"seLinuxOptions":{"$ref":"#/components/schemas/V1SELinuxOptions"},"seccompProfile":{"$ref":"#/components/schemas/V1SeccompProfile"},"windowsOptions":{"$ref":"#/components/schemas/V1WindowsSecurityContextOptions"}}},"V1ServiceAccountTokenProjection":{"type":"object","properties":{"audience":{"type":"string"},"expirationSeconds":{"type":"integer","nullable":true},"path":{"type":"string"}}},"V1SleepAction":{"type":"object","properties":{"seconds":{"type":"integer"}}},"V1StorageOSVolumeSource":{"type":"object","properties":{"fsType":{"type":"string"},"readOnly":{"type":"boolean"},"secretRef":{"$ref":"#/components/schemas/V1LocalObjectReference"},"volumeName":{"type":"string"},"volumeNamespace":{"type":"string"}}},"V1Sysctl":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"}}},"V1TCPSocketAction":{"type":"object","properties":{"host":{"type":"string"},"port":{"$ref":"#/components/schemas/IntstrIntOrString"}}},"V1Toleration":{"type":"object","properties":{"effect":{"type":"string"},"key":{"type":"string"},"operator":{"type":"string"},"tolerationSeconds":{"type":"integer","nullable":true},"value":{"type":"string"}}},"V1TopologySpreadConstraint":{"type":"object","properties":{"labelSelector":{"$ref":"#/components/schemas/V1LabelSelector"},"matchLabelKeys":{"type":"array","items":{"type":"string"}},"maxSkew":{"type":"integer"},"minDomains":{"type":"integer","nullable":true},"nodeAffinityPolicy":{"type":"string","nullable":true},"nodeTaintsPolicy":{"type":"string","nullable":true},"topologyKey":{"type":"string"},"whenUnsatisfiable":{"type":"string"}}},"V1TypedLocalObjectReference":{"type":"object","properties":{"apiGroup":{"type":"string","nullable":true},"kind":{"type":"string"},"name":{"type":"string"}}},"V1TypedObjectReference":{"type":"object","properties":{"apiGroup":{"type":"string","nullable":true},"kind":{"type":"string"},"name":{"type":"string"},"namespace":{"type":"string","nullable":true}}},"V1Volume":{"type":"object","properties":{"awsElasticBlockStore":{"$ref":"#/components/schemas/V1AWSElasticBlockStoreVolumeSource"},"azureDisk":{"$ref":"#/components/schemas/V1AzureDiskVolumeSource"},"azureFile":{"$ref":"#/components/schemas/V1AzureFileVolumeSource"},"cephfs":{"$ref":"#/components/schemas/V1CephFSVolumeSource"},"cinder":{"$ref":"#/components/schemas/V1CinderVolumeSource"},"configMap":{"$ref":"#/components/schemas/V1ConfigMapVolumeSource"},"csi":{"$ref":"#/components/schemas/V1CSIVolumeSource"},"downwardAPI":{"$ref":"#/components/schemas/V1DownwardAPIVolumeSource"},"emptyDir":{"$ref":"#/components/schemas/V1EmptyDirVolumeSource"},"ephemeral":{"$ref":"#/components/schemas/V1EphemeralVolumeSource"},"fc":{"$ref":"#/components/schemas/V1FCVolumeSource"},"flexVolume":{"$ref":"#/components/schemas/V1FlexVolumeSource"},"flocker":{"$ref":"#/components/schemas/V1FlockerVolumeSource"},"gcePersistentDisk":{"$ref":"#/components/schemas/V1GCEPersistentDiskVolumeSource"},"gitRepo":{"$ref":"#/components/schemas/V1GitRepoVolumeSource"},"glusterfs":{"$ref":"#/components/schemas/V1GlusterfsVolumeSource"},"hostPath":{"$ref":"#/components/schemas/V1HostPathVolumeSource"},"image":{"$ref":"#/components/schemas/V1ImageVolumeSource"},"iscsi":{"$ref":"#/components/schemas/V1ISCSIVolumeSource"},"name":{"type":"string"},"nfs":{"$ref":"#/components/schemas/V1NFSVolumeSource"},"persistentVolumeClaim":{"$ref":"#/components/schemas/V1PersistentVolumeClaimVolumeSource"},"photonPersistentDisk":{"$ref":"#/components/schemas/V1PhotonPersistentDiskVolumeSource"},"portworxVolume":{"$ref":"#/components/schemas/V1PortworxVolumeSource"},"projected":{"$ref":"#/components/schemas/V1ProjectedVolumeSource"},"quobyte":{"$ref":"#/components/schemas/V1QuobyteVolumeSource"},"rbd":{"$ref":"#/components/schemas/V1RBDVolumeSource"},"scaleIO":{"$ref":"#/components/schemas/V1ScaleIOVolumeSource"},"secret":{"$ref":"#/components/schemas/V1SecretVolumeSource"},"storageos":{"$ref":"#/components/schemas/V1StorageOSVolumeSource"},"vsphereVolume":{"$ref":"#/components/schemas/V1VsphereVirtualDiskVolumeSource"}}},"V1VolumeDevice":{"type":"object","properties":{"devicePath":{"type":"string"},"name":{"type":"string"}}},"V1VolumeMount":{"type":"object","properties":{"mountPath":{"type":"string"},"mountPropagation":{"type":"string","nullable":true},"name":{"type":"string"},"readOnly":{"type":"boolean"},"recursiveReadOnly":{"type":"string","nullable":true},"subPath":{"type":"string"},"subPathExpr":{"type":"string"}}},"V1VolumeMountStatus":{"type":"object","properties":{"mountPath":{"type":"string"},"name":{"type":"string"},"readOnly":{"type":"boolean"},"recursiveReadOnly":{"type":"string","nullable":true}}},"V1VolumeProjection":{"type":"object","properties":{"clusterTrustBundle":{"$ref":"#/components/schemas/V1ClusterTrustBundleProjection"},"configMap":{"$ref":"#/components/schemas/V1ConfigMapProjection"},"downwardAPI":{"$ref":"#/components/schemas/V1DownwardAPIProjection"},"secret":{"$ref":"#/components/schemas/V1SecretProjection"},"serviceAccountToken":{"$ref":"#/components/schemas/V1ServiceAccountTokenProjection"}}},"V1VolumeResourceRequirements":{"type":"object","properties":{"limits":{"$ref":"#/components/schemas/V1ResourceList"},"requests":{"$ref":"#/components/schemas/V1ResourceList"}}},"V1VsphereVirtualDiskVolumeSource":{"type":"object","properties":{"fsType":{"type":"string"},"storagePolicyID":{"type":"string"},"storagePolicyName":{"type":"string"},"volumePath":{"type":"string"}}},"V1WeightedPodAffinityTerm":{"type":"object","properties":{"podAffinityTerm":{"$ref":"#/components/schemas/V1PodAffinityTerm"},"weight":{"type":"integer"}}},"V1WindowsSecurityContextOptions":{"type":"object","properties":{"gmsaCredentialSpec":{"type":"string","nullable":true},"gmsaCredentialSpecName":{"type":"string","nullable":true},"hostProcess":{"type":"boolean","nullable":true},"runAsUserName":{"type":"string","nullable":true}}}}}} \ No newline at end of file diff --git a/docs/openapi/plugin-openapi.json b/docs/openapi/plugin-openapi.json index 825ec318..c2393a3a 100644 --- a/docs/openapi/plugin-openapi.json +++ b/docs/openapi/plugin-openapi.json @@ -1,1422 +1 @@ -{ - "openapi": "3.1.0", - "info": { - "title": "interLink Plugin spec", - "description": "openapi spec for interLink apis <-> provider plugin communication", - "version": "v0.4.0" - }, - "paths": { - "/create": { - "post": { - "summary": "Create Pod", - "operationId": "create_pod_create_post", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Pod" - } - } - }, - "required": true - }, - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateStruct" - } - } - } - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - } - } - } - } - }, - "/delete": { - "post": { - "summary": "Delete Pod", - "operationId": "delete_pod_delete_post", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PodRequest" - } - } - }, - "required": true - }, - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "type": "string", - "title": "Response Delete Pod Delete Post" - } - } - } - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - } - } - } - } - }, - "/status": { - "get": { - "summary": "Status Pod", - "operationId": "status_pod_status_get", - "requestBody": { - "content": { - "application/json": { - "schema": { - "items": { - "$ref": "#/components/schemas/PodRequest" - }, - "type": "array", - "title": "Pods" - } - } - }, - "required": true - }, - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "items": { - "$ref": "#/components/schemas/PodStatus" - }, - "type": "array", - "title": "Response Status Pod Status Get" - } - } - } - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - } - } - } - } - }, - "/getLogs": { - "get": { - "summary": "Get Logs", - "operationId": "get_logs_getLogs_get", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/LogRequest" - } - } - }, - "required": true - }, - "responses": { - "200": { - "description": "Successful Response", - "content": { - "text/plain": { - "schema": { - "type": "string" - } - } - } - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - } - } - } - } - } - }, - "components": { - "schemas": { - "ConfigMap": { - "properties": { - "metadata": { - "$ref": "#/components/schemas/Metadata" - }, - "data": { - "anyOf": [ - { - "type": "object" - }, - { - "type": "null" - } - ], - "title": "Data" - }, - "binary_data": { - "anyOf": [ - { - "type": "object" - }, - { - "type": "null" - } - ], - "title": "Binary Data" - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Type" - }, - "immutable": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "title": "Immutable" - } - }, - "type": "object", - "required": [ - "metadata", - "data" - ], - "title": "ConfigMap" - }, - "ConfigMapKeySelector": { - "properties": { - "key": { - "type": "string", - "title": "Key" - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Name" - }, - "optional": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "title": "Optional" - } - }, - "type": "object", - "required": [ - "key" - ], - "title": "ConfigMapKeySelector" - }, - "ConfigMapVolumeSource": { - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "items": { - "anyOf": [ - { - "items": { - "$ref": "#/components/schemas/KeyToPath" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "title": "Items", - "default": [] - }, - "optional": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "title": "Optional" - }, - "default_mode": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "title": "Default Mode" - } - }, - "type": "object", - "required": [ - "name" - ], - "title": "ConfigMapVolumeSource" - }, - "Container": { - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "image": { - "type": "string", - "title": "Image" - }, - "tag": { - "type": "string", - "title": "Tag", - "default": "latest" - }, - "command": { - "items": { - "type": "string" - }, - "type": "array", - "title": "Command" - }, - "args": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "title": "Args", - "default": [] - }, - "resources": { - "anyOf": [ - { - "type": "object" - }, - { - "type": "null" - } - ], - "title": "Resources", - "default": {} - }, - "volume_mounts": { - "anyOf": [ - { - "items": { - "$ref": "#/components/schemas/VolumeMount" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "title": "Volume Mounts", - "default": [] - }, - "env": { - "anyOf": [ - { - "items": { - "$ref": "#/components/schemas/EnvVar" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "title": "Env" - }, - "security_context": { - "anyOf": [ - { - "$ref": "#/components/schemas/SecurityContext" - }, - { - "type": "null" - } - ] - } - }, - "type": "object", - "required": [ - "name", - "image", - "command" - ], - "title": "Container" - }, - "ContainerStates": { - "properties": { - "terminated": { - "anyOf": [ - { - "$ref": "#/components/schemas/StateTerminated" - }, - { - "type": "null" - } - ] - }, - "running": { - "anyOf": [ - { - "$ref": "#/components/schemas/StateRunning" - }, - { - "type": "null" - } - ] - }, - "waiting": { - "anyOf": [ - { - "$ref": "#/components/schemas/StateWaiting" - }, - { - "type": "null" - } - ] - } - }, - "type": "object", - "title": "ContainerStates" - }, - "ContainerStatus": { - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "state": { - "$ref": "#/components/schemas/ContainerStates" - } - }, - "type": "object", - "required": [ - "name", - "state" - ], - "title": "ContainerStatus" - }, - "CreateStruct": { - "properties": { - "pod_uid": { - "type": "string", - "title": "Pod Uid" - }, - "pod_jid": { - "type": "string", - "title": "Pod Jid" - } - }, - "type": "object", - "required": [ - "pod_uid", - "pod_jid" - ], - "title": "CreateStruct" - }, - "EnvVar": { - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "value": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Value" - }, - "value_from": { - "anyOf": [ - { - "$ref": "#/components/schemas/EnvVarSource" - }, - { - "type": "null" - } - ] - } - }, - "type": "object", - "required": [ - "name" - ], - "title": "EnvVar" - }, - "EnvVarSource": { - "properties": { - "config_map_key_ref": { - "anyOf": [ - { - "$ref": "#/components/schemas/ConfigMapKeySelector" - }, - { - "type": "null" - } - ] - }, - "secret_key_ref": { - "anyOf": [ - { - "$ref": "#/components/schemas/SecretKeySelector" - }, - { - "type": "null" - } - ] - } - }, - "type": "object", - "title": "EnvVarSource" - }, - "HTTPValidationError": { - "properties": { - "detail": { - "items": { - "$ref": "#/components/schemas/ValidationError" - }, - "type": "array", - "title": "Detail" - } - }, - "type": "object", - "title": "HTTPValidationError" - }, - "KeyToPath": { - "properties": { - "key": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Key" - }, - "path": { - "type": "string", - "title": "Path" - }, - "mode": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "title": "Mode" - } - }, - "type": "object", - "required": [ - "key", - "path" - ], - "title": "KeyToPath" - }, - "LogOpts": { - "properties": { - "tail": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "title": "Tail" - }, - "limit_bytes": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "title": "Limit Bytes" - }, - "timestamps": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "title": "Timestamps" - }, - "previous": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "title": "Previous" - }, - "since_seconds": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "title": "Since Seconds" - }, - "since_time": { - "anyOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "type": "null" - } - ], - "title": "Since Time" - } - }, - "type": "object", - "title": "LogOpts" - }, - "LogRequest": { - "properties": { - "namespace": { - "type": "string", - "title": "Namespace" - }, - "pod_uid": { - "type": "string", - "title": "Pod Uid" - }, - "pod_name": { - "type": "string", - "title": "Pod Name" - }, - "container_name": { - "type": "string", - "title": "Container Name" - }, - "opts": { - "$ref": "#/components/schemas/LogOpts" - } - }, - "type": "object", - "required": [ - "namespace", - "pod_uid", - "pod_name", - "container_name", - "opts" - ], - "title": "LogRequest" - }, - "Metadata": { - "properties": { - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Name" - }, - "namespace": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Namespace" - }, - "uid": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Uid" - }, - "annotations": { - "anyOf": [ - { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - { - "type": "null" - } - ], - "title": "Annotations", - "default": {} - }, - "labels": { - "anyOf": [ - { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - { - "type": "null" - } - ], - "title": "Labels", - "default": {} - }, - "generate_name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Generate Name" - } - }, - "type": "object", - "title": "Metadata" - }, - "Pod": { - "properties": { - "pod": { - "$ref": "#/components/schemas/PodRequest" - }, - "container": { - "items": { - "$ref": "#/components/schemas/Volume" - }, - "type": "array", - "title": "Container" - } - }, - "type": "object", - "required": [ - "pod", - "container" - ], - "title": "Pod" - }, - "PodRequest": { - "properties": { - "metadata": { - "$ref": "#/components/schemas/Metadata" - }, - "spec": { - "$ref": "#/components/schemas/PodSpec" - } - }, - "type": "object", - "required": [ - "metadata", - "spec" - ], - "title": "PodRequest" - }, - "PodSpec": { - "properties": { - "containers": { - "items": { - "$ref": "#/components/schemas/Container" - }, - "type": "array", - "title": "Containers" - }, - "init_containers": { - "anyOf": [ - { - "items": { - "$ref": "#/components/schemas/Container" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "title": "Init Containers" - }, - "volumes": { - "anyOf": [ - { - "items": { - "$ref": "#/components/schemas/PodVolume" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "title": "Volumes" - }, - "preemption_policy": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Preemption Policy" - }, - "priority_class_name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Priority Class Name" - }, - "priority": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "title": "Priority" - }, - "restart_policy": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Restart Policy" - }, - "termination_grace_period_seconds": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "title": "Termination Grace Period Seconds" - } - }, - "type": "object", - "required": [ - "containers" - ], - "title": "PodSpec" - }, - "PodStatus": { - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "uid": { - "type": "string", - "title": "Uid" - }, - "namespace": { - "type": "string", - "title": "Namespace" - }, - "containers": { - "items": { - "$ref": "#/components/schemas/ContainerStatus" - }, - "type": "array", - "title": "Containers" - } - }, - "type": "object", - "required": [ - "name", - "uid", - "namespace", - "containers" - ], - "title": "PodStatus" - }, - "PodVolume": { - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "empty_dir": { - "anyOf": [ - { - "type": "object" - }, - { - "type": "null" - } - ], - "title": "Empty Dir" - }, - "secret": { - "anyOf": [ - { - "$ref": "#/components/schemas/SecretVolumeSource" - }, - { - "type": "null" - } - ] - }, - "config_map": { - "anyOf": [ - { - "$ref": "#/components/schemas/ConfigMapVolumeSource" - }, - { - "type": "null" - } - ] - } - }, - "type": "object", - "required": [ - "name" - ], - "title": "PodVolume" - }, - "Secret": { - "properties": { - "metadata": { - "$ref": "#/components/schemas/Metadata" - }, - "data": { - "anyOf": [ - { - "type": "object" - }, - { - "type": "null" - } - ], - "title": "Data" - }, - "string_data": { - "anyOf": [ - { - "type": "object" - }, - { - "type": "null" - } - ], - "title": "String Data" - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Type" - }, - "immutable": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "title": "Immutable" - } - }, - "type": "object", - "required": [ - "metadata" - ], - "title": "Secret" - }, - "SecretKeySelector": { - "properties": { - "key": { - "type": "string", - "title": "Key" - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Name" - }, - "optional": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "title": "Optional" - } - }, - "type": "object", - "required": [ - "key" - ], - "title": "SecretKeySelector" - }, - "SecretVolumeSource": { - "properties": { - "secret_name": { - "type": "string", - "title": "Secret Name" - }, - "items": { - "anyOf": [ - { - "items": { - "$ref": "#/components/schemas/KeyToPath" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "title": "Items", - "default": [] - }, - "optional": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "title": "Optional" - }, - "default_mode": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "title": "Default Mode" - } - }, - "type": "object", - "required": [ - "secret_name" - ], - "title": "SecretVolumeSource" - }, - "SecurityContext": { - "properties": { - "allow_privilege_escalation": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "title": "Allow Privilege Escalation" - }, - "privileged": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "title": "Privileged" - }, - "proc_mount": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Proc Mount" - }, - "read_only_file_system": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "title": "Read Only File System" - }, - "run_as_group": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "title": "Run As Group" - }, - "run_as_non_root": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "title": "Run As Non Root" - }, - "run_as_user": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "title": "Run As User" - } - }, - "type": "object", - "title": "SecurityContext" - }, - "StateRunning": { - "properties": { - "started_at": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Started At" - } - }, - "type": "object", - "title": "StateRunning" - }, - "StateTerminated": { - "properties": { - "exit_code": { - "type": "integer", - "title": "Exit Code" - }, - "reason": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Reason" - } - }, - "type": "object", - "required": [ - "exit_code" - ], - "title": "StateTerminated" - }, - "StateWaiting": { - "properties": { - "message": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Message" - }, - "reason": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Reason" - } - }, - "type": "object", - "title": "StateWaiting" - }, - "ValidationError": { - "properties": { - "loc": { - "items": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "integer" - } - ] - }, - "type": "array", - "title": "Location" - }, - "msg": { - "type": "string", - "title": "Message" - }, - "type": { - "type": "string", - "title": "Error Type" - } - }, - "type": "object", - "required": [ - "loc", - "msg", - "type" - ], - "title": "ValidationError" - }, - "Volume": { - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "config_maps": { - "anyOf": [ - { - "items": { - "$ref": "#/components/schemas/ConfigMap" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "title": "Config Maps" - }, - "secrets": { - "anyOf": [ - { - "items": { - "$ref": "#/components/schemas/Secret" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "title": "Secrets" - }, - "empty_dirs": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "title": "Empty Dirs" - } - }, - "type": "object", - "required": [ - "name" - ], - "title": "Volume" - }, - "VolumeMount": { - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "mount_path": { - "type": "string", - "title": "Mount Path" - }, - "sub_path": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Sub Path" - }, - "read_only": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "title": "Read Only", - "default": false - }, - "mount_propagation": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Mount Propagation" - } - }, - "type": "object", - "required": [ - "name", - "mount_path" - ], - "title": "VolumeMount" - } - } - } -} +{"openapi":"3.0.3","info":{"title":"interLink Plugin API","description":"This is the API spec for the interLink API server to plugin (sidecar) communication","version":"0.6.0"},"paths":{"/create":{"post":{"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterlinkRetrievedPodData"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterlinkCreateStruct"}}}}}}},"/delete":{"post":{"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Pod"}}},"required":true},"responses":{"200":{"description":"OK"}}}},"/getLogs":{"get":{"responses":{"200":{"description":"OK","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/status":{"get":{"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/InterlinkPodStatus"}}}}}}}}},"components":{"schemas":{"InterlinkApptainerOptions":{"type":"object","properties":{"cleanenv":{"type":"boolean"},"containall":{"type":"boolean"},"executable":{"type":"string"},"fakeroot":{"type":"boolean"},"fuseMode":{"type":"string"},"noHome":{"type":"boolean"},"noInit":{"type":"boolean"},"noPrivs":{"type":"boolean"},"nvidiaSupport":{"type":"boolean"},"unsquash":{"type":"boolean"}}},"InterlinkCreateStruct":{"type":"object","properties":{"PodJID":{"type":"string"},"PodUID":{"type":"string"}}},"InterlinkPodStatus":{"type":"object","properties":{"JID":{"type":"string"},"UID":{"type":"string"},"containers":{"type":"array","items":{"$ref":"#/components/schemas/V1ContainerStatus"},"nullable":true},"initContainers":{"type":"array","items":{"$ref":"#/components/schemas/V1ContainerStatus"},"nullable":true},"name":{"type":"string"},"namespace":{"type":"string"}}},"InterlinkRetrievedContainer":{"type":"object","properties":{"configMaps":{"type":"array","items":{"$ref":"#/components/schemas/V1ConfigMap"},"nullable":true},"emptyDirs":{"type":"array","items":{"type":"string"},"nullable":true},"name":{"type":"string"},"projectedvolumemaps":{"type":"array","items":{"$ref":"#/components/schemas/V1ConfigMap"},"nullable":true},"secrets":{"type":"array","items":{"$ref":"#/components/schemas/V1Secret"},"nullable":true}}},"InterlinkRetrievedPodData":{"type":"object","properties":{"container":{"type":"array","items":{"$ref":"#/components/schemas/InterlinkRetrievedContainer"},"nullable":true},"jobConfig":{"$ref":"#/components/schemas/InterlinkScriptBuildConfig"},"jobScript":{"type":"string"},"pod":{"$ref":"#/components/schemas/V1Pod"}}},"InterlinkScriptBuildConfig":{"type":"object","properties":{"ApptainerOptions":{"$ref":"#/components/schemas/InterlinkApptainerOptions"},"SingularityHubProxy":{"$ref":"#/components/schemas/InterlinkSingularityHubConfig"},"Volumes":{"$ref":"#/components/schemas/InterlinkVolumesOptions"}}},"InterlinkSingularityHubConfig":{"type":"object","properties":{"cache_validity_seconds":{"type":"integer"},"master_token":{"type":"string"},"server":{"type":"string"}}},"InterlinkVolumesOptions":{"type":"object","properties":{"additional_directories_in_path":{"type":"array","items":{"type":"string"},"nullable":true},"apptainer_cachedir":{"type":"string"},"fuse_sleep_seconds":{"type":"integer"},"image_dir":{"type":"string"},"scratch_area":{"type":"string"}}},"IntstrIntOrString":{"type":"object"},"ResourceQuantity":{"type":"object"},"V1AWSElasticBlockStoreVolumeSource":{"type":"object","properties":{"fsType":{"type":"string"},"partition":{"type":"integer"},"readOnly":{"type":"boolean"},"volumeID":{"type":"string"}}},"V1Affinity":{"type":"object","properties":{"nodeAffinity":{"$ref":"#/components/schemas/V1NodeAffinity"},"podAffinity":{"$ref":"#/components/schemas/V1PodAffinity"},"podAntiAffinity":{"$ref":"#/components/schemas/V1PodAntiAffinity"}}},"V1AppArmorProfile":{"type":"object","properties":{"localhostProfile":{"type":"string","nullable":true},"type":{"type":"string"}}},"V1AzureDiskVolumeSource":{"type":"object","properties":{"cachingMode":{"type":"string","nullable":true},"diskName":{"type":"string"},"diskURI":{"type":"string"},"fsType":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"readOnly":{"type":"boolean","nullable":true}}},"V1AzureFileVolumeSource":{"type":"object","properties":{"readOnly":{"type":"boolean"},"secretName":{"type":"string"},"shareName":{"type":"string"}}},"V1CSIVolumeSource":{"type":"object","properties":{"driver":{"type":"string"},"fsType":{"type":"string","nullable":true},"nodePublishSecretRef":{"$ref":"#/components/schemas/V1LocalObjectReference"},"readOnly":{"type":"boolean","nullable":true},"volumeAttributes":{"type":"object","additionalProperties":{"type":"string"}}}},"V1Capabilities":{"type":"object","properties":{"add":{"type":"array","items":{"type":"string"}},"drop":{"type":"array","items":{"type":"string"}}}},"V1CephFSVolumeSource":{"type":"object","properties":{"monitors":{"type":"array","items":{"type":"string"},"nullable":true},"path":{"type":"string"},"readOnly":{"type":"boolean"},"secretFile":{"type":"string"},"secretRef":{"$ref":"#/components/schemas/V1LocalObjectReference"},"user":{"type":"string"}}},"V1CinderVolumeSource":{"type":"object","properties":{"fsType":{"type":"string"},"readOnly":{"type":"boolean"},"secretRef":{"$ref":"#/components/schemas/V1LocalObjectReference"},"volumeID":{"type":"string"}}},"V1ClusterTrustBundleProjection":{"type":"object","properties":{"labelSelector":{"$ref":"#/components/schemas/V1LabelSelector"},"name":{"type":"string","nullable":true},"optional":{"type":"boolean","nullable":true},"path":{"type":"string"},"signerName":{"type":"string","nullable":true}}},"V1ConfigMap":{"type":"object","properties":{"apiVersion":{"type":"string"},"binaryData":{"type":"object","additionalProperties":{"type":"string","format":"base64"}},"data":{"type":"object","additionalProperties":{"type":"string"}},"immutable":{"type":"boolean","nullable":true},"kind":{"type":"string"},"metadata":{"$ref":"#/components/schemas/V1ObjectMeta"}}},"V1ConfigMapEnvSource":{"type":"object","properties":{"name":{"type":"string"},"optional":{"type":"boolean","nullable":true}}},"V1ConfigMapKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean","nullable":true}}},"V1ConfigMapProjection":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/V1KeyToPath"}},"name":{"type":"string"},"optional":{"type":"boolean","nullable":true}}},"V1ConfigMapVolumeSource":{"type":"object","properties":{"defaultMode":{"type":"integer","nullable":true},"items":{"type":"array","items":{"$ref":"#/components/schemas/V1KeyToPath"}},"name":{"type":"string"},"optional":{"type":"boolean","nullable":true}}},"V1Container":{"type":"object","properties":{"args":{"type":"array","items":{"type":"string"}},"command":{"type":"array","items":{"type":"string"}},"env":{"type":"array","items":{"$ref":"#/components/schemas/V1EnvVar"}},"envFrom":{"type":"array","items":{"$ref":"#/components/schemas/V1EnvFromSource"}},"image":{"type":"string"},"imagePullPolicy":{"type":"string"},"lifecycle":{"$ref":"#/components/schemas/V1Lifecycle"},"livenessProbe":{"$ref":"#/components/schemas/V1Probe"},"name":{"type":"string"},"ports":{"type":"array","items":{"$ref":"#/components/schemas/V1ContainerPort"}},"readinessProbe":{"$ref":"#/components/schemas/V1Probe"},"resizePolicy":{"type":"array","items":{"$ref":"#/components/schemas/V1ContainerResizePolicy"}},"resources":{"$ref":"#/components/schemas/V1ResourceRequirements"},"restartPolicy":{"type":"string","nullable":true},"securityContext":{"$ref":"#/components/schemas/V1SecurityContext"},"startupProbe":{"$ref":"#/components/schemas/V1Probe"},"stdin":{"type":"boolean"},"stdinOnce":{"type":"boolean"},"terminationMessagePath":{"type":"string"},"terminationMessagePolicy":{"type":"string"},"tty":{"type":"boolean"},"volumeDevices":{"type":"array","items":{"$ref":"#/components/schemas/V1VolumeDevice"}},"volumeMounts":{"type":"array","items":{"$ref":"#/components/schemas/V1VolumeMount"}},"workingDir":{"type":"string"}}},"V1ContainerPort":{"type":"object","properties":{"containerPort":{"type":"integer"},"hostIP":{"type":"string"},"hostPort":{"type":"integer"},"name":{"type":"string"},"protocol":{"type":"string"}}},"V1ContainerResizePolicy":{"type":"object","properties":{"resourceName":{"type":"string"},"restartPolicy":{"type":"string"}}},"V1ContainerState":{"type":"object","properties":{"running":{"$ref":"#/components/schemas/V1ContainerStateRunning"},"terminated":{"$ref":"#/components/schemas/V1ContainerStateTerminated"},"waiting":{"$ref":"#/components/schemas/V1ContainerStateWaiting"}}},"V1ContainerStateRunning":{"type":"object","properties":{"startedAt":{"type":"string"}}},"V1ContainerStateTerminated":{"type":"object","properties":{"containerID":{"type":"string"},"exitCode":{"type":"integer"},"finishedAt":{"type":"string"},"message":{"type":"string"},"reason":{"type":"string"},"signal":{"type":"integer"},"startedAt":{"type":"string"}}},"V1ContainerStateWaiting":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string"}}},"V1ContainerStatus":{"type":"object","properties":{"allocatedResources":{"$ref":"#/components/schemas/V1ResourceList"},"allocatedResourcesStatus":{"type":"array","items":{"$ref":"#/components/schemas/V1ResourceStatus"}},"containerID":{"type":"string"},"image":{"type":"string"},"imageID":{"type":"string"},"lastState":{"$ref":"#/components/schemas/V1ContainerState"},"name":{"type":"string"},"ready":{"type":"boolean"},"resources":{"$ref":"#/components/schemas/V1ResourceRequirements"},"restartCount":{"type":"integer"},"started":{"type":"boolean","nullable":true},"state":{"$ref":"#/components/schemas/V1ContainerState"},"stopSignal":{"type":"string","nullable":true},"user":{"$ref":"#/components/schemas/V1ContainerUser"},"volumeMounts":{"type":"array","items":{"$ref":"#/components/schemas/V1VolumeMountStatus"}}}},"V1ContainerUser":{"type":"object","properties":{"linux":{"$ref":"#/components/schemas/V1LinuxContainerUser"}}},"V1DownwardAPIProjection":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/V1DownwardAPIVolumeFile"}}}},"V1DownwardAPIVolumeFile":{"type":"object","properties":{"fieldRef":{"$ref":"#/components/schemas/V1ObjectFieldSelector"},"mode":{"type":"integer","nullable":true},"path":{"type":"string"},"resourceFieldRef":{"$ref":"#/components/schemas/V1ResourceFieldSelector"}}},"V1DownwardAPIVolumeSource":{"type":"object","properties":{"defaultMode":{"type":"integer","nullable":true},"items":{"type":"array","items":{"$ref":"#/components/schemas/V1DownwardAPIVolumeFile"}}}},"V1EmptyDirVolumeSource":{"type":"object","properties":{"medium":{"type":"string"},"sizeLimit":{"$ref":"#/components/schemas/ResourceQuantity"}}},"V1EnvFromSource":{"type":"object","properties":{"configMapRef":{"$ref":"#/components/schemas/V1ConfigMapEnvSource"},"prefix":{"type":"string"},"secretRef":{"$ref":"#/components/schemas/V1SecretEnvSource"}}},"V1EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/V1EnvVarSource"}}},"V1EnvVarSource":{"type":"object","properties":{"configMapKeyRef":{"$ref":"#/components/schemas/V1ConfigMapKeySelector"},"fieldRef":{"$ref":"#/components/schemas/V1ObjectFieldSelector"},"resourceFieldRef":{"$ref":"#/components/schemas/V1ResourceFieldSelector"},"secretKeyRef":{"$ref":"#/components/schemas/V1SecretKeySelector"}}},"V1EphemeralContainer":{"type":"object","properties":{"args":{"type":"array","items":{"type":"string"}},"command":{"type":"array","items":{"type":"string"}},"env":{"type":"array","items":{"$ref":"#/components/schemas/V1EnvVar"}},"envFrom":{"type":"array","items":{"$ref":"#/components/schemas/V1EnvFromSource"}},"image":{"type":"string"},"imagePullPolicy":{"type":"string"},"lifecycle":{"$ref":"#/components/schemas/V1Lifecycle"},"livenessProbe":{"$ref":"#/components/schemas/V1Probe"},"name":{"type":"string"},"ports":{"type":"array","items":{"$ref":"#/components/schemas/V1ContainerPort"}},"readinessProbe":{"$ref":"#/components/schemas/V1Probe"},"resizePolicy":{"type":"array","items":{"$ref":"#/components/schemas/V1ContainerResizePolicy"}},"resources":{"$ref":"#/components/schemas/V1ResourceRequirements"},"restartPolicy":{"type":"string","nullable":true},"securityContext":{"$ref":"#/components/schemas/V1SecurityContext"},"startupProbe":{"$ref":"#/components/schemas/V1Probe"},"stdin":{"type":"boolean"},"stdinOnce":{"type":"boolean"},"targetContainerName":{"type":"string"},"terminationMessagePath":{"type":"string"},"terminationMessagePolicy":{"type":"string"},"tty":{"type":"boolean"},"volumeDevices":{"type":"array","items":{"$ref":"#/components/schemas/V1VolumeDevice"}},"volumeMounts":{"type":"array","items":{"$ref":"#/components/schemas/V1VolumeMount"}},"workingDir":{"type":"string"}}},"V1EphemeralVolumeSource":{"type":"object","properties":{"volumeClaimTemplate":{"$ref":"#/components/schemas/V1PersistentVolumeClaimTemplate"}}},"V1ExecAction":{"type":"object","properties":{"command":{"type":"array","items":{"type":"string"}}}},"V1FCVolumeSource":{"type":"object","properties":{"fsType":{"type":"string"},"lun":{"type":"integer","nullable":true},"readOnly":{"type":"boolean"},"targetWWNs":{"type":"array","items":{"type":"string"}},"wwids":{"type":"array","items":{"type":"string"}}}},"V1FieldsV1":{"type":"object"},"V1FlexVolumeSource":{"type":"object","properties":{"driver":{"type":"string"},"fsType":{"type":"string"},"options":{"type":"object","additionalProperties":{"type":"string"}},"readOnly":{"type":"boolean"},"secretRef":{"$ref":"#/components/schemas/V1LocalObjectReference"}}},"V1FlockerVolumeSource":{"type":"object","properties":{"datasetName":{"type":"string"},"datasetUUID":{"type":"string"}}},"V1GCEPersistentDiskVolumeSource":{"type":"object","properties":{"fsType":{"type":"string"},"partition":{"type":"integer"},"pdName":{"type":"string"},"readOnly":{"type":"boolean"}}},"V1GRPCAction":{"type":"object","properties":{"port":{"type":"integer"},"service":{"type":"string","nullable":true}}},"V1GitRepoVolumeSource":{"type":"object","properties":{"directory":{"type":"string"},"repository":{"type":"string"},"revision":{"type":"string"}}},"V1GlusterfsVolumeSource":{"type":"object","properties":{"endpoints":{"type":"string"},"path":{"type":"string"},"readOnly":{"type":"boolean"}}},"V1HTTPGetAction":{"type":"object","properties":{"host":{"type":"string"},"httpHeaders":{"type":"array","items":{"$ref":"#/components/schemas/V1HTTPHeader"}},"path":{"type":"string"},"port":{"$ref":"#/components/schemas/IntstrIntOrString"},"scheme":{"type":"string"}}},"V1HTTPHeader":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"}}},"V1HostAlias":{"type":"object","properties":{"hostnames":{"type":"array","items":{"type":"string"}},"ip":{"type":"string"}}},"V1HostIP":{"type":"object","properties":{"ip":{"type":"string"}}},"V1HostPathVolumeSource":{"type":"object","properties":{"path":{"type":"string"},"type":{"type":"string","nullable":true}}},"V1ISCSIVolumeSource":{"type":"object","properties":{"chapAuthDiscovery":{"type":"boolean"},"chapAuthSession":{"type":"boolean"},"fsType":{"type":"string"},"initiatorName":{"type":"string","nullable":true},"iqn":{"type":"string"},"iscsiInterface":{"type":"string"},"lun":{"type":"integer"},"portals":{"type":"array","items":{"type":"string"}},"readOnly":{"type":"boolean"},"secretRef":{"$ref":"#/components/schemas/V1LocalObjectReference"},"targetPortal":{"type":"string"}}},"V1ImageVolumeSource":{"type":"object","properties":{"pullPolicy":{"type":"string"},"reference":{"type":"string"}}},"V1KeyToPath":{"type":"object","properties":{"key":{"type":"string"},"mode":{"type":"integer","nullable":true},"path":{"type":"string"}}},"V1LabelSelector":{"type":"object","properties":{"matchExpressions":{"type":"array","items":{"$ref":"#/components/schemas/V1LabelSelectorRequirement"}},"matchLabels":{"type":"object","additionalProperties":{"type":"string"}}}},"V1LabelSelectorRequirement":{"type":"object","properties":{"key":{"type":"string"},"operator":{"type":"string"},"values":{"type":"array","items":{"type":"string"}}}},"V1Lifecycle":{"type":"object","properties":{"postStart":{"$ref":"#/components/schemas/V1LifecycleHandler"},"preStop":{"$ref":"#/components/schemas/V1LifecycleHandler"},"stopSignal":{"type":"string","nullable":true}}},"V1LifecycleHandler":{"type":"object","properties":{"exec":{"$ref":"#/components/schemas/V1ExecAction"},"httpGet":{"$ref":"#/components/schemas/V1HTTPGetAction"},"sleep":{"$ref":"#/components/schemas/V1SleepAction"},"tcpSocket":{"$ref":"#/components/schemas/V1TCPSocketAction"}}},"V1LinuxContainerUser":{"type":"object","properties":{"gid":{"type":"integer"},"supplementalGroups":{"type":"array","items":{"type":"integer"}},"uid":{"type":"integer"}}},"V1LocalObjectReference":{"type":"object","properties":{"name":{"type":"string"}}},"V1ManagedFieldsEntry":{"type":"object","properties":{"apiVersion":{"type":"string"},"fieldsType":{"type":"string"},"fieldsV1":{"$ref":"#/components/schemas/V1FieldsV1"},"manager":{"type":"string"},"operation":{"type":"string"},"subresource":{"type":"string"},"time":{"type":"string"}}},"V1NFSVolumeSource":{"type":"object","properties":{"path":{"type":"string"},"readOnly":{"type":"boolean"},"server":{"type":"string"}}},"V1NodeAffinity":{"type":"object","properties":{"preferredDuringSchedulingIgnoredDuringExecution":{"type":"array","items":{"$ref":"#/components/schemas/V1PreferredSchedulingTerm"}},"requiredDuringSchedulingIgnoredDuringExecution":{"$ref":"#/components/schemas/V1NodeSelector"}}},"V1NodeSelector":{"type":"object","properties":{"nodeSelectorTerms":{"type":"array","items":{"$ref":"#/components/schemas/V1NodeSelectorTerm"},"nullable":true}}},"V1NodeSelectorRequirement":{"type":"object","properties":{"key":{"type":"string"},"operator":{"type":"string"},"values":{"type":"array","items":{"type":"string"}}}},"V1NodeSelectorTerm":{"type":"object","properties":{"matchExpressions":{"type":"array","items":{"$ref":"#/components/schemas/V1NodeSelectorRequirement"}},"matchFields":{"type":"array","items":{"$ref":"#/components/schemas/V1NodeSelectorRequirement"}}}},"V1ObjectFieldSelector":{"type":"object","properties":{"apiVersion":{"type":"string"},"fieldPath":{"type":"string"}}},"V1ObjectMeta":{"type":"object","properties":{"annotations":{"type":"object","additionalProperties":{"type":"string"}},"creationTimestamp":{"type":"string"},"deletionGracePeriodSeconds":{"type":"integer","nullable":true},"deletionTimestamp":{"type":"string"},"finalizers":{"type":"array","items":{"type":"string"}},"generateName":{"type":"string"},"generation":{"type":"integer"},"labels":{"type":"object","additionalProperties":{"type":"string"}},"managedFields":{"type":"array","items":{"$ref":"#/components/schemas/V1ManagedFieldsEntry"}},"name":{"type":"string"},"namespace":{"type":"string"},"ownerReferences":{"type":"array","items":{"$ref":"#/components/schemas/V1OwnerReference"}},"resourceVersion":{"type":"string"},"selfLink":{"type":"string"},"uid":{"type":"string"}}},"V1OwnerReference":{"type":"object","properties":{"apiVersion":{"type":"string"},"blockOwnerDeletion":{"type":"boolean","nullable":true},"controller":{"type":"boolean","nullable":true},"kind":{"type":"string"},"name":{"type":"string"},"uid":{"type":"string"}}},"V1PersistentVolumeClaimSpec":{"type":"object","properties":{"accessModes":{"type":"array","items":{"type":"string"}},"dataSource":{"$ref":"#/components/schemas/V1TypedLocalObjectReference"},"dataSourceRef":{"$ref":"#/components/schemas/V1TypedObjectReference"},"resources":{"$ref":"#/components/schemas/V1VolumeResourceRequirements"},"selector":{"$ref":"#/components/schemas/V1LabelSelector"},"storageClassName":{"type":"string","nullable":true},"volumeAttributesClassName":{"type":"string","nullable":true},"volumeMode":{"type":"string","nullable":true},"volumeName":{"type":"string"}}},"V1PersistentVolumeClaimTemplate":{"type":"object","properties":{"metadata":{"$ref":"#/components/schemas/V1ObjectMeta"},"spec":{"$ref":"#/components/schemas/V1PersistentVolumeClaimSpec"}}},"V1PersistentVolumeClaimVolumeSource":{"type":"object","properties":{"claimName":{"type":"string"},"readOnly":{"type":"boolean"}}},"V1PhotonPersistentDiskVolumeSource":{"type":"object","properties":{"fsType":{"type":"string"},"pdID":{"type":"string"}}},"V1Pod":{"type":"object","properties":{"apiVersion":{"type":"string"},"kind":{"type":"string"},"metadata":{"$ref":"#/components/schemas/V1ObjectMeta"},"spec":{"$ref":"#/components/schemas/V1PodSpec"},"status":{"$ref":"#/components/schemas/V1PodStatus"}}},"V1PodAffinity":{"type":"object","properties":{"preferredDuringSchedulingIgnoredDuringExecution":{"type":"array","items":{"$ref":"#/components/schemas/V1WeightedPodAffinityTerm"}},"requiredDuringSchedulingIgnoredDuringExecution":{"type":"array","items":{"$ref":"#/components/schemas/V1PodAffinityTerm"}}}},"V1PodAffinityTerm":{"type":"object","properties":{"labelSelector":{"$ref":"#/components/schemas/V1LabelSelector"},"matchLabelKeys":{"type":"array","items":{"type":"string"}},"mismatchLabelKeys":{"type":"array","items":{"type":"string"}},"namespaceSelector":{"$ref":"#/components/schemas/V1LabelSelector"},"namespaces":{"type":"array","items":{"type":"string"}},"topologyKey":{"type":"string"}}},"V1PodAntiAffinity":{"type":"object","properties":{"preferredDuringSchedulingIgnoredDuringExecution":{"type":"array","items":{"$ref":"#/components/schemas/V1WeightedPodAffinityTerm"}},"requiredDuringSchedulingIgnoredDuringExecution":{"type":"array","items":{"$ref":"#/components/schemas/V1PodAffinityTerm"}}}},"V1PodCondition":{"type":"object","properties":{"lastProbeTime":{"type":"string"},"lastTransitionTime":{"type":"string"},"message":{"type":"string"},"observedGeneration":{"type":"integer"},"reason":{"type":"string"},"status":{"type":"string"},"type":{"type":"string"}}},"V1PodDNSConfig":{"type":"object","properties":{"nameservers":{"type":"array","items":{"type":"string"}},"options":{"type":"array","items":{"$ref":"#/components/schemas/V1PodDNSConfigOption"}},"searches":{"type":"array","items":{"type":"string"}}}},"V1PodDNSConfigOption":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string","nullable":true}}},"V1PodIP":{"type":"object","properties":{"ip":{"type":"string"}}},"V1PodOS":{"type":"object","properties":{"name":{"type":"string"}}},"V1PodReadinessGate":{"type":"object","properties":{"conditionType":{"type":"string"}}},"V1PodResourceClaim":{"type":"object","properties":{"name":{"type":"string"},"resourceClaimName":{"type":"string","nullable":true},"resourceClaimTemplateName":{"type":"string","nullable":true}}},"V1PodResourceClaimStatus":{"type":"object","properties":{"name":{"type":"string"},"resourceClaimName":{"type":"string","nullable":true}}},"V1PodSchedulingGate":{"type":"object","properties":{"name":{"type":"string"}}},"V1PodSecurityContext":{"type":"object","properties":{"appArmorProfile":{"$ref":"#/components/schemas/V1AppArmorProfile"},"fsGroup":{"type":"integer","nullable":true},"fsGroupChangePolicy":{"type":"string","nullable":true},"runAsGroup":{"type":"integer","nullable":true},"runAsNonRoot":{"type":"boolean","nullable":true},"runAsUser":{"type":"integer","nullable":true},"seLinuxChangePolicy":{"type":"string","nullable":true},"seLinuxOptions":{"$ref":"#/components/schemas/V1SELinuxOptions"},"seccompProfile":{"$ref":"#/components/schemas/V1SeccompProfile"},"supplementalGroups":{"type":"array","items":{"type":"integer"}},"supplementalGroupsPolicy":{"type":"string","nullable":true},"sysctls":{"type":"array","items":{"$ref":"#/components/schemas/V1Sysctl"}},"windowsOptions":{"$ref":"#/components/schemas/V1WindowsSecurityContextOptions"}}},"V1PodSpec":{"type":"object","properties":{"activeDeadlineSeconds":{"type":"integer","nullable":true},"affinity":{"$ref":"#/components/schemas/V1Affinity"},"automountServiceAccountToken":{"type":"boolean","nullable":true},"containers":{"type":"array","items":{"$ref":"#/components/schemas/V1Container"},"nullable":true},"dnsConfig":{"$ref":"#/components/schemas/V1PodDNSConfig"},"dnsPolicy":{"type":"string"},"enableServiceLinks":{"type":"boolean","nullable":true},"ephemeralContainers":{"type":"array","items":{"$ref":"#/components/schemas/V1EphemeralContainer"}},"hostAliases":{"type":"array","items":{"$ref":"#/components/schemas/V1HostAlias"}},"hostIPC":{"type":"boolean"},"hostNetwork":{"type":"boolean"},"hostPID":{"type":"boolean"},"hostUsers":{"type":"boolean","nullable":true},"hostname":{"type":"string"},"imagePullSecrets":{"type":"array","items":{"$ref":"#/components/schemas/V1LocalObjectReference"}},"initContainers":{"type":"array","items":{"$ref":"#/components/schemas/V1Container"}},"nodeName":{"type":"string"},"nodeSelector":{"type":"object","additionalProperties":{"type":"string"}},"os":{"$ref":"#/components/schemas/V1PodOS"},"overhead":{"$ref":"#/components/schemas/V1ResourceList"},"preemptionPolicy":{"type":"string","nullable":true},"priority":{"type":"integer","nullable":true},"priorityClassName":{"type":"string"},"readinessGates":{"type":"array","items":{"$ref":"#/components/schemas/V1PodReadinessGate"}},"resourceClaims":{"type":"array","items":{"$ref":"#/components/schemas/V1PodResourceClaim"}},"resources":{"$ref":"#/components/schemas/V1ResourceRequirements"},"restartPolicy":{"type":"string"},"runtimeClassName":{"type":"string","nullable":true},"schedulerName":{"type":"string"},"schedulingGates":{"type":"array","items":{"$ref":"#/components/schemas/V1PodSchedulingGate"}},"securityContext":{"$ref":"#/components/schemas/V1PodSecurityContext"},"serviceAccount":{"type":"string"},"serviceAccountName":{"type":"string"},"setHostnameAsFQDN":{"type":"boolean","nullable":true},"shareProcessNamespace":{"type":"boolean","nullable":true},"subdomain":{"type":"string"},"terminationGracePeriodSeconds":{"type":"integer","nullable":true},"tolerations":{"type":"array","items":{"$ref":"#/components/schemas/V1Toleration"}},"topologySpreadConstraints":{"type":"array","items":{"$ref":"#/components/schemas/V1TopologySpreadConstraint"}},"volumes":{"type":"array","items":{"$ref":"#/components/schemas/V1Volume"}}}},"V1PodStatus":{"type":"object","properties":{"conditions":{"type":"array","items":{"$ref":"#/components/schemas/V1PodCondition"}},"containerStatuses":{"type":"array","items":{"$ref":"#/components/schemas/V1ContainerStatus"}},"ephemeralContainerStatuses":{"type":"array","items":{"$ref":"#/components/schemas/V1ContainerStatus"}},"hostIP":{"type":"string"},"hostIPs":{"type":"array","items":{"$ref":"#/components/schemas/V1HostIP"}},"initContainerStatuses":{"type":"array","items":{"$ref":"#/components/schemas/V1ContainerStatus"}},"message":{"type":"string"},"nominatedNodeName":{"type":"string"},"observedGeneration":{"type":"integer"},"phase":{"type":"string"},"podIP":{"type":"string"},"podIPs":{"type":"array","items":{"$ref":"#/components/schemas/V1PodIP"}},"qosClass":{"type":"string"},"reason":{"type":"string"},"resize":{"type":"string"},"resourceClaimStatuses":{"type":"array","items":{"$ref":"#/components/schemas/V1PodResourceClaimStatus"}},"startTime":{"type":"string"}}},"V1PortworxVolumeSource":{"type":"object","properties":{"fsType":{"type":"string"},"readOnly":{"type":"boolean"},"volumeID":{"type":"string"}}},"V1PreferredSchedulingTerm":{"type":"object","properties":{"preference":{"$ref":"#/components/schemas/V1NodeSelectorTerm"},"weight":{"type":"integer"}}},"V1Probe":{"type":"object","properties":{"exec":{"$ref":"#/components/schemas/V1ExecAction"},"failureThreshold":{"type":"integer"},"grpc":{"$ref":"#/components/schemas/V1GRPCAction"},"httpGet":{"$ref":"#/components/schemas/V1HTTPGetAction"},"initialDelaySeconds":{"type":"integer"},"periodSeconds":{"type":"integer"},"successThreshold":{"type":"integer"},"tcpSocket":{"$ref":"#/components/schemas/V1TCPSocketAction"},"terminationGracePeriodSeconds":{"type":"integer","nullable":true},"timeoutSeconds":{"type":"integer"}}},"V1ProjectedVolumeSource":{"type":"object","properties":{"defaultMode":{"type":"integer","nullable":true},"sources":{"type":"array","items":{"$ref":"#/components/schemas/V1VolumeProjection"},"nullable":true}}},"V1QuobyteVolumeSource":{"type":"object","properties":{"group":{"type":"string"},"readOnly":{"type":"boolean"},"registry":{"type":"string"},"tenant":{"type":"string"},"user":{"type":"string"},"volume":{"type":"string"}}},"V1RBDVolumeSource":{"type":"object","properties":{"fsType":{"type":"string"},"image":{"type":"string"},"keyring":{"type":"string"},"monitors":{"type":"array","items":{"type":"string"},"nullable":true},"pool":{"type":"string"},"readOnly":{"type":"boolean"},"secretRef":{"$ref":"#/components/schemas/V1LocalObjectReference"},"user":{"type":"string"}}},"V1ResourceClaim":{"type":"object","properties":{"name":{"type":"string"},"request":{"type":"string"}}},"V1ResourceFieldSelector":{"type":"object","properties":{"containerName":{"type":"string"},"divisor":{"$ref":"#/components/schemas/ResourceQuantity"},"resource":{"type":"string"}}},"V1ResourceHealth":{"type":"object","properties":{"health":{"type":"string"},"resourceID":{"type":"string"}}},"V1ResourceList":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/ResourceQuantity"}},"V1ResourceRequirements":{"type":"object","properties":{"claims":{"type":"array","items":{"$ref":"#/components/schemas/V1ResourceClaim"}},"limits":{"$ref":"#/components/schemas/V1ResourceList"},"requests":{"$ref":"#/components/schemas/V1ResourceList"}}},"V1ResourceStatus":{"type":"object","properties":{"name":{"type":"string"},"resources":{"type":"array","items":{"$ref":"#/components/schemas/V1ResourceHealth"}}}},"V1SELinuxOptions":{"type":"object","properties":{"level":{"type":"string"},"role":{"type":"string"},"type":{"type":"string"},"user":{"type":"string"}}},"V1ScaleIOVolumeSource":{"type":"object","properties":{"fsType":{"type":"string"},"gateway":{"type":"string"},"protectionDomain":{"type":"string"},"readOnly":{"type":"boolean"},"secretRef":{"$ref":"#/components/schemas/V1LocalObjectReference"},"sslEnabled":{"type":"boolean"},"storageMode":{"type":"string"},"storagePool":{"type":"string"},"system":{"type":"string"},"volumeName":{"type":"string"}}},"V1SeccompProfile":{"type":"object","properties":{"localhostProfile":{"type":"string","nullable":true},"type":{"type":"string"}}},"V1Secret":{"type":"object","properties":{"apiVersion":{"type":"string"},"data":{"type":"object","additionalProperties":{"type":"string","format":"base64"}},"immutable":{"type":"boolean","nullable":true},"kind":{"type":"string"},"metadata":{"$ref":"#/components/schemas/V1ObjectMeta"},"stringData":{"type":"object","additionalProperties":{"type":"string"}},"type":{"type":"string"}}},"V1SecretEnvSource":{"type":"object","properties":{"name":{"type":"string"},"optional":{"type":"boolean","nullable":true}}},"V1SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean","nullable":true}}},"V1SecretProjection":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/V1KeyToPath"}},"name":{"type":"string"},"optional":{"type":"boolean","nullable":true}}},"V1SecretVolumeSource":{"type":"object","properties":{"defaultMode":{"type":"integer","nullable":true},"items":{"type":"array","items":{"$ref":"#/components/schemas/V1KeyToPath"}},"optional":{"type":"boolean","nullable":true},"secretName":{"type":"string"}}},"V1SecurityContext":{"type":"object","properties":{"allowPrivilegeEscalation":{"type":"boolean","nullable":true},"appArmorProfile":{"$ref":"#/components/schemas/V1AppArmorProfile"},"capabilities":{"$ref":"#/components/schemas/V1Capabilities"},"privileged":{"type":"boolean","nullable":true},"procMount":{"type":"string","nullable":true},"readOnlyRootFilesystem":{"type":"boolean","nullable":true},"runAsGroup":{"type":"integer","nullable":true},"runAsNonRoot":{"type":"boolean","nullable":true},"runAsUser":{"type":"integer","nullable":true},"seLinuxOptions":{"$ref":"#/components/schemas/V1SELinuxOptions"},"seccompProfile":{"$ref":"#/components/schemas/V1SeccompProfile"},"windowsOptions":{"$ref":"#/components/schemas/V1WindowsSecurityContextOptions"}}},"V1ServiceAccountTokenProjection":{"type":"object","properties":{"audience":{"type":"string"},"expirationSeconds":{"type":"integer","nullable":true},"path":{"type":"string"}}},"V1SleepAction":{"type":"object","properties":{"seconds":{"type":"integer"}}},"V1StorageOSVolumeSource":{"type":"object","properties":{"fsType":{"type":"string"},"readOnly":{"type":"boolean"},"secretRef":{"$ref":"#/components/schemas/V1LocalObjectReference"},"volumeName":{"type":"string"},"volumeNamespace":{"type":"string"}}},"V1Sysctl":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"}}},"V1TCPSocketAction":{"type":"object","properties":{"host":{"type":"string"},"port":{"$ref":"#/components/schemas/IntstrIntOrString"}}},"V1Toleration":{"type":"object","properties":{"effect":{"type":"string"},"key":{"type":"string"},"operator":{"type":"string"},"tolerationSeconds":{"type":"integer","nullable":true},"value":{"type":"string"}}},"V1TopologySpreadConstraint":{"type":"object","properties":{"labelSelector":{"$ref":"#/components/schemas/V1LabelSelector"},"matchLabelKeys":{"type":"array","items":{"type":"string"}},"maxSkew":{"type":"integer"},"minDomains":{"type":"integer","nullable":true},"nodeAffinityPolicy":{"type":"string","nullable":true},"nodeTaintsPolicy":{"type":"string","nullable":true},"topologyKey":{"type":"string"},"whenUnsatisfiable":{"type":"string"}}},"V1TypedLocalObjectReference":{"type":"object","properties":{"apiGroup":{"type":"string","nullable":true},"kind":{"type":"string"},"name":{"type":"string"}}},"V1TypedObjectReference":{"type":"object","properties":{"apiGroup":{"type":"string","nullable":true},"kind":{"type":"string"},"name":{"type":"string"},"namespace":{"type":"string","nullable":true}}},"V1Volume":{"type":"object","properties":{"awsElasticBlockStore":{"$ref":"#/components/schemas/V1AWSElasticBlockStoreVolumeSource"},"azureDisk":{"$ref":"#/components/schemas/V1AzureDiskVolumeSource"},"azureFile":{"$ref":"#/components/schemas/V1AzureFileVolumeSource"},"cephfs":{"$ref":"#/components/schemas/V1CephFSVolumeSource"},"cinder":{"$ref":"#/components/schemas/V1CinderVolumeSource"},"configMap":{"$ref":"#/components/schemas/V1ConfigMapVolumeSource"},"csi":{"$ref":"#/components/schemas/V1CSIVolumeSource"},"downwardAPI":{"$ref":"#/components/schemas/V1DownwardAPIVolumeSource"},"emptyDir":{"$ref":"#/components/schemas/V1EmptyDirVolumeSource"},"ephemeral":{"$ref":"#/components/schemas/V1EphemeralVolumeSource"},"fc":{"$ref":"#/components/schemas/V1FCVolumeSource"},"flexVolume":{"$ref":"#/components/schemas/V1FlexVolumeSource"},"flocker":{"$ref":"#/components/schemas/V1FlockerVolumeSource"},"gcePersistentDisk":{"$ref":"#/components/schemas/V1GCEPersistentDiskVolumeSource"},"gitRepo":{"$ref":"#/components/schemas/V1GitRepoVolumeSource"},"glusterfs":{"$ref":"#/components/schemas/V1GlusterfsVolumeSource"},"hostPath":{"$ref":"#/components/schemas/V1HostPathVolumeSource"},"image":{"$ref":"#/components/schemas/V1ImageVolumeSource"},"iscsi":{"$ref":"#/components/schemas/V1ISCSIVolumeSource"},"name":{"type":"string"},"nfs":{"$ref":"#/components/schemas/V1NFSVolumeSource"},"persistentVolumeClaim":{"$ref":"#/components/schemas/V1PersistentVolumeClaimVolumeSource"},"photonPersistentDisk":{"$ref":"#/components/schemas/V1PhotonPersistentDiskVolumeSource"},"portworxVolume":{"$ref":"#/components/schemas/V1PortworxVolumeSource"},"projected":{"$ref":"#/components/schemas/V1ProjectedVolumeSource"},"quobyte":{"$ref":"#/components/schemas/V1QuobyteVolumeSource"},"rbd":{"$ref":"#/components/schemas/V1RBDVolumeSource"},"scaleIO":{"$ref":"#/components/schemas/V1ScaleIOVolumeSource"},"secret":{"$ref":"#/components/schemas/V1SecretVolumeSource"},"storageos":{"$ref":"#/components/schemas/V1StorageOSVolumeSource"},"vsphereVolume":{"$ref":"#/components/schemas/V1VsphereVirtualDiskVolumeSource"}}},"V1VolumeDevice":{"type":"object","properties":{"devicePath":{"type":"string"},"name":{"type":"string"}}},"V1VolumeMount":{"type":"object","properties":{"mountPath":{"type":"string"},"mountPropagation":{"type":"string","nullable":true},"name":{"type":"string"},"readOnly":{"type":"boolean"},"recursiveReadOnly":{"type":"string","nullable":true},"subPath":{"type":"string"},"subPathExpr":{"type":"string"}}},"V1VolumeMountStatus":{"type":"object","properties":{"mountPath":{"type":"string"},"name":{"type":"string"},"readOnly":{"type":"boolean"},"recursiveReadOnly":{"type":"string","nullable":true}}},"V1VolumeProjection":{"type":"object","properties":{"clusterTrustBundle":{"$ref":"#/components/schemas/V1ClusterTrustBundleProjection"},"configMap":{"$ref":"#/components/schemas/V1ConfigMapProjection"},"downwardAPI":{"$ref":"#/components/schemas/V1DownwardAPIProjection"},"secret":{"$ref":"#/components/schemas/V1SecretProjection"},"serviceAccountToken":{"$ref":"#/components/schemas/V1ServiceAccountTokenProjection"}}},"V1VolumeResourceRequirements":{"type":"object","properties":{"limits":{"$ref":"#/components/schemas/V1ResourceList"},"requests":{"$ref":"#/components/schemas/V1ResourceList"}}},"V1VsphereVirtualDiskVolumeSource":{"type":"object","properties":{"fsType":{"type":"string"},"storagePolicyID":{"type":"string"},"storagePolicyName":{"type":"string"},"volumePath":{"type":"string"}}},"V1WeightedPodAffinityTerm":{"type":"object","properties":{"podAffinityTerm":{"$ref":"#/components/schemas/V1PodAffinityTerm"},"weight":{"type":"integer"}}},"V1WindowsSecurityContextOptions":{"type":"object","properties":{"gmsaCredentialSpec":{"type":"string","nullable":true},"gmsaCredentialSpecName":{"type":"string","nullable":true},"hostProcess":{"type":"boolean","nullable":true},"runAsUserName":{"type":"string","nullable":true}}}}}} \ No newline at end of file