docker-api 1.34.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/README.md +5 -9
- data/lib/docker/connection.rb +1 -1
- data/lib/docker/container.rb +3 -13
- data/lib/docker/event.rb +3 -1
- data/lib/docker/image.rb +2 -2
- data/lib/docker/network.rb +3 -3
- data/lib/docker/util.rb +2 -1
- data/lib/docker/version.rb +1 -4
- data/lib/docker.rb +1 -12
- metadata +6 -8
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 | 
            -
             | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 2 | 
            +
            SHA256:
         | 
| 3 | 
            +
              metadata.gz: 7c8d229ece5b5b347a925c62c3f199a940393e58de0b02049aed295090739b04
         | 
| 4 | 
            +
              data.tar.gz: 619467ed3697f6b9221f89bab145ba298bd47f5f26209e86df89347b6e83fe08
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 7a1a3a2a995c4a172217fc80eb573501502f7f05a337080bf4723d90bb2ba9053cde786aaa994993bd2841ebeeb18cc8a5e4dfa342792bb558fb84a3f4688b89
         | 
| 7 | 
            +
              data.tar.gz: c9bbb7ae229ba1784859ddb0e3bc6e7df1651718d552779baac4e2ad49d34096aba760e6ce99fa41dfd14ef6ea0f3a5ddfc9178cf1c7c7f286a8385be1c59385
         | 
    
        data/README.md
    CHANGED
    
    | @@ -1,8 +1,8 @@ | |
| 1 1 | 
             
            docker-api
         | 
| 2 2 | 
             
            ==========
         | 
| 3 | 
            -
            [](https://badge.fury.io/rb/docker-api) [](https://travis-ci.org/swipely/docker-api) [](https://codeclimate.com/github/swipely/docker-api) | 
| 3 | 
            +
            [](https://badge.fury.io/rb/docker-api) [](https://travis-ci.org/swipely/docker-api) [](https://codeclimate.com/github/swipely/docker-api)
         | 
| 4 4 |  | 
| 5 | 
            -
            This gem provides an object-oriented interface to the [Docker  | 
| 5 | 
            +
            This gem provides an object-oriented interface to the [Docker Engine API](https://docs.docker.com/develop/sdk/). Every method listed there is implemented. At the time of this writing, docker-api is meant to interface with Docker version 1.4.*
         | 
| 6 6 |  | 
| 7 7 | 
             
            If you're interested in using Docker to package your apps, we recommend the [dockly](https://github.com/swipely/dockly) gem. Dockly provides a simple DSL for describing Docker containers that install as Debian packages and are controlled by upstart scripts.
         | 
| 8 8 |  | 
| @@ -36,7 +36,7 @@ docker-api is designed to be very lightweight. Almost no state is cached (aside | |
| 36 36 |  | 
| 37 37 | 
             
            ## Starting up
         | 
| 38 38 |  | 
| 39 | 
            -
            Follow the [installation instructions](https://docs.docker.com/ | 
| 39 | 
            +
            Follow the [installation instructions](https://docs.docker.com/install/), and then run:
         | 
| 40 40 |  | 
| 41 41 | 
             
            ```shell
         | 
| 42 42 | 
             
            $ sudo docker -d
         | 
| @@ -52,7 +52,7 @@ If you're running Docker locally as a socket, there is no setup to do in Ruby. I | |
| 52 52 | 
             
            Docker.url = 'tcp://example.com:5422'
         | 
| 53 53 | 
             
            ```
         | 
| 54 54 |  | 
| 55 | 
            -
            Two things to note here. The first is that this gem uses [excon]( | 
| 55 | 
            +
            Two things to note here. The first is that this gem uses [excon](https://github.com/excon/excon), so any of the options that are valid for `Excon.new` are also valid for `Docker.options`. Second, by default Docker runs on a socket. The gem will assume you want to connect to the socket unless you specify otherwise.
         | 
| 56 56 |  | 
| 57 57 | 
             
            Also, you may set the above variables via `ENV` variables. For example:
         | 
| 58 58 |  | 
| @@ -413,7 +413,7 @@ container.read_file("/test") | |
| 413 413 |  | 
| 414 414 | 
             
            # Export a Container. Since an export is typically at least 300M, chunks of the
         | 
| 415 415 | 
             
            # export are yielded instead of just returning the whole thing.
         | 
| 416 | 
            -
            File.open('export.tar', 'w') do | | 
| 416 | 
            +
            File.open('export.tar', 'w') do |file|
         | 
| 417 417 | 
             
              container.export { |chunk| file.write(chunk) }
         | 
| 418 418 | 
             
            end
         | 
| 419 419 | 
             
            # => nil
         | 
| @@ -622,10 +622,6 @@ image 'repo:new_tag' => 'repo:tag' do | |
| 622 622 | 
             
            end
         | 
| 623 623 | 
             
            ```
         | 
| 624 624 |  | 
| 625 | 
            -
            ## Known issues
         | 
| 626 | 
            -
             | 
| 627 | 
            -
            *   If the docker daemon is always responding to your requests with a 400 Bad Request when using UNIX sockets, verify you're running Excon version 0.46.0 or greater. [Link](https://github.com/swipely/docker-api/issues/381)
         | 
| 628 | 
            -
             | 
| 629 625 | 
             
            ## Not supported (yet)
         | 
| 630 626 |  | 
| 631 627 | 
             
            *   Generating a tarball of images and metadata for a repository specified by a name: https://docs.docker.com/engine/reference/api/docker_remote_api_v1.14/#get-a-tarball-containing-all-images-and-tags-in-a-repository
         | 
    
        data/lib/docker/connection.rb
    CHANGED
    
    | @@ -80,7 +80,7 @@ private | |
| 80 80 | 
             
                user_agent = "Swipely/Docker-API #{Docker::VERSION}"
         | 
| 81 81 | 
             
                {
         | 
| 82 82 | 
             
                  :method        => http_method,
         | 
| 83 | 
            -
                  :path          =>  | 
| 83 | 
            +
                  :path          => path,
         | 
| 84 84 | 
             
                  :query         => query,
         | 
| 85 85 | 
             
                  :headers       => { 'Content-Type' => content_type,
         | 
| 86 86 | 
             
                                      'User-Agent'   => user_agent,
         | 
    
        data/lib/docker/container.rb
    CHANGED
    
    | @@ -189,10 +189,10 @@ class Docker::Container | |
| 189 189 | 
             
              end
         | 
| 190 190 |  | 
| 191 191 | 
             
              def streaming_logs(opts = {}, &block)
         | 
| 192 | 
            -
                stack_size = opts.delete('stack_size') || -1
         | 
| 192 | 
            +
                stack_size = opts.delete('stack_size') || opts.delete(:stack_size) || -1
         | 
| 193 193 | 
             
                tty = opts.delete('tty') || opts.delete(:tty) || false
         | 
| 194 194 | 
             
                msgs = Docker::MessagesStack.new(stack_size)
         | 
| 195 | 
            -
                excon_params = {response_block: Docker::Util.attach_for(block, msgs, tty)}
         | 
| 195 | 
            +
                excon_params = {response_block: Docker::Util.attach_for(block, msgs, tty), idempotent: false}
         | 
| 196 196 |  | 
| 197 197 | 
             
                connection.get(path_for(:logs), opts, excon_params)
         | 
| 198 198 | 
             
                msgs.messages.join
         | 
| @@ -266,16 +266,6 @@ class Docker::Container | |
| 266 266 | 
             
                end
         | 
| 267 267 | 
             
              end
         | 
| 268 268 |  | 
| 269 | 
            -
              def copy(path, &block)
         | 
| 270 | 
            -
                connection.post(
         | 
| 271 | 
            -
                  path_for(:copy),
         | 
| 272 | 
            -
                  {},
         | 
| 273 | 
            -
                  body: MultiJson.dump('Resource' => path),
         | 
| 274 | 
            -
                  response_block: block
         | 
| 275 | 
            -
                )
         | 
| 276 | 
            -
                self
         | 
| 277 | 
            -
              end
         | 
| 278 | 
            -
             | 
| 279 269 | 
             
              def archive_out(path, &block)
         | 
| 280 270 | 
             
                connection.get(
         | 
| 281 271 | 
             
                  path_for(:archive),
         | 
| @@ -343,7 +333,7 @@ class Docker::Container | |
| 343 333 |  | 
| 344 334 | 
             
              # Return the container with specified ID
         | 
| 345 335 | 
             
              def self.get(id, opts = {}, conn = Docker.connection)
         | 
| 346 | 
            -
                container_json = conn.get("/containers/#{ | 
| 336 | 
            +
                container_json = conn.get("/containers/#{id}/json", opts)
         | 
| 347 337 | 
             
                hash = Docker::Util.parse_json(container_json) || {}
         | 
| 348 338 | 
             
                new(conn, hash)
         | 
| 349 339 | 
             
              end
         | 
    
        data/lib/docker/event.rb
    CHANGED
    
    | @@ -29,7 +29,9 @@ class Docker::Event | |
| 29 29 |  | 
| 30 30 | 
             
                def stream(opts = {}, conn = Docker.connection, &block)
         | 
| 31 31 | 
             
                  conn.get('/events', opts, :response_block => lambda { |b, r, t|
         | 
| 32 | 
            -
                     | 
| 32 | 
            +
                    b.each_line do |line|
         | 
| 33 | 
            +
                      block.call(new_event(line, r, t))
         | 
| 34 | 
            +
                    end
         | 
| 33 35 | 
             
                  })
         | 
| 34 36 | 
             
                end
         | 
| 35 37 |  | 
    
        data/lib/docker/image.rb
    CHANGED
    
    | @@ -126,7 +126,7 @@ class Docker::Image | |
| 126 126 |  | 
| 127 127 | 
             
                # Return a specific image.
         | 
| 128 128 | 
             
                def get(id, opts = {}, conn = Docker.connection)
         | 
| 129 | 
            -
                  image_json = conn.get("/images/#{ | 
| 129 | 
            +
                  image_json = conn.get("/images/#{id}/json", opts)
         | 
| 130 130 | 
             
                  hash = Docker::Util.parse_json(image_json) || {}
         | 
| 131 131 | 
             
                  new(conn, hash)
         | 
| 132 132 | 
             
                end
         | 
| @@ -174,7 +174,7 @@ class Docker::Image | |
| 174 174 | 
             
                  # By using compare_by_identity we can create a Hash that has
         | 
| 175 175 | 
             
                  # the same key multiple times.
         | 
| 176 176 | 
             
                  query = {}.tap(&:compare_by_identity)
         | 
| 177 | 
            -
                  Array(names).each { |name| query['names'.dup] =  | 
| 177 | 
            +
                  Array(names).each { |name| query['names'.dup] = name }
         | 
| 178 178 | 
             
                  conn.get(
         | 
| 179 179 | 
             
                    '/images/get',
         | 
| 180 180 | 
             
                    query,
         | 
    
        data/lib/docker/network.rb
    CHANGED
    
    | @@ -34,7 +34,7 @@ class Docker::Network | |
| 34 34 | 
             
              end
         | 
| 35 35 |  | 
| 36 36 | 
             
              def reload
         | 
| 37 | 
            -
                network_json = @connection.get("/networks/#{ | 
| 37 | 
            +
                network_json = @connection.get("/networks/#{@id}")
         | 
| 38 38 | 
             
                hash = Docker::Util.parse_json(network_json) || {}
         | 
| 39 39 | 
             
                @info = hash
         | 
| 40 40 | 
             
              end
         | 
| @@ -51,7 +51,7 @@ class Docker::Network | |
| 51 51 | 
             
                end
         | 
| 52 52 |  | 
| 53 53 | 
             
                def get(id, opts = {}, conn = Docker.connection)
         | 
| 54 | 
            -
                  network_json = conn.get("/networks/#{ | 
| 54 | 
            +
                  network_json = conn.get("/networks/#{id}", opts)
         | 
| 55 55 | 
             
                  hash = Docker::Util.parse_json(network_json) || {}
         | 
| 56 56 | 
             
                  new(conn, hash)
         | 
| 57 57 | 
             
                end
         | 
| @@ -62,7 +62,7 @@ class Docker::Network | |
| 62 62 | 
             
                end
         | 
| 63 63 |  | 
| 64 64 | 
             
                def remove(id, opts = {}, conn = Docker.connection)
         | 
| 65 | 
            -
                  conn.delete("/networks/#{ | 
| 65 | 
            +
                  conn.delete("/networks/#{id}", opts)
         | 
| 66 66 | 
             
                  nil
         | 
| 67 67 | 
             
                end
         | 
| 68 68 | 
             
                alias_method :delete, :remove
         | 
    
        data/lib/docker/util.rb
    CHANGED
    
    | @@ -241,8 +241,9 @@ module Docker::Util | |
| 241 241 |  | 
| 242 242 | 
             
              def build_config_header(credentials)
         | 
| 243 243 | 
             
                if credentials.is_a?(String)
         | 
| 244 | 
            -
                  credentials =  | 
| 244 | 
            +
                  credentials = MultiJson.load(credentials, symbolize_keys: true)
         | 
| 245 245 | 
             
                end
         | 
| 246 | 
            +
             | 
| 246 247 | 
             
                header = MultiJson.dump(
         | 
| 247 248 | 
             
                  credentials[:serveraddress].to_s => {
         | 
| 248 249 | 
             
                    'username' => credentials[:username].to_s,
         | 
    
        data/lib/docker/version.rb
    CHANGED
    
    
    
        data/lib/docker.rb
    CHANGED
    
    | @@ -129,19 +129,8 @@ module Docker | |
| 129 129 | 
             
                raise Docker::Error::AuthenticationError
         | 
| 130 130 | 
             
              end
         | 
| 131 131 |  | 
| 132 | 
            -
              # When the correct version of Docker is installed, returns true. Otherwise,
         | 
| 133 | 
            -
              # raises a VersionError.
         | 
| 134 | 
            -
              def validate_version!
         | 
| 135 | 
            -
                Docker.info
         | 
| 136 | 
            -
                true
         | 
| 137 | 
            -
              rescue Docker::Error::TimeoutError
         | 
| 138 | 
            -
                raise
         | 
| 139 | 
            -
              rescue Docker::Error::DockerError
         | 
| 140 | 
            -
                raise Docker::Error::VersionError, "Expected API Version: #{API_VERSION}"
         | 
| 141 | 
            -
              end
         | 
| 142 | 
            -
             | 
| 143 132 | 
             
              module_function :default_socket_url, :env_url, :url, :url=, :env_options,
         | 
| 144 133 | 
             
                              :options, :options=, :creds, :creds=, :logger, :logger=,
         | 
| 145 134 | 
             
                              :connection, :reset!, :reset_connection!, :version, :info,
         | 
| 146 | 
            -
                              :ping, :authenticate!, : | 
| 135 | 
            +
                              :ping, :authenticate!, :ssl_options
         | 
| 147 136 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: docker-api
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version:  | 
| 4 | 
            +
              version: 2.0.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Swipely, Inc.
         | 
| 8 | 
            -
            autorequire: | 
| 8 | 
            +
            autorequire:
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2020-09-11 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: excon
         | 
| @@ -179,7 +179,7 @@ homepage: https://github.com/swipely/docker-api | |
| 179 179 | 
             
            licenses:
         | 
| 180 180 | 
             
            - MIT
         | 
| 181 181 | 
             
            metadata: {}
         | 
| 182 | 
            -
            post_install_message: | 
| 182 | 
            +
            post_install_message:
         | 
| 183 183 | 
             
            rdoc_options: []
         | 
| 184 184 | 
             
            require_paths:
         | 
| 185 185 | 
             
            - lib
         | 
| @@ -194,10 +194,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 194 194 | 
             
                - !ruby/object:Gem::Version
         | 
| 195 195 | 
             
                  version: '0'
         | 
| 196 196 | 
             
            requirements: []
         | 
| 197 | 
            -
             | 
| 198 | 
            -
             | 
| 199 | 
            -
            signing_key: 
         | 
| 197 | 
            +
            rubygems_version: 3.1.2
         | 
| 198 | 
            +
            signing_key:
         | 
| 200 199 | 
             
            specification_version: 4
         | 
| 201 200 | 
             
            summary: A simple REST client for the Docker Remote API
         | 
| 202 201 | 
             
            test_files: []
         | 
| 203 | 
            -
            has_rdoc: 
         |