diff --git a/lib/docker_engine_ruby/models/config_create_params.rb b/lib/docker_engine_ruby/models/config_create_params.rb index 6665491..dff9eac 100644 --- a/lib/docker_engine_ruby/models/config_create_params.rb +++ b/lib/docker_engine_ruby/models/config_create_params.rb @@ -7,7 +7,13 @@ class ConfigCreateParams < DockerEngineRuby::Internal::Type::BaseModel extend DockerEngineRuby::Internal::Type::RequestParameters::Converter include DockerEngineRuby::Internal::Type::RequestParameters - # @!method initialize(request_options: {}) + # @!attribute spec + # + # @return [DockerEngineRuby::Models::ConfigSpec] + required :spec, -> { DockerEngineRuby::ConfigSpec } + + # @!method initialize(spec:, request_options: {}) + # @param spec [DockerEngineRuby::Models::ConfigSpec] # @param request_options [DockerEngineRuby::RequestOptions, Hash{Symbol=>Object}] end end diff --git a/lib/docker_engine_ruby/models/config_update_params.rb b/lib/docker_engine_ruby/models/config_update_params.rb index 2936f25..3e8f961 100644 --- a/lib/docker_engine_ruby/models/config_update_params.rb +++ b/lib/docker_engine_ruby/models/config_update_params.rb @@ -7,6 +7,11 @@ class ConfigUpdateParams < DockerEngineRuby::Internal::Type::BaseModel extend DockerEngineRuby::Internal::Type::RequestParameters::Converter include DockerEngineRuby::Internal::Type::RequestParameters + # @!attribute spec + # + # @return [DockerEngineRuby::Models::ConfigSpec] + required :spec, -> { DockerEngineRuby::ConfigSpec } + # @!attribute id # # @return [String] @@ -17,7 +22,8 @@ class ConfigUpdateParams < DockerEngineRuby::Internal::Type::BaseModel # @return [Integer] required :version, Integer - # @!method initialize(id:, version:, request_options: {}) + # @!method initialize(spec:, id:, version:, request_options: {}) + # @param spec [DockerEngineRuby::Models::ConfigSpec] # @param id [String] # @param version [Integer] # @param request_options [DockerEngineRuby::RequestOptions, Hash{Symbol=>Object}] diff --git a/lib/docker_engine_ruby/models/container_create_params.rb b/lib/docker_engine_ruby/models/container_create_params.rb index c32faca..44bc194 100644 --- a/lib/docker_engine_ruby/models/container_create_params.rb +++ b/lib/docker_engine_ruby/models/container_create_params.rb @@ -7,6 +7,17 @@ class ContainerCreateParams < DockerEngineRuby::Internal::Type::BaseModel extend DockerEngineRuby::Internal::Type::RequestParameters::Converter include DockerEngineRuby::Internal::Type::RequestParameters + # @!attribute config + # + # @return [DockerEngineRuby::Models::Config] + required :config, -> { DockerEngineRuby::Config } + + # @!attribute host_config + # Контейнерные настройки хоста: монтирования, сеть, лимиты. + # + # @return [DockerEngineRuby::Models::Container::HostConfig, nil] + optional :host_config, -> { DockerEngineRuby::Container::HostConfig } + # @!attribute name # # @return [String, nil] @@ -17,7 +28,9 @@ class ContainerCreateParams < DockerEngineRuby::Internal::Type::BaseModel # @return [String, nil] optional :platform, String - # @!method initialize(name: nil, platform: nil, request_options: {}) + # @!method initialize(config:, host_config: nil, name: nil, platform: nil, request_options: {}) + # @param config [DockerEngineRuby::Models::Config] + # @param host_config [DockerEngineRuby::Models::Container::HostConfig] # @param name [String] # @param platform [String] # @param request_options [DockerEngineRuby::RequestOptions, Hash{Symbol=>Object}] diff --git a/lib/docker_engine_ruby/models/node_update_params.rb b/lib/docker_engine_ruby/models/node_update_params.rb index 3f558ff..a229e3f 100644 --- a/lib/docker_engine_ruby/models/node_update_params.rb +++ b/lib/docker_engine_ruby/models/node_update_params.rb @@ -7,6 +7,11 @@ class NodeUpdateParams < DockerEngineRuby::Internal::Type::BaseModel extend DockerEngineRuby::Internal::Type::RequestParameters::Converter include DockerEngineRuby::Internal::Type::RequestParameters + # @!attribute spec + # + # @return [DockerEngineRuby::Models::NodeSpec] + required :spec, -> { DockerEngineRuby::NodeSpec } + # @!attribute id # # @return [String] @@ -17,7 +22,8 @@ class NodeUpdateParams < DockerEngineRuby::Internal::Type::BaseModel # @return [Integer] required :version, Integer - # @!method initialize(id:, version:, request_options: {}) + # @!method initialize(spec:, id:, version:, request_options: {}) + # @param spec [DockerEngineRuby::Models::NodeSpec] # @param id [String] # @param version [Integer] # @param request_options [DockerEngineRuby::RequestOptions, Hash{Symbol=>Object}] diff --git a/lib/docker_engine_ruby/models/secret_create_params.rb b/lib/docker_engine_ruby/models/secret_create_params.rb index e811bef..d91b686 100644 --- a/lib/docker_engine_ruby/models/secret_create_params.rb +++ b/lib/docker_engine_ruby/models/secret_create_params.rb @@ -7,7 +7,13 @@ class SecretCreateParams < DockerEngineRuby::Internal::Type::BaseModel extend DockerEngineRuby::Internal::Type::RequestParameters::Converter include DockerEngineRuby::Internal::Type::RequestParameters - # @!method initialize(request_options: {}) + # @!attribute spec + # + # @return [DockerEngineRuby::Models::SecretSpec] + required :spec, -> { DockerEngineRuby::SecretSpec } + + # @!method initialize(spec:, request_options: {}) + # @param spec [DockerEngineRuby::Models::SecretSpec] # @param request_options [DockerEngineRuby::RequestOptions, Hash{Symbol=>Object}] end end diff --git a/lib/docker_engine_ruby/models/secret_update_params.rb b/lib/docker_engine_ruby/models/secret_update_params.rb index d3c390f..f69638b 100644 --- a/lib/docker_engine_ruby/models/secret_update_params.rb +++ b/lib/docker_engine_ruby/models/secret_update_params.rb @@ -7,6 +7,11 @@ class SecretUpdateParams < DockerEngineRuby::Internal::Type::BaseModel extend DockerEngineRuby::Internal::Type::RequestParameters::Converter include DockerEngineRuby::Internal::Type::RequestParameters + # @!attribute spec + # + # @return [DockerEngineRuby::Models::SecretSpec] + required :spec, -> { DockerEngineRuby::SecretSpec } + # @!attribute id # # @return [String] @@ -17,7 +22,8 @@ class SecretUpdateParams < DockerEngineRuby::Internal::Type::BaseModel # @return [Integer] required :version, Integer - # @!method initialize(id:, version:, request_options: {}) + # @!method initialize(spec:, id:, version:, request_options: {}) + # @param spec [DockerEngineRuby::Models::SecretSpec] # @param id [String] # @param version [Integer] # @param request_options [DockerEngineRuby::RequestOptions, Hash{Symbol=>Object}] diff --git a/lib/docker_engine_ruby/models/service_create_params.rb b/lib/docker_engine_ruby/models/service_create_params.rb index 9c8c806..72af2cf 100644 --- a/lib/docker_engine_ruby/models/service_create_params.rb +++ b/lib/docker_engine_ruby/models/service_create_params.rb @@ -7,12 +7,18 @@ class ServiceCreateParams < DockerEngineRuby::Internal::Type::BaseModel extend DockerEngineRuby::Internal::Type::RequestParameters::Converter include DockerEngineRuby::Internal::Type::RequestParameters + # @!attribute spec + # + # @return [DockerEngineRuby::Models::ServiceSpec] + required :spec, -> { DockerEngineRuby::ServiceSpec } + # @!attribute x_registry_auth # # @return [String, nil] optional :x_registry_auth, String - # @!method initialize(x_registry_auth: nil, request_options: {}) + # @!method initialize(spec:, x_registry_auth: nil, request_options: {}) + # @param spec [DockerEngineRuby::Models::ServiceSpec] # @param x_registry_auth [String] # @param request_options [DockerEngineRuby::RequestOptions, Hash{Symbol=>Object}] end diff --git a/lib/docker_engine_ruby/models/service_update_params.rb b/lib/docker_engine_ruby/models/service_update_params.rb index dd8ca72..34a4cc8 100644 --- a/lib/docker_engine_ruby/models/service_update_params.rb +++ b/lib/docker_engine_ruby/models/service_update_params.rb @@ -7,6 +7,11 @@ class ServiceUpdateParams < DockerEngineRuby::Internal::Type::BaseModel extend DockerEngineRuby::Internal::Type::RequestParameters::Converter include DockerEngineRuby::Internal::Type::RequestParameters + # @!attribute spec + # + # @return [DockerEngineRuby::Models::ServiceSpec] + required :spec, -> { DockerEngineRuby::ServiceSpec } + # @!attribute id # # @return [String] @@ -32,7 +37,8 @@ class ServiceUpdateParams < DockerEngineRuby::Internal::Type::BaseModel # @return [String, nil] optional :x_registry_auth, String - # @!method initialize(id:, version:, registry_auth_from: nil, rollback: nil, x_registry_auth: nil, request_options: {}) + # @!method initialize(spec:, id:, version:, registry_auth_from: nil, rollback: nil, x_registry_auth: nil, request_options: {}) + # @param spec [DockerEngineRuby::Models::ServiceSpec] # @param id [String] # @param version [Integer] # @param registry_auth_from [Symbol, DockerEngineRuby::Models::ServiceUpdateParams::RegistryAuthFrom] diff --git a/lib/docker_engine_ruby/models/swarm_update_params.rb b/lib/docker_engine_ruby/models/swarm_update_params.rb index d367007..08452a2 100644 --- a/lib/docker_engine_ruby/models/swarm_update_params.rb +++ b/lib/docker_engine_ruby/models/swarm_update_params.rb @@ -7,6 +7,11 @@ class SwarmUpdateParams < DockerEngineRuby::Internal::Type::BaseModel extend DockerEngineRuby::Internal::Type::RequestParameters::Converter include DockerEngineRuby::Internal::Type::RequestParameters + # @!attribute spec + # + # @return [DockerEngineRuby::Models::SwarmSpec] + required :spec, -> { DockerEngineRuby::SwarmSpec } + # @!attribute version # # @return [Integer] @@ -27,7 +32,8 @@ class SwarmUpdateParams < DockerEngineRuby::Internal::Type::BaseModel # @return [Boolean, nil] optional :rotate_worker_token, DockerEngineRuby::Internal::Type::Boolean - # @!method initialize(version:, rotate_manager_token: nil, rotate_manager_unlock_key: nil, rotate_worker_token: nil, request_options: {}) + # @!method initialize(spec:, version:, rotate_manager_token: nil, rotate_manager_unlock_key: nil, rotate_worker_token: nil, request_options: {}) + # @param spec [DockerEngineRuby::Models::SwarmSpec] # @param version [Integer] # @param rotate_manager_token [Boolean] # @param rotate_manager_unlock_key [Boolean] diff --git a/lib/docker_engine_ruby/models/volume_create_params.rb b/lib/docker_engine_ruby/models/volume_create_params.rb index fc5d5cc..7d3342c 100644 --- a/lib/docker_engine_ruby/models/volume_create_params.rb +++ b/lib/docker_engine_ruby/models/volume_create_params.rb @@ -7,7 +7,13 @@ class VolumeCreateParams < DockerEngineRuby::Internal::Type::BaseModel extend DockerEngineRuby::Internal::Type::RequestParameters::Converter include DockerEngineRuby::Internal::Type::RequestParameters - # @!method initialize(request_options: {}) + # @!attribute create_request + # + # @return [DockerEngineRuby::Models::CreateRequest] + required :create_request, -> { DockerEngineRuby::CreateRequest } + + # @!method initialize(create_request:, request_options: {}) + # @param create_request [DockerEngineRuby::Models::CreateRequest] # @param request_options [DockerEngineRuby::RequestOptions, Hash{Symbol=>Object}] end end diff --git a/lib/docker_engine_ruby/resources/containers.rb b/lib/docker_engine_ruby/resources/containers.rb index 20abbf7..8bc4714 100644 --- a/lib/docker_engine_ruby/resources/containers.rb +++ b/lib/docker_engine_ruby/resources/containers.rb @@ -5,10 +5,12 @@ module Resources class Containers # Create a container # - # @overload create(config:, name: nil, platform: nil, request_options: {}) + # @overload create(config:, host_config: nil, name: nil, platform: nil, request_options: {}) # # @param config [DockerEngineRuby::Models::Config] Body param: Configuration for a container that is portable between hosts. # + # @param host_config [DockerEngineRuby::Models::Container::HostConfig] Body param: Настройки хоста: монтирования, сеть, лимиты. + # # @param name [String] Query param # # @param platform [String] Query param @@ -20,12 +22,15 @@ class Containers # @see DockerEngineRuby::Models::ContainerCreateParams def create(params) parsed, options = DockerEngineRuby::ContainerCreateParams.dump_request(params) - query = DockerEngineRuby::Internal::Util.encode_query_params(parsed.except(:config)) + query = DockerEngineRuby::Internal::Util.encode_query_params(parsed.except(:config, :host_config)) + # Docker ждёт настройки хоста в том же теле, что и конфиг контейнера: `{..., "HostConfig": {...}}`. + host_config = parsed[:host_config] + body = host_config.nil? ? parsed[:config] : {**parsed[:config], HostConfig: host_config} @client.request( method: :post, path: "containers/create", query: query, - body: parsed[:config], + body: body, model: DockerEngineRuby::CreateResponse, options: options ) diff --git a/rbi/docker_engine_ruby/internal/transport/pooled_net_requester.rbi b/rbi/docker_engine_ruby/internal/transport/pooled_net_requester.rbi index bf8d352..b931532 100644 --- a/rbi/docker_engine_ruby/internal/transport/pooled_net_requester.rbi +++ b/rbi/docker_engine_ruby/internal/transport/pooled_net_requester.rbi @@ -33,9 +33,7 @@ module DockerEngineRuby tls_key: T.nilable(OpenSSL::PKey::PKey), tls_verify_peer: T::Boolean, url: URI::Generic - ).returns( - Net::HTTP - ) + ).returns(Net::HTTP) end def connect(cert_store:, tls_cert:, tls_key:, tls_verify_peer:, url:) end diff --git a/rbi/docker_engine_ruby/models/config_create_params.rbi b/rbi/docker_engine_ruby/models/config_create_params.rbi index 0750e07..34713e6 100644 --- a/rbi/docker_engine_ruby/models/config_create_params.rbi +++ b/rbi/docker_engine_ruby/models/config_create_params.rbi @@ -14,12 +14,19 @@ module DockerEngineRuby ) end + sig { returns(DockerEngineRuby::ConfigSpec) } + attr_reader :spec + + sig { params(spec: DockerEngineRuby::ConfigSpec::OrHash).void } + attr_writer :spec + sig do params( + spec: DockerEngineRuby::ConfigSpec::OrHash, request_options: DockerEngineRuby::RequestOptions::OrHash ).returns(T.attached_class) end - def self.new(request_options: {}) + def self.new(spec:, request_options: {}) end sig do diff --git a/rbi/docker_engine_ruby/models/config_update_params.rbi b/rbi/docker_engine_ruby/models/config_update_params.rbi index fc6b6ac..b364c77 100644 --- a/rbi/docker_engine_ruby/models/config_update_params.rbi +++ b/rbi/docker_engine_ruby/models/config_update_params.rbi @@ -14,6 +14,12 @@ module DockerEngineRuby ) end + sig { returns(DockerEngineRuby::ConfigSpec) } + attr_reader :spec + + sig { params(spec: DockerEngineRuby::ConfigSpec::OrHash).void } + attr_writer :spec + sig { returns(String) } attr_accessor :id @@ -22,17 +28,19 @@ module DockerEngineRuby sig do params( + spec: DockerEngineRuby::ConfigSpec::OrHash, id: String, version: Integer, request_options: DockerEngineRuby::RequestOptions::OrHash ).returns(T.attached_class) end - def self.new(id:, version:, request_options: {}) + def self.new(spec:, id:, version:, request_options: {}) end sig do override.returns( { + spec: DockerEngineRuby::ConfigSpec, id: String, version: Integer, request_options: DockerEngineRuby::RequestOptions diff --git a/rbi/docker_engine_ruby/models/container_create_params.rbi b/rbi/docker_engine_ruby/models/container_create_params.rbi index cd02690..6960ed1 100644 --- a/rbi/docker_engine_ruby/models/container_create_params.rbi +++ b/rbi/docker_engine_ruby/models/container_create_params.rbi @@ -14,6 +14,22 @@ module DockerEngineRuby ) end + sig { returns(DockerEngineRuby::Config) } + attr_reader :config + + sig { params(config: DockerEngineRuby::Config::OrHash).void } + attr_writer :config + + sig { returns(T.nilable(DockerEngineRuby::Container::HostConfig)) } + attr_reader :host_config + + sig do + params( + host_config: DockerEngineRuby::Container::HostConfig::OrHash + ).void + end + attr_writer :host_config + sig { returns(T.nilable(String)) } attr_reader :name @@ -28,17 +44,27 @@ module DockerEngineRuby sig do params( + config: DockerEngineRuby::Config::OrHash, + host_config: DockerEngineRuby::Container::HostConfig::OrHash, name: String, platform: String, request_options: DockerEngineRuby::RequestOptions::OrHash ).returns(T.attached_class) end - def self.new(name: nil, platform: nil, request_options: {}) + def self.new( + config:, + host_config: nil, + name: nil, + platform: nil, + request_options: {} + ) end sig do override.returns( { + config: DockerEngineRuby::Config, + host_config: DockerEngineRuby::Container::HostConfig, name: String, platform: String, request_options: DockerEngineRuby::RequestOptions diff --git a/rbi/docker_engine_ruby/models/node_update_params.rbi b/rbi/docker_engine_ruby/models/node_update_params.rbi index e7699ba..2f2d133 100644 --- a/rbi/docker_engine_ruby/models/node_update_params.rbi +++ b/rbi/docker_engine_ruby/models/node_update_params.rbi @@ -14,6 +14,12 @@ module DockerEngineRuby ) end + sig { returns(DockerEngineRuby::NodeSpec) } + attr_reader :spec + + sig { params(spec: DockerEngineRuby::NodeSpec::OrHash).void } + attr_writer :spec + sig { returns(String) } attr_accessor :id @@ -22,17 +28,19 @@ module DockerEngineRuby sig do params( + spec: DockerEngineRuby::NodeSpec::OrHash, id: String, version: Integer, request_options: DockerEngineRuby::RequestOptions::OrHash ).returns(T.attached_class) end - def self.new(id:, version:, request_options: {}) + def self.new(spec:, id:, version:, request_options: {}) end sig do override.returns( { + spec: DockerEngineRuby::NodeSpec, id: String, version: Integer, request_options: DockerEngineRuby::RequestOptions diff --git a/rbi/docker_engine_ruby/models/secret_create_params.rbi b/rbi/docker_engine_ruby/models/secret_create_params.rbi index afe0de9..15c7eaf 100644 --- a/rbi/docker_engine_ruby/models/secret_create_params.rbi +++ b/rbi/docker_engine_ruby/models/secret_create_params.rbi @@ -14,12 +14,19 @@ module DockerEngineRuby ) end + sig { returns(DockerEngineRuby::SecretSpec) } + attr_reader :spec + + sig { params(spec: DockerEngineRuby::SecretSpec::OrHash).void } + attr_writer :spec + sig do params( + spec: DockerEngineRuby::SecretSpec::OrHash, request_options: DockerEngineRuby::RequestOptions::OrHash ).returns(T.attached_class) end - def self.new(request_options: {}) + def self.new(spec:, request_options: {}) end sig do diff --git a/rbi/docker_engine_ruby/models/secret_update_params.rbi b/rbi/docker_engine_ruby/models/secret_update_params.rbi index 14a16d3..982c837 100644 --- a/rbi/docker_engine_ruby/models/secret_update_params.rbi +++ b/rbi/docker_engine_ruby/models/secret_update_params.rbi @@ -14,6 +14,12 @@ module DockerEngineRuby ) end + sig { returns(DockerEngineRuby::SecretSpec) } + attr_reader :spec + + sig { params(spec: DockerEngineRuby::SecretSpec::OrHash).void } + attr_writer :spec + sig { returns(String) } attr_accessor :id @@ -22,17 +28,19 @@ module DockerEngineRuby sig do params( + spec: DockerEngineRuby::SecretSpec::OrHash, id: String, version: Integer, request_options: DockerEngineRuby::RequestOptions::OrHash ).returns(T.attached_class) end - def self.new(id:, version:, request_options: {}) + def self.new(spec:, id:, version:, request_options: {}) end sig do override.returns( { + spec: DockerEngineRuby::SecretSpec, id: String, version: Integer, request_options: DockerEngineRuby::RequestOptions diff --git a/rbi/docker_engine_ruby/models/service_create_params.rbi b/rbi/docker_engine_ruby/models/service_create_params.rbi index ffa8240..dae25da 100644 --- a/rbi/docker_engine_ruby/models/service_create_params.rbi +++ b/rbi/docker_engine_ruby/models/service_create_params.rbi @@ -14,6 +14,12 @@ module DockerEngineRuby ) end + sig { returns(DockerEngineRuby::ServiceSpec) } + attr_reader :spec + + sig { params(spec: DockerEngineRuby::ServiceSpec::OrHash).void } + attr_writer :spec + sig { returns(T.nilable(String)) } attr_reader :x_registry_auth @@ -22,16 +28,18 @@ module DockerEngineRuby sig do params( + spec: DockerEngineRuby::ServiceSpec::OrHash, x_registry_auth: String, request_options: DockerEngineRuby::RequestOptions::OrHash ).returns(T.attached_class) end - def self.new(x_registry_auth: nil, request_options: {}) + def self.new(spec:, x_registry_auth: nil, request_options: {}) end sig do override.returns( { + spec: DockerEngineRuby::ServiceSpec, x_registry_auth: String, request_options: DockerEngineRuby::RequestOptions } diff --git a/rbi/docker_engine_ruby/models/service_update_params.rbi b/rbi/docker_engine_ruby/models/service_update_params.rbi index c15907d..c816391 100644 --- a/rbi/docker_engine_ruby/models/service_update_params.rbi +++ b/rbi/docker_engine_ruby/models/service_update_params.rbi @@ -14,6 +14,12 @@ module DockerEngineRuby ) end + sig { returns(DockerEngineRuby::ServiceSpec) } + attr_reader :spec + + sig { params(spec: DockerEngineRuby::ServiceSpec::OrHash).void } + attr_writer :spec + sig { returns(String) } attr_accessor :id @@ -51,6 +57,7 @@ module DockerEngineRuby sig do params( + spec: DockerEngineRuby::ServiceSpec::OrHash, id: String, version: Integer, registry_auth_from: @@ -61,6 +68,7 @@ module DockerEngineRuby ).returns(T.attached_class) end def self.new( + spec:, id:, version:, registry_auth_from: nil, @@ -73,6 +81,7 @@ module DockerEngineRuby sig do override.returns( { + spec: DockerEngineRuby::ServiceSpec, id: String, version: Integer, registry_auth_from: diff --git a/rbi/docker_engine_ruby/models/swarm_update_params.rbi b/rbi/docker_engine_ruby/models/swarm_update_params.rbi index a46613c..b4988d4 100644 --- a/rbi/docker_engine_ruby/models/swarm_update_params.rbi +++ b/rbi/docker_engine_ruby/models/swarm_update_params.rbi @@ -14,6 +14,12 @@ module DockerEngineRuby ) end + sig { returns(DockerEngineRuby::SwarmSpec) } + attr_reader :spec + + sig { params(spec: DockerEngineRuby::SwarmSpec::OrHash).void } + attr_writer :spec + sig { returns(Integer) } attr_accessor :version @@ -37,6 +43,7 @@ module DockerEngineRuby sig do params( + spec: DockerEngineRuby::SwarmSpec::OrHash, version: Integer, rotate_manager_token: T::Boolean, rotate_manager_unlock_key: T::Boolean, @@ -45,6 +52,7 @@ module DockerEngineRuby ).returns(T.attached_class) end def self.new( + spec:, version:, rotate_manager_token: nil, rotate_manager_unlock_key: nil, @@ -56,6 +64,7 @@ module DockerEngineRuby sig do override.returns( { + spec: DockerEngineRuby::SwarmSpec, version: Integer, rotate_manager_token: T::Boolean, rotate_manager_unlock_key: T::Boolean, diff --git a/rbi/docker_engine_ruby/models/volume_create_params.rbi b/rbi/docker_engine_ruby/models/volume_create_params.rbi index c17fdb3..6a87490 100644 --- a/rbi/docker_engine_ruby/models/volume_create_params.rbi +++ b/rbi/docker_engine_ruby/models/volume_create_params.rbi @@ -14,12 +14,21 @@ module DockerEngineRuby ) end + sig { returns(DockerEngineRuby::CreateRequest) } + attr_reader :create_request + + sig do + params(create_request: DockerEngineRuby::CreateRequest::OrHash).void + end + attr_writer :create_request + sig do params( + create_request: DockerEngineRuby::CreateRequest::OrHash, request_options: DockerEngineRuby::RequestOptions::OrHash ).returns(T.attached_class) end - def self.new(request_options: {}) + def self.new(create_request:, request_options: {}) end sig do diff --git a/rbi/docker_engine_ruby/resources/containers.rbi b/rbi/docker_engine_ruby/resources/containers.rbi index 9a3e81f..1261fbc 100644 --- a/rbi/docker_engine_ruby/resources/containers.rbi +++ b/rbi/docker_engine_ruby/resources/containers.rbi @@ -7,6 +7,7 @@ module DockerEngineRuby sig do params( config: DockerEngineRuby::Config::OrHash, + host_config: DockerEngineRuby::Container::HostConfig::OrHash, name: String, platform: String, request_options: DockerEngineRuby::RequestOptions::OrHash @@ -15,6 +16,8 @@ module DockerEngineRuby def create( # Body param: Configuration for a container that is portable between hosts. config:, + # Body param: Настройки хоста: монтирования, сеть, лимиты. + host_config: nil, # Query param name: nil, # Query param diff --git a/sig/docker_engine_ruby/models/config_create_params.rbs b/sig/docker_engine_ruby/models/config_create_params.rbs index 6d87a2b..8a5dda7 100644 --- a/sig/docker_engine_ruby/models/config_create_params.rbs +++ b/sig/docker_engine_ruby/models/config_create_params.rbs @@ -1,12 +1,15 @@ module DockerEngineRuby module Models type config_create_params = - { } & DockerEngineRuby::Internal::Type::request_parameters + { spec: DockerEngineRuby::ConfigSpec } + & DockerEngineRuby::Internal::Type::request_parameters class ConfigCreateParams < DockerEngineRuby::Internal::Type::BaseModel extend DockerEngineRuby::Internal::Type::RequestParameters::Converter include DockerEngineRuby::Internal::Type::RequestParameters + attr_accessor spec: DockerEngineRuby::ConfigSpec + def initialize: (?request_options: DockerEngineRuby::request_opts) -> void def to_hash: -> { request_options: DockerEngineRuby::RequestOptions } diff --git a/sig/docker_engine_ruby/models/config_update_params.rbs b/sig/docker_engine_ruby/models/config_update_params.rbs index 0fafd00..2910b14 100644 --- a/sig/docker_engine_ruby/models/config_update_params.rbs +++ b/sig/docker_engine_ruby/models/config_update_params.rbs @@ -1,24 +1,28 @@ module DockerEngineRuby module Models type config_update_params = - { id: String, version: Integer } + { spec: DockerEngineRuby::ConfigSpec, id: String, version: Integer } & DockerEngineRuby::Internal::Type::request_parameters class ConfigUpdateParams < DockerEngineRuby::Internal::Type::BaseModel extend DockerEngineRuby::Internal::Type::RequestParameters::Converter include DockerEngineRuby::Internal::Type::RequestParameters + attr_accessor spec: DockerEngineRuby::ConfigSpec + attr_accessor id: String attr_accessor version: Integer def initialize: ( + spec: DockerEngineRuby::ConfigSpec, id: String, version: Integer, ?request_options: DockerEngineRuby::request_opts ) -> void def to_hash: -> { + spec: DockerEngineRuby::ConfigSpec, id: String, version: Integer, request_options: DockerEngineRuby::RequestOptions diff --git a/sig/docker_engine_ruby/models/container_create_params.rbs b/sig/docker_engine_ruby/models/container_create_params.rbs index 5285aeb..793b1fa 100644 --- a/sig/docker_engine_ruby/models/container_create_params.rbs +++ b/sig/docker_engine_ruby/models/container_create_params.rbs @@ -1,13 +1,26 @@ module DockerEngineRuby module Models type container_create_params = - { name: String, platform: String } + { + config: DockerEngineRuby::Config, + host_config: DockerEngineRuby::Container::HostConfig, + name: String, + platform: String + } & DockerEngineRuby::Internal::Type::request_parameters class ContainerCreateParams < DockerEngineRuby::Internal::Type::BaseModel extend DockerEngineRuby::Internal::Type::RequestParameters::Converter include DockerEngineRuby::Internal::Type::RequestParameters + attr_accessor config: DockerEngineRuby::Config + + attr_reader host_config: DockerEngineRuby::Container::HostConfig? + + def host_config=: ( + DockerEngineRuby::Container::HostConfig + ) -> DockerEngineRuby::Container::HostConfig + attr_reader name: String? def name=: (String) -> String @@ -17,12 +30,16 @@ module DockerEngineRuby def platform=: (String) -> String def initialize: ( + config: DockerEngineRuby::Config, + ?host_config: DockerEngineRuby::Container::HostConfig, ?name: String, ?platform: String, ?request_options: DockerEngineRuby::request_opts ) -> void def to_hash: -> { + config: DockerEngineRuby::Config, + host_config: DockerEngineRuby::Container::HostConfig, name: String, platform: String, request_options: DockerEngineRuby::RequestOptions diff --git a/sig/docker_engine_ruby/models/node_update_params.rbs b/sig/docker_engine_ruby/models/node_update_params.rbs index 5996c5f..5972241 100644 --- a/sig/docker_engine_ruby/models/node_update_params.rbs +++ b/sig/docker_engine_ruby/models/node_update_params.rbs @@ -1,24 +1,28 @@ module DockerEngineRuby module Models type node_update_params = - { id: String, version: Integer } + { spec: DockerEngineRuby::NodeSpec, id: String, version: Integer } & DockerEngineRuby::Internal::Type::request_parameters class NodeUpdateParams < DockerEngineRuby::Internal::Type::BaseModel extend DockerEngineRuby::Internal::Type::RequestParameters::Converter include DockerEngineRuby::Internal::Type::RequestParameters + attr_accessor spec: DockerEngineRuby::NodeSpec + attr_accessor id: String attr_accessor version: Integer def initialize: ( + spec: DockerEngineRuby::NodeSpec, id: String, version: Integer, ?request_options: DockerEngineRuby::request_opts ) -> void def to_hash: -> { + spec: DockerEngineRuby::NodeSpec, id: String, version: Integer, request_options: DockerEngineRuby::RequestOptions diff --git a/sig/docker_engine_ruby/models/secret_create_params.rbs b/sig/docker_engine_ruby/models/secret_create_params.rbs index 97dbdb7..20d61f2 100644 --- a/sig/docker_engine_ruby/models/secret_create_params.rbs +++ b/sig/docker_engine_ruby/models/secret_create_params.rbs @@ -1,12 +1,15 @@ module DockerEngineRuby module Models type secret_create_params = - { } & DockerEngineRuby::Internal::Type::request_parameters + { spec: DockerEngineRuby::SecretSpec } + & DockerEngineRuby::Internal::Type::request_parameters class SecretCreateParams < DockerEngineRuby::Internal::Type::BaseModel extend DockerEngineRuby::Internal::Type::RequestParameters::Converter include DockerEngineRuby::Internal::Type::RequestParameters + attr_accessor spec: DockerEngineRuby::SecretSpec + def initialize: (?request_options: DockerEngineRuby::request_opts) -> void def to_hash: -> { request_options: DockerEngineRuby::RequestOptions } diff --git a/sig/docker_engine_ruby/models/secret_update_params.rbs b/sig/docker_engine_ruby/models/secret_update_params.rbs index ed1faec..84346ba 100644 --- a/sig/docker_engine_ruby/models/secret_update_params.rbs +++ b/sig/docker_engine_ruby/models/secret_update_params.rbs @@ -1,24 +1,28 @@ module DockerEngineRuby module Models type secret_update_params = - { id: String, version: Integer } + { spec: DockerEngineRuby::SecretSpec, id: String, version: Integer } & DockerEngineRuby::Internal::Type::request_parameters class SecretUpdateParams < DockerEngineRuby::Internal::Type::BaseModel extend DockerEngineRuby::Internal::Type::RequestParameters::Converter include DockerEngineRuby::Internal::Type::RequestParameters + attr_accessor spec: DockerEngineRuby::SecretSpec + attr_accessor id: String attr_accessor version: Integer def initialize: ( + spec: DockerEngineRuby::SecretSpec, id: String, version: Integer, ?request_options: DockerEngineRuby::request_opts ) -> void def to_hash: -> { + spec: DockerEngineRuby::SecretSpec, id: String, version: Integer, request_options: DockerEngineRuby::RequestOptions diff --git a/sig/docker_engine_ruby/models/service_create_params.rbs b/sig/docker_engine_ruby/models/service_create_params.rbs index 8c90047..2170a05 100644 --- a/sig/docker_engine_ruby/models/service_create_params.rbs +++ b/sig/docker_engine_ruby/models/service_create_params.rbs @@ -1,23 +1,27 @@ module DockerEngineRuby module Models type service_create_params = - { x_registry_auth: String } + { spec: DockerEngineRuby::ServiceSpec, x_registry_auth: String } & DockerEngineRuby::Internal::Type::request_parameters class ServiceCreateParams < DockerEngineRuby::Internal::Type::BaseModel extend DockerEngineRuby::Internal::Type::RequestParameters::Converter include DockerEngineRuby::Internal::Type::RequestParameters + attr_accessor spec: DockerEngineRuby::ServiceSpec + attr_reader x_registry_auth: String? def x_registry_auth=: (String) -> String def initialize: ( + spec: DockerEngineRuby::ServiceSpec, ?x_registry_auth: String, ?request_options: DockerEngineRuby::request_opts ) -> void def to_hash: -> { + spec: DockerEngineRuby::ServiceSpec, x_registry_auth: String, request_options: DockerEngineRuby::RequestOptions } diff --git a/sig/docker_engine_ruby/models/service_update_params.rbs b/sig/docker_engine_ruby/models/service_update_params.rbs index 85ad8e5..e3e1fa1 100644 --- a/sig/docker_engine_ruby/models/service_update_params.rbs +++ b/sig/docker_engine_ruby/models/service_update_params.rbs @@ -2,6 +2,7 @@ module DockerEngineRuby module Models type service_update_params = { + spec: DockerEngineRuby::ServiceSpec, id: String, version: Integer, registry_auth_from: DockerEngineRuby::Models::ServiceUpdateParams::registry_auth_from, @@ -14,6 +15,8 @@ module DockerEngineRuby extend DockerEngineRuby::Internal::Type::RequestParameters::Converter include DockerEngineRuby::Internal::Type::RequestParameters + attr_accessor spec: DockerEngineRuby::ServiceSpec + attr_accessor id: String attr_accessor version: Integer @@ -33,6 +36,7 @@ module DockerEngineRuby def x_registry_auth=: (String) -> String def initialize: ( + spec: DockerEngineRuby::ServiceSpec, id: String, version: Integer, ?registry_auth_from: DockerEngineRuby::Models::ServiceUpdateParams::registry_auth_from, @@ -42,6 +46,7 @@ module DockerEngineRuby ) -> void def to_hash: -> { + spec: DockerEngineRuby::ServiceSpec, id: String, version: Integer, registry_auth_from: DockerEngineRuby::Models::ServiceUpdateParams::registry_auth_from, diff --git a/sig/docker_engine_ruby/models/swarm_update_params.rbs b/sig/docker_engine_ruby/models/swarm_update_params.rbs index abc31ba..184a5da 100644 --- a/sig/docker_engine_ruby/models/swarm_update_params.rbs +++ b/sig/docker_engine_ruby/models/swarm_update_params.rbs @@ -2,6 +2,7 @@ module DockerEngineRuby module Models type swarm_update_params = { + spec: DockerEngineRuby::SwarmSpec, version: Integer, rotate_manager_token: bool, rotate_manager_unlock_key: bool, @@ -13,6 +14,8 @@ module DockerEngineRuby extend DockerEngineRuby::Internal::Type::RequestParameters::Converter include DockerEngineRuby::Internal::Type::RequestParameters + attr_accessor spec: DockerEngineRuby::SwarmSpec + attr_accessor version: Integer attr_reader rotate_manager_token: bool? @@ -28,6 +31,7 @@ module DockerEngineRuby def rotate_worker_token=: (bool) -> bool def initialize: ( + spec: DockerEngineRuby::SwarmSpec, version: Integer, ?rotate_manager_token: bool, ?rotate_manager_unlock_key: bool, @@ -36,6 +40,7 @@ module DockerEngineRuby ) -> void def to_hash: -> { + spec: DockerEngineRuby::SwarmSpec, version: Integer, rotate_manager_token: bool, rotate_manager_unlock_key: bool, diff --git a/sig/docker_engine_ruby/models/volume_create_params.rbs b/sig/docker_engine_ruby/models/volume_create_params.rbs index b6459c8..51e8f0b 100644 --- a/sig/docker_engine_ruby/models/volume_create_params.rbs +++ b/sig/docker_engine_ruby/models/volume_create_params.rbs @@ -1,12 +1,15 @@ module DockerEngineRuby module Models type volume_create_params = - { } & DockerEngineRuby::Internal::Type::request_parameters + { create_request: DockerEngineRuby::CreateRequest } + & DockerEngineRuby::Internal::Type::request_parameters class VolumeCreateParams < DockerEngineRuby::Internal::Type::BaseModel extend DockerEngineRuby::Internal::Type::RequestParameters::Converter include DockerEngineRuby::Internal::Type::RequestParameters + attr_accessor create_request: DockerEngineRuby::CreateRequest + def initialize: (?request_options: DockerEngineRuby::request_opts) -> void def to_hash: -> { request_options: DockerEngineRuby::RequestOptions } diff --git a/sig/docker_engine_ruby/resources/containers.rbs b/sig/docker_engine_ruby/resources/containers.rbs index 6272ded..b3c3676 100644 --- a/sig/docker_engine_ruby/resources/containers.rbs +++ b/sig/docker_engine_ruby/resources/containers.rbs @@ -3,6 +3,7 @@ module DockerEngineRuby class Containers def create: ( config: DockerEngineRuby::Config, + ?host_config: DockerEngineRuby::Container::HostConfig, ?name: String, ?platform: String, ?request_options: DockerEngineRuby::request_opts diff --git a/test/docker_engine_ruby/models/request_body_test.rb b/test/docker_engine_ruby/models/request_body_test.rb new file mode 100644 index 0000000..14762e9 --- /dev/null +++ b/test/docker_engine_ruby/models/request_body_test.rb @@ -0,0 +1,62 @@ +# frozen_string_literal: true + +require_relative "../test_helper" + +class DockerEngineRuby::Test::RequestBodyModelTest < Minitest::Test + extend Minitest::Serial + include WebMock::API + + def before_all + super + WebMock.enable! + end + + def teardown + WebMock.reset! + super + end + + def after_all + WebMock.disable! + super + end + + def test_container_create_sends_config_and_host_config_in_api_names + body = sent_body(:post, "http://localhost/containers/create", {Id: "c1", Warnings: []}) do |client| + client.containers.create( + config: {image: "alpine", cmd: ["true"], exposed_ports: {"80/tcp" => {}}}, + host_config: {binds: ["/src:/app"], network_mode: "bridge", memory: 1024}, + name: "app" + ) + end + + assert_equal( + { + "Image" => "alpine", + "Cmd" => ["true"], + "ExposedPorts" => {"80/tcp" => {}}, + "HostConfig" => {"Binds" => ["/src:/app"], "NetworkMode" => "bridge", "Memory" => 1024} + }, + body + ) + end + + def test_secret_create_sends_spec_in_api_names + body = sent_body(:post, "http://localhost/secrets/create", {ID: "s1"}) do |client| + client.secrets.create(spec: {name: "token", data: "c2VjcmV0"}) + end + + assert_equal({"Name" => "token", "Data" => "c2VjcmV0"}, body) + end + + private + + def sent_body(method, url, response) + body = nil + stub_request(method, /#{Regexp.escape(url)}/) + .with { body = JSON.parse(_1.body) } + .to_return_json(status: 201, body: response) + yield(DockerEngineRuby::Client.new(base_url: "http://localhost", max_retries: 0)) + body + end +end