From b013b618370a94d8e80bcef1100aa16bd54f409c Mon Sep 17 00:00:00 2001 From: Nick Laferriere Date: Sat, 31 Oct 2015 22:04:24 -0400 Subject: [PATCH] made docker via api class more dynamic, by allowing api version to be past to it --- CONTRIBUTORS.md | 1 + lib/centurion/docker_server.rb | 2 +- lib/centurion/docker_via_api.rb | 21 +++++++++++---------- lib/centurion/version.rb | 2 +- spec/docker_via_api_spec.rb | 1 + 5 files changed, 15 insertions(+), 12 deletions(-) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 23e4da99..0b007468 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -12,6 +12,7 @@ Your name could be here! * [Suren Karapetyan][skarap] * [Jon Wood][jellybob] * [Mark Borcherding][markborcherding] + * [Nick Laferriere][laferrieren] Pre-release ----------- diff --git a/lib/centurion/docker_server.rb b/lib/centurion/docker_server.rb index d96fdb58..6ba9b2a1 100644 --- a/lib/centurion/docker_server.rb +++ b/lib/centurion/docker_server.rb @@ -64,7 +64,7 @@ def old_containers_for_name(wanted_name) def docker_via_api @docker_via_api ||= Centurion::DockerViaApi.new(@hostname, @port, - @tls_params) + @tls_params, nil) end def docker_via_cli diff --git a/lib/centurion/docker_via_api.rb b/lib/centurion/docker_via_api.rb index 6d6a3145..1303ce4a 100644 --- a/lib/centurion/docker_via_api.rb +++ b/lib/centurion/docker_via_api.rb @@ -6,15 +6,16 @@ module Centurion; end class Centurion::DockerViaApi - def initialize(hostname, port, tls_args = {}) + def initialize(hostname, port, tls_args = {}, api_version = nil) @tls_args = default_tls_args(tls_args[:tls]).merge(tls_args.reject { |k, v| v.nil? }) # Required by tls_enable? @base_uri = "http#{'s' if tls_enable?}://#{hostname}:#{port}" - + api_version ||= "/v1.12" + @docker_api_version = api_version configure_excon_globally end def ps(options={}) - path = "/v1.12" + "/containers/json" + path = @docker_api_version + "/containers/json" path += "?all=1" if options[:all] response = Excon.get(@base_uri + path, tls_excon_arguments) @@ -24,7 +25,7 @@ def ps(options={}) def inspect_image(image, tag = "latest") repository = "#{image}:#{tag}" - path = "/v1.12" + "/images/#{repository}/json" + path = @docker_api_version + "/images/#{repository}/json" response = Excon.get( @base_uri + path, @@ -35,7 +36,7 @@ def inspect_image(image, tag = "latest") end def remove_container(container_id) - path = "/v1.12" + "/containers/#{container_id}" + path = @docker_api_version + "/containers/#{container_id}" response = Excon.delete( @base_uri + path, tls_excon_arguments @@ -45,7 +46,7 @@ def remove_container(container_id) end def stop_container(container_id, timeout = 30) - path = "/v1.12" + "/containers/#{container_id}/stop?t=#{timeout}" + path = @docker_api_version + "/containers/#{container_id}/stop?t=#{timeout}" response = Excon.post( @base_uri + path, tls_excon_arguments @@ -55,7 +56,7 @@ def stop_container(container_id, timeout = 30) end def create_container(configuration, name = nil) - path = "/v1.12" + "/containers/create" + path = @docker_api_version + "/containers/create" response = Excon.post( @base_uri + path, tls_excon_arguments.merge( @@ -69,7 +70,7 @@ def create_container(configuration, name = nil) end def start_container(container_id, configuration) - path = "/v1.12" + "/containers/#{container_id}/start" + path = @docker_api_version + "/containers/#{container_id}/start" response = Excon.post( @base_uri + path, tls_excon_arguments.merge( @@ -88,7 +89,7 @@ def start_container(container_id, configuration) end def restart_container(container_id, timeout = 30) - path = "/v1.12" + "/containers/#{container_id}/restart?t=#{timeout}" + path = @docker_api_version + "/containers/#{container_id}/restart?t=#{timeout}" response = Excon.post( @base_uri + path, tls_excon_arguments @@ -106,7 +107,7 @@ def restart_container(container_id, timeout = 30) end def inspect_container(container_id) - path = "/v1.12" + "/containers/#{container_id}/json" + path = @docker_api_version + "/containers/#{container_id}/json" response = Excon.get( @base_uri + path, tls_excon_arguments diff --git a/lib/centurion/version.rb b/lib/centurion/version.rb index df48bbb0..649180ca 100644 --- a/lib/centurion/version.rb +++ b/lib/centurion/version.rb @@ -1,3 +1,3 @@ module Centurion - VERSION = '1.8.2' + VERSION = '1.8.3' end diff --git a/spec/docker_via_api_spec.rb b/spec/docker_via_api_spec.rb index 50f11a87..d659731d 100644 --- a/spec/docker_via_api_spec.rb +++ b/spec/docker_via_api_spec.rb @@ -4,6 +4,7 @@ describe Centurion::DockerViaApi do let(:hostname) { 'example.com' } let(:port) { '2375' } + let(:api_version) { '1.12' } let(:json_string) { '[{ "Hello": "World" }]' } let(:json_value) { JSON.load(json_string) }