Class: KumoDockerCloud::Stack
- Inherits:
-
Object
- Object
- KumoDockerCloud::Stack
- Defined in:
- lib/kumo_dockercloud/stack.rb
Instance Attribute Summary collapse
-
#app_name ⇒ Object
readonly
Returns the value of attribute app_name.
-
#options ⇒ Object
readonly
Returns the value of attribute options.
-
#stack_name ⇒ Object
readonly
Returns the value of attribute stack_name.
Instance Method Summary collapse
- #deploy(service_name, version, checker = ServiceChecker.new) ⇒ Object
- #deploy_blue_green(service_names, version, checker = ServiceChecker.new) ⇒ Object
- #exists? ⇒ Boolean
-
#initialize(app_name, env_name, options = {}) ⇒ Stack
constructor
A new instance of Stack.
- #services ⇒ Object
Constructor Details
#initialize(app_name, env_name, options = {}) ⇒ Stack
Returns a new instance of Stack.
7 8 9 10 11 |
# File 'lib/kumo_dockercloud/stack.rb', line 7 def initialize(app_name, env_name, = {}) @app_name = app_name @stack_name = "#{app_name}-#{env_name}" = end |
Instance Attribute Details
#app_name ⇒ Object (readonly)
Returns the value of attribute app_name.
5 6 7 |
# File 'lib/kumo_dockercloud/stack.rb', line 5 def app_name @app_name end |
#options ⇒ Object (readonly)
Returns the value of attribute options.
5 6 7 |
# File 'lib/kumo_dockercloud/stack.rb', line 5 def end |
#stack_name ⇒ Object (readonly)
Returns the value of attribute stack_name.
5 6 7 |
# File 'lib/kumo_dockercloud/stack.rb', line 5 def stack_name @stack_name end |
Instance Method Details
#deploy(service_name, version, checker = ServiceChecker.new) ⇒ Object
13 14 15 16 17 18 19 20 |
# File 'lib/kumo_dockercloud/stack.rb', line 13 def deploy(service_name, version, checker = ServiceChecker.new) validate_params(service_name, 'Service name') validate_params(version, 'Version') service = Service.new(stack_name, service_name, docker_cloud_api) service.deploy(version) checker.verify(service) end |
#deploy_blue_green(service_names, version, checker = ServiceChecker.new) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/kumo_dockercloud/stack.rb', line 26 def deploy_blue_green(service_names, version, checker = ServiceChecker.new) haproxy_service = HaproxyService.new(@stack_name, docker_cloud_api) services = service_names.map { |name| Service.new(stack_name, name, docker_cloud_api) } ordered_deployment(services).each do |service| begin ConsoleJockey.write_line("Attempting to put #{service.name} into maintenance mode in HAProxy") haproxy_service.disable_service(service) unless service.state == "Stopped" ConsoleJockey.write_line("Deploying version #{version} to #{service.name}") service.deploy(version) ConsoleJockey.write_line("Verifying that #{service.name} was successfully deployed") checker.verify(service) ConsoleJockey.write_line("Attempting to reenable #{service.name} in HAProxy") haproxy_service.enable_service(service) rescue HAProxyStateError => e raise ServiceDeployError.new("Unable to place service #{service.name} into maintainance mode on HAProxy with message: #{e.message}") rescue ServiceDeployError => e haproxy_service.disable_service(service) raise ServiceDeployError.new("Deployment or verification of service #{service.name} failed with message: #{e.message}") end end end |
#exists? ⇒ Boolean
22 23 24 |
# File 'lib/kumo_dockercloud/stack.rb', line 22 def exists? !docker_cloud_stack.nil? end |
#services ⇒ Object
49 50 51 52 |
# File 'lib/kumo_dockercloud/stack.rb', line 49 def services services = docker_cloud_api.services_by_stack_name(stack_name) services.map { |service| Service.new(stack_name, service.name) } end |