From 124923c616227957baac79e8aa9fea52efebd0c6 Mon Sep 17 00:00:00 2001 From: Justus Flerlage Date: Mon, 23 Oct 2017 01:56:12 +0200 Subject: [PATCH 1/6] added swarm class and its inspect method --- lib/docker/swarm.rb | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 lib/docker/swarm.rb diff --git a/lib/docker/swarm.rb b/lib/docker/swarm.rb new file mode 100644 index 000000000..509129062 --- /dev/null +++ b/lib/docker/swarm.rb @@ -0,0 +1,11 @@ +# This class represents a Docker Swarm instance. It's important to note that nothing +# is cached so that the information is always up to date. +class Docker::Swarm + include Docker::Base + + def self.inspect(conn = Docker.connection) + new(conn, Docker::Util.parse_json(conn.get('/swarm'))) + end + + private_class_method :new +end From 4e872587e396dc3ffc89eea5c6a9076c608ccee1 Mon Sep 17 00:00:00 2001 From: Justus Flerlage Date: Mon, 23 Oct 2017 02:21:08 +0200 Subject: [PATCH 2/6] added service class with basic methods for creating, updating, removing and listing services --- lib/docker/service.rb | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 lib/docker/service.rb diff --git a/lib/docker/service.rb b/lib/docker/service.rb new file mode 100644 index 000000000..e882db6df --- /dev/null +++ b/lib/docker/service.rb @@ -0,0 +1,40 @@ +# This class represents a Docker Service. It's important to note that nothing +# is cached so that the information is always up to date. +class Docker::Service + include Docker::Base + + def self.all(opts = {}, conn = Docker.connection) + hashes = Docker::Util.parse_json(conn.get('/services', opts)) || [] + hashes.map { |hash| new(conn, hash) } + end + + def self.get(id, opts = {}, conn = Docker.connection) + service_json = conn.get("/services/#{URI.encode(id)}", opts) + new(conn, Docker::Util.parse_json(service_json) || {}) + end + + def self.create(opts = {}, conn = Docker.connection) + name = opts.delete('name') || opts.delete(:name) + query = {} + query['name'] = name if name + + response = conn.post('/services/create', query, :body => opts.to_json) + hash = Docker::Util.parse_json(response) || {} + new(conn, hash) + end + + def remove(opts = {}) + connection.delete("/services/#{self.id}", opts) + nil + end + + def update(opts) + connection.post("/services/#{self.id}/update", {}, body: opts.to_json) + end + + def logs(opts = {}) + connection.get("/services/#{self.id}/logs", opts) + end + + private_class_method :new +end From 7c4cbd0016f7c34e7494547475596754f61fc6de Mon Sep 17 00:00:00 2001 From: Justus Flerlage Date: Mon, 23 Oct 2017 02:21:22 +0200 Subject: [PATCH 3/6] added requires for swarm aand service class --- lib/docker.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/docker.rb b/lib/docker.rb index 396d7f327..70dfcd178 100644 --- a/lib/docker.rb +++ b/lib/docker.rb @@ -31,6 +31,8 @@ module Docker require 'docker/image' require 'docker/messages_stack' require 'docker/messages' + require 'docker/service' + require 'docker/swarm' require 'docker/util' require 'docker/version' require 'docker/volume' From fbd3299394f20c036305f2a01e744c6f5c337a22 Mon Sep 17 00:00:00 2001 From: Justus Flerlage Date: Tue, 24 Oct 2017 02:43:40 +0200 Subject: [PATCH 4/6] added node class --- lib/docker.rb | 1 + lib/docker/node.rb | 30 ++++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 lib/docker/node.rb diff --git a/lib/docker.rb b/lib/docker.rb index 70dfcd178..3eb6a4ccb 100644 --- a/lib/docker.rb +++ b/lib/docker.rb @@ -31,6 +31,7 @@ module Docker require 'docker/image' require 'docker/messages_stack' require 'docker/messages' + require 'docker/node' require 'docker/service' require 'docker/swarm' require 'docker/util' diff --git a/lib/docker/node.rb b/lib/docker/node.rb new file mode 100644 index 000000000..dd286a090 --- /dev/null +++ b/lib/docker/node.rb @@ -0,0 +1,30 @@ +# This class represents a Docker Node. It's important to note that nothing +# is cached so that the information is always up to date. +class Docker::Node + include Docker::Base + + def self.all(opts = {}, conn = Docker.connection) + hashes = Docker::Util.parse_json(conn.get('/nodes', opts)) || [] + hashes.map { |hash| new(conn, hash) } + end + + def self.get(id, conn = Docker.connection) + node_json = conn.get("/nodes/#{URI.encode(id)}") + new(conn, Docker::Util.parse_json(node_json) || {}) + end + + def remove(opts = {}) + connection.delete("/nodes/#{self.id}", opts) + nil + end + + def update(opts) + filter = opts.delete 'filter' || opts.delete :filter + query = {} + query['filter'] = filter if filter + + connection.post("/services/#{self.id}", query, body: opts.to_json) + end + + private_class_method :new +end From 5bc722be9edc5d52659dc922f6ddf00dd08b5d66 Mon Sep 17 00:00:00 2001 From: Justus Flerlage Date: Wed, 25 Oct 2017 01:45:09 +0200 Subject: [PATCH 5/6] fixed syntax issue in update method --- lib/docker/node.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/docker/node.rb b/lib/docker/node.rb index dd286a090..2841a9e31 100644 --- a/lib/docker/node.rb +++ b/lib/docker/node.rb @@ -19,7 +19,7 @@ def remove(opts = {}) end def update(opts) - filter = opts.delete 'filter' || opts.delete :filter + filter = opts.delete('filter') || opts.delete(:filter) query = {} query['filter'] = filter if filter From 5ea29d23736c937cef591aa4171ebb7e73050793 Mon Sep 17 00:00:00 2001 From: Justus Flerlage Date: Mon, 18 Dec 2017 02:22:20 +0100 Subject: [PATCH 6/6] whitespace cleanup --- lib/docker/service.rb | 4 ++-- lib/docker/swarm.rb | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/docker/service.rb b/lib/docker/service.rb index e882db6df..2070f282f 100644 --- a/lib/docker/service.rb +++ b/lib/docker/service.rb @@ -22,7 +22,7 @@ def self.create(opts = {}, conn = Docker.connection) hash = Docker::Util.parse_json(response) || {} new(conn, hash) end - + def remove(opts = {}) connection.delete("/services/#{self.id}", opts) nil @@ -35,6 +35,6 @@ def update(opts) def logs(opts = {}) connection.get("/services/#{self.id}/logs", opts) end - + private_class_method :new end diff --git a/lib/docker/swarm.rb b/lib/docker/swarm.rb index 509129062..fd3388864 100644 --- a/lib/docker/swarm.rb +++ b/lib/docker/swarm.rb @@ -6,6 +6,6 @@ class Docker::Swarm def self.inspect(conn = Docker.connection) new(conn, Docker::Util.parse_json(conn.get('/swarm'))) end - + private_class_method :new end