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(options) ⇒ Object
-
#initialize(app_name, env_name, options = { contactable: true }) ⇒ Stack
constructor
TODO delete options.
- #services ⇒ Object
Constructor Details
#initialize(app_name, env_name, options = { contactable: true }) ⇒ Stack
TODO delete options
6 7 8 9 10 |
# File 'lib/kumo_dockercloud/stack.rb', line 6 def initialize(app_name, env_name, = { contactable: true }) @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.
3 4 5 |
# File 'lib/kumo_dockercloud/stack.rb', line 3 def app_name @app_name end |
#options ⇒ Object (readonly)
Returns the value of attribute options.
3 4 5 |
# File 'lib/kumo_dockercloud/stack.rb', line 3 def end |
#stack_name ⇒ Object (readonly)
Returns the value of attribute stack_name.
3 4 5 |
# File 'lib/kumo_dockercloud/stack.rb', line 3 def stack_name @stack_name end |
Instance Method Details
#deploy(service_name, version, checker = ServiceChecker.new) ⇒ Object
12 13 14 15 16 17 18 19 |
# File 'lib/kumo_dockercloud/stack.rb', line 12 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) service.deploy(version) checker.verify(service) end |
#deploy_blue_green(options) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/kumo_dockercloud/stack.rb', line 26 def deploy_blue_green() service_names = [:service_names] version = [:version] checker = [:checker] || ServiceChecker.new switching_service_name = [:switching_service_name] validate_params(version, "Version") validate_params(service_names, "Service names") validate_params(switching_service_name, "Switching service name") switching_service = Service.new(stack_name, switching_service_name) link = switching_service.links.find { |link| service_names.include?(Service.service_by_resource_uri(link[:to_service]).name) } active_service = Service.service_by_resource_uri(link[:to_service]) inactive_service_name = service_names.find { |name| name != active_service.name } inactive_service = Service.new(stack_name, inactive_service_name) inactive_service.deploy(version) checker.verify(inactive_service) switching_service.set_link(inactive_service, link[:name]) active_service.stop end |
#services ⇒ Object
21 22 23 24 |
# File 'lib/kumo_dockercloud/stack.rb', line 21 def services services = docker_cloud_api.services_by_stack_name(stack_name) services.map { |service| Service.new(stack_name, service.name) } end |