class KumoDockerCloud::Service

Attributes

name[R]
stack_name[R]

Public Class Methods

new(stack_name, service_name, docker_cloud_api = DockerCloudApi.new) click to toggle source
# File lib/kumo_dockercloud/service.rb, line 5
def initialize(stack_name, service_name, docker_cloud_api = DockerCloudApi.new)
  @stack_name = stack_name
  @name = service_name
  @docker_cloud_api = docker_cloud_api
end
service_by_resource_uri(resource_uri) click to toggle source
# File lib/kumo_dockercloud/service.rb, line 11
def self.service_by_resource_uri(resource_uri)
  api = KumoDockerCloud::DockerCloudApi.new
  service = api.service_by_resource_uri(resource_uri)
  stack = api.stacks.get_from_uri(service.info[:stack])

  self.new(stack.name, service.name)
end

Public Instance Methods

containers() click to toggle source
# File lib/kumo_dockercloud/service.rb, line 54
def containers
  get_service.containers
end
deploy(version) click to toggle source
# File lib/kumo_dockercloud/service.rb, line 19
def deploy(version)
  update_image(version)
  redeploy
end
linked_services() click to toggle source
# File lib/kumo_dockercloud/service.rb, line 24
def linked_services
  get_service.linked_to_service.map { |link| KumoDockerCloud::Service.service_by_resource_uri(link[:to_service]) }
end
resource_uri() click to toggle source
# File lib/kumo_dockercloud/service.rb, line 50
def resource_uri
  get_service.resource_uri
end
state() click to toggle source
# File lib/kumo_dockercloud/service.rb, line 32
def state
  get_service.state
end
stop() click to toggle source
# File lib/kumo_dockercloud/service.rb, line 46
def stop
  docker_cloud_api.services.stop(uuid)
end
uuid() click to toggle source
# File lib/kumo_dockercloud/service.rb, line 58
def uuid
  get_service.uuid
end

Private Instance Methods

docker_cloud_api() click to toggle source
# File lib/kumo_dockercloud/service.rb, line 77
def docker_cloud_api
  @docker_cloud_api
end
get_service() click to toggle source
# File lib/kumo_dockercloud/service.rb, line 81
def get_service
  docker_cloud_api.service_by_stack_and_service_name(stack_name, name)
end
image_name() click to toggle source
# File lib/kumo_dockercloud/service.rb, line 85
def image_name
  get_service.image_name.split(':').first
end
redeploy() click to toggle source
# File lib/kumo_dockercloud/service.rb, line 71
def redeploy
  docker_cloud_api.services.redeploy(uuid)
rescue RestClient::InternalServerError
  raise KumoDockerCloud::ServiceDeployError.new("Something went wrong during service update on Docker Cloud's end")
end
update_image(version) click to toggle source
# File lib/kumo_dockercloud/service.rb, line 65
def update_image(version)
  docker_cloud_api.services.update(uuid, image: "#{image_name}:#{version}")
rescue RestClient::InternalServerError
  raise KumoDockerCloud::ServiceDeployError.new("Something went wrong during service update on Docker Cloud's end")
end