bosh_deployer 1.3.0 → 1.4.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.
- data/lib/bosh/cli/commands/micro.rb +10 -5
- data/lib/deployer.rb +1 -0
- data/lib/deployer/config.rb +7 -0
- data/lib/deployer/instance_manager.rb +16 -64
- data/lib/deployer/instance_manager/aws.rb +2 -4
- data/lib/deployer/instance_manager/openstack.rb +2 -4
- data/lib/deployer/instance_manager/vcloud.rb +2 -4
- data/lib/deployer/instance_manager/vsphere.rb +2 -4
- data/lib/deployer/specification.rb +103 -0
- data/lib/deployer/version.rb +1 -1
- metadata +24 -18
| @@ -9,6 +9,7 @@ module Bosh::Cli::Command | |
| 9 9 |  | 
| 10 10 | 
             
                MICRO_DIRECTOR_PORT = 25555
         | 
| 11 11 | 
             
                DEFAULT_CONFIG_PATH = File.expand_path("~/.bosh_deployer_config")
         | 
| 12 | 
            +
                MICRO_BOSH_YAML = "micro_bosh.yml"
         | 
| 12 13 |  | 
| 13 14 | 
             
                def initialize(runner)
         | 
| 14 15 | 
             
                  super(runner)
         | 
| @@ -118,12 +119,12 @@ module Bosh::Cli::Command | |
| 118 119 | 
             
                    end
         | 
| 119 120 | 
             
                  end
         | 
| 120 121 |  | 
| 122 | 
            +
                  deployer.check_dependencies
         | 
| 123 | 
            +
             | 
| 121 124 | 
             
                  rel_path = deployment[/#{Regexp.escape File.join(work_dir, '')}(.*)/, 1]
         | 
| 122 125 |  | 
| 123 126 | 
             
                  desc = "`#{rel_path.green}' to `#{target_name.green}'"
         | 
| 124 127 |  | 
| 125 | 
            -
                  deployer.check_dependencies
         | 
| 126 | 
            -
             | 
| 127 128 | 
             
                  if update
         | 
| 128 129 | 
             
                    unless deployer.exists?
         | 
| 129 130 | 
             
                      err "No existing instance to update"
         | 
| @@ -139,7 +140,7 @@ module Bosh::Cli::Command | |
| 139 140 |  | 
| 140 141 | 
             
                    # make sure the user knows a persistent disk is required
         | 
| 141 142 | 
             
                    unless dig_hash(manifest, "resources", "persistent_disk")
         | 
| 142 | 
            -
                      quit("No persistent disk configured | 
| 143 | 
            +
                      quit("No persistent disk configured in #{MICRO_BOSH_YAML}".red)
         | 
| 143 144 | 
             
                    end
         | 
| 144 145 |  | 
| 145 146 | 
             
                    confirmation = "Deploying new"
         | 
| @@ -296,16 +297,20 @@ module Bosh::Cli::Command | |
| 296 297 |  | 
| 297 298 | 
             
                def find_deployment(name)
         | 
| 298 299 | 
             
                  check_if_deployments_dir
         | 
| 299 | 
            -
                  File.expand_path(File.join(work_dir, "#{name}",  | 
| 300 | 
            +
                  File.expand_path(File.join(work_dir, "#{name}", MICRO_BOSH_YAML))
         | 
| 300 301 | 
             
                end
         | 
| 301 302 |  | 
| 302 303 | 
             
                def deployment_name
         | 
| 303 304 | 
             
                  File.basename(File.dirname(deployment))
         | 
| 304 305 | 
             
                end
         | 
| 305 306 |  | 
| 307 | 
            +
                # set new target and clear out cached values
         | 
| 308 | 
            +
                # does not persist the new values (set_current() does this)
         | 
| 306 309 | 
             
                def set_target(ip)
         | 
| 307 310 | 
             
                  config.target = "http://#{ip}:#{MICRO_DIRECTOR_PORT}"
         | 
| 308 | 
            -
                  config. | 
| 311 | 
            +
                  config.target_name = nil
         | 
| 312 | 
            +
                  config.target_version = nil
         | 
| 313 | 
            +
                  config.target_uuid = nil
         | 
| 309 314 | 
             
                end
         | 
| 310 315 |  | 
| 311 316 | 
             
                def update_target
         | 
    
        data/lib/deployer.rb
    CHANGED
    
    
    
        data/lib/deployer/config.rb
    CHANGED
    
    | @@ -106,6 +106,13 @@ module Bosh::Deployer | |
| 106 106 | 
             
                    @networks
         | 
| 107 107 | 
             
                  end
         | 
| 108 108 |  | 
| 109 | 
            +
                  def task_checkpoint
         | 
| 110 | 
            +
                    # Bosh::Clouds::Config (bosh_cli >= 0.5.1) delegates task_checkpoint
         | 
| 111 | 
            +
                    # method to periodically check if director task is cancelled,
         | 
| 112 | 
            +
                    # so we need to define a void method in Bosh::Deployer::Config to avoid
         | 
| 113 | 
            +
                    # NoMethodError exceptions.
         | 
| 114 | 
            +
                  end
         | 
| 115 | 
            +
             | 
| 109 116 | 
             
                  private
         | 
| 110 117 |  | 
| 111 118 | 
             
                  def migrate_cpi
         | 
| @@ -151,11 +151,11 @@ module Bosh::Deployer | |
| 151 151 |  | 
| 152 152 | 
             
                  unless @apply_spec
         | 
| 153 153 | 
             
                    step "Fetching apply spec" do
         | 
| 154 | 
            -
                      @apply_spec = agent.release_apply_spec
         | 
| 154 | 
            +
                      @apply_spec = Specification.new(agent.release_apply_spec)
         | 
| 155 155 | 
             
                    end
         | 
| 156 156 | 
             
                  end
         | 
| 157 157 |  | 
| 158 | 
            -
                  apply | 
| 158 | 
            +
                  apply
         | 
| 159 159 |  | 
| 160 160 | 
             
                  step "Waiting for the director" do
         | 
| 161 161 | 
             
                    wait_until_director_ready
         | 
| @@ -163,12 +163,14 @@ module Bosh::Deployer | |
| 163 163 | 
             
                end
         | 
| 164 164 |  | 
| 165 165 | 
             
                def destroy
         | 
| 166 | 
            -
                  renderer.enter_stage("Delete micro BOSH",  | 
| 166 | 
            +
                  renderer.enter_stage("Delete micro BOSH", 7)
         | 
| 167 167 | 
             
                  agent_stop
         | 
| 168 168 | 
             
                  if state.disk_cid
         | 
| 169 | 
            -
                     | 
| 170 | 
            -
             | 
| 171 | 
            -
             | 
| 169 | 
            +
                    step "Deleting persistent disk `#{state.disk_cid}'" do
         | 
| 170 | 
            +
                      delete_disk(state.disk_cid, state.vm_cid)
         | 
| 171 | 
            +
                      state.disk_cid = nil
         | 
| 172 | 
            +
                      save_state
         | 
| 173 | 
            +
                    end
         | 
| 172 174 | 
             
                  end
         | 
| 173 175 | 
             
                  delete_vm
         | 
| 174 176 | 
             
                  delete_stemcell
         | 
| @@ -200,14 +202,14 @@ module Bosh::Deployer | |
| 200 202 | 
             
                      run_command("tar -zxf #{stemcell_tgz} -C #{stemcell}")
         | 
| 201 203 | 
             
                    end
         | 
| 202 204 |  | 
| 203 | 
            -
                    @apply_spec =  | 
| 205 | 
            +
                    @apply_spec = Specification.load_from_stemcell(stemcell)
         | 
| 204 206 |  | 
| 205 207 | 
             
                    # load properties from stemcell manifest
         | 
| 206 208 | 
             
                    properties = load_stemcell_manifest(stemcell)
         | 
| 207 209 |  | 
| 208 210 | 
             
                    # override with values from the deployment manifest
         | 
| 209 211 | 
             
                    override = Config.cloud_options["properties"]["stemcell"]
         | 
| 210 | 
            -
                     | 
| 212 | 
            +
                    properties["cloud_properties"].merge!(override) if override
         | 
| 211 213 |  | 
| 212 214 | 
             
                    step "Uploading stemcell" do
         | 
| 213 215 | 
             
                      cloud.create_stemcell("#{stemcell}/image", properties["cloud_properties"])
         | 
| @@ -287,7 +289,7 @@ module Bosh::Deployer | |
| 287 289 |  | 
| 288 290 | 
             
                def detach_disk(disk_cid)
         | 
| 289 291 | 
             
                  unless disk_cid
         | 
| 290 | 
            -
                    err "Error  | 
| 292 | 
            +
                    err "Error: nil value given for persistent disk id"
         | 
| 291 293 | 
             
                  end
         | 
| 292 294 |  | 
| 293 295 | 
             
                  unmount_disk(disk_cid)
         | 
| @@ -342,41 +344,12 @@ module Bosh::Deployer | |
| 342 344 | 
             
                  save_state
         | 
| 343 345 | 
             
                end
         | 
| 344 346 |  | 
| 345 | 
            -
                def  | 
| 346 | 
            -
                  properties = spec["properties"]
         | 
| 347 | 
            -
             | 
| 348 | 
            -
                  # set the director name to what is specified in the micro_bosh.yml
         | 
| 349 | 
            -
                  if Config.name
         | 
| 350 | 
            -
                    properties["director"] = {} unless properties["director"]
         | 
| 351 | 
            -
                    properties["director"]["name"] = Config.name
         | 
| 352 | 
            -
                  end
         | 
| 353 | 
            -
             | 
| 354 | 
            -
                  # blobstore and nats need to use an elastic IP (if available),
         | 
| 355 | 
            -
                  # as when the micro bosh instance is re-created during a
         | 
| 356 | 
            -
                  # deployment, it might get a new private IP
         | 
| 357 | 
            -
                  %w{blobstore nats}.each do |service|
         | 
| 358 | 
            -
                    update_agent_service_address(properties, service, bosh_ip)
         | 
| 359 | 
            -
                  end
         | 
| 360 | 
            -
             | 
| 361 | 
            -
                  services = %w{postgres director redis blobstore nats aws_registry
         | 
| 362 | 
            -
                                openstack_registry powerdns}
         | 
| 363 | 
            -
                  services.each do |service|
         | 
| 364 | 
            -
                    update_service_address(properties, service, service_ip)
         | 
| 365 | 
            -
                  end
         | 
| 366 | 
            -
             | 
| 367 | 
            -
                  # health monitor does not listen to any ports, so there is no
         | 
| 368 | 
            -
                  # need to update the service address, but we still want to
         | 
| 369 | 
            -
                  # be able to override values in the apply_spec
         | 
| 370 | 
            -
                  override_property(properties, "hm", Config.spec_properties["hm"])
         | 
| 371 | 
            -
             | 
| 372 | 
            -
                  spec
         | 
| 373 | 
            -
                end
         | 
| 374 | 
            -
             | 
| 375 | 
            -
                def apply(spec)
         | 
| 347 | 
            +
                def apply
         | 
| 376 348 | 
             
                  agent_stop
         | 
| 377 349 |  | 
| 378 350 | 
             
                  step "Applying micro BOSH spec" do
         | 
| 379 | 
            -
                     | 
| 351 | 
            +
                    update_spec(@apply_spec)
         | 
| 352 | 
            +
                    agent.run_task(:apply, @apply_spec.update(bosh_ip, service_ip))
         | 
| 380 353 | 
             
                  end
         | 
| 381 354 |  | 
| 382 355 | 
             
                  agent_start
         | 
| @@ -396,28 +369,6 @@ module Bosh::Deployer | |
| 396 369 |  | 
| 397 370 | 
             
                private
         | 
| 398 371 |  | 
| 399 | 
            -
                # update the agent service section from the contents of the apply_spec
         | 
| 400 | 
            -
                def update_agent_service_address(properties, service, address)
         | 
| 401 | 
            -
                  if Config.agent_properties
         | 
| 402 | 
            -
                    agent = properties["agent"] ||= {}
         | 
| 403 | 
            -
                    svc = agent[service] ||= {}
         | 
| 404 | 
            -
                    svc["address"] = address
         | 
| 405 | 
            -
             | 
| 406 | 
            -
                    override_property(agent, service, Config.agent_properties[service])
         | 
| 407 | 
            -
                  end
         | 
| 408 | 
            -
                end
         | 
| 409 | 
            -
             | 
| 410 | 
            -
                def update_service_address(properties, service, address)
         | 
| 411 | 
            -
                  return unless properties[service]
         | 
| 412 | 
            -
                  properties[service]["address"] = address
         | 
| 413 | 
            -
             | 
| 414 | 
            -
                  override_property(properties, service, Config.spec_properties[service])
         | 
| 415 | 
            -
                end
         | 
| 416 | 
            -
             | 
| 417 | 
            -
                def override_property(properties, service, override)
         | 
| 418 | 
            -
                  properties[service].merge!(override) if override
         | 
| 419 | 
            -
                end
         | 
| 420 | 
            -
             | 
| 421 372 | 
             
                def bosh_ip
         | 
| 422 373 | 
             
                  Config.bosh_ip
         | 
| 423 374 | 
             
                end
         | 
| @@ -456,7 +407,7 @@ module Bosh::Deployer | |
| 456 407 | 
             
                end
         | 
| 457 408 |  | 
| 458 409 | 
             
                def wait_until_director_ready
         | 
| 459 | 
            -
                  port = @apply_spec | 
| 410 | 
            +
                  port = @apply_spec.director_port
         | 
| 460 411 | 
             
                  url = "http://#{bosh_ip}:#{port}/info"
         | 
| 461 412 | 
             
                  wait_until_ready do
         | 
| 462 413 | 
             
                    info = Yajl::Parser.parse(HTTPClient.new.get(url).body)
         | 
| @@ -501,6 +452,7 @@ module Bosh::Deployer | |
| 501 452 | 
             
                  end
         | 
| 502 453 | 
             
                end
         | 
| 503 454 |  | 
| 455 | 
            +
                # TODO remove
         | 
| 504 456 | 
             
                def load_apply_spec(dir)
         | 
| 505 457 | 
             
                  load_spec("#{dir}/apply_spec.yml") do
         | 
| 506 458 | 
             
                    err "this isn't a micro bosh stemcell - apply_spec.yml missing"
         | 
| @@ -7,9 +7,9 @@ module Bosh::Deployer | |
| 7 7 |  | 
| 8 8 | 
             
                  include InstanceManagerHelpers
         | 
| 9 9 |  | 
| 10 | 
            +
                  # TODO extract
         | 
| 10 11 | 
             
                  def update_spec(spec)
         | 
| 11 | 
            -
                     | 
| 12 | 
            -
                    properties = spec["properties"]
         | 
| 12 | 
            +
                    properties = spec.properties
         | 
| 13 13 |  | 
| 14 14 | 
             
                    properties["aws"] =
         | 
| 15 15 | 
             
                      Config.spec_properties["aws"] ||
         | 
| @@ -19,8 +19,6 @@ module Bosh::Deployer | |
| 19 19 | 
             
                    properties["aws"]["stemcell"] = Config.cloud_options["properties"]["stemcell"]
         | 
| 20 20 |  | 
| 21 21 | 
             
                    spec.delete("networks")
         | 
| 22 | 
            -
             | 
| 23 | 
            -
                    spec
         | 
| 24 22 | 
             
                  end
         | 
| 25 23 |  | 
| 26 24 | 
             
                  def configure
         | 
| @@ -7,9 +7,9 @@ module Bosh::Deployer | |
| 7 7 |  | 
| 8 8 | 
             
                  include InstanceManagerHelpers
         | 
| 9 9 |  | 
| 10 | 
            +
                  # TODO extract
         | 
| 10 11 | 
             
                  def update_spec(spec)
         | 
| 11 | 
            -
                     | 
| 12 | 
            -
                    properties = spec["properties"]
         | 
| 12 | 
            +
                    properties = spec.properties
         | 
| 13 13 |  | 
| 14 14 | 
             
                    properties["openstack"] =
         | 
| 15 15 | 
             
                      Config.spec_properties["openstack"] ||
         | 
| @@ -19,8 +19,6 @@ module Bosh::Deployer | |
| 19 19 | 
             
                    properties["openstack"]["stemcell"] = Config.cloud_options["properties"]["stemcell"]
         | 
| 20 20 |  | 
| 21 21 | 
             
                    spec.delete("networks")
         | 
| 22 | 
            -
             | 
| 23 | 
            -
                    spec
         | 
| 24 22 | 
             
                  end
         | 
| 25 23 |  | 
| 26 24 | 
             
                  def configure
         | 
| @@ -5,17 +5,15 @@ module Bosh::Deployer | |
| 5 5 |  | 
| 6 6 | 
             
                class Vcloud < InstanceManager
         | 
| 7 7 |  | 
| 8 | 
            +
                  # TODO extract
         | 
| 8 9 | 
             
                  def update_spec(spec)
         | 
| 9 | 
            -
                     | 
| 10 | 
            -
                    properties = spec["properties"]
         | 
| 10 | 
            +
                    properties = spec.properties
         | 
| 11 11 |  | 
| 12 12 | 
             
                    properties["vcd"] =
         | 
| 13 13 | 
             
                      Config.spec_properties["vcd"] ||
         | 
| 14 14 | 
             
                      Config.cloud_options["properties"]["vcds"].first.dup
         | 
| 15 15 |  | 
| 16 16 | 
             
                    properties["vcd"]["address"] ||= properties["vcd"]["url"]
         | 
| 17 | 
            -
             | 
| 18 | 
            -
                    spec
         | 
| 19 17 | 
             
                  end
         | 
| 20 18 |  | 
| 21 19 | 
             
                  # @return [Integer] size in MiB
         | 
| @@ -13,17 +13,15 @@ module Bosh::Deployer | |
| 13 13 | 
             
                    @disk_model
         | 
| 14 14 | 
             
                  end
         | 
| 15 15 |  | 
| 16 | 
            +
                  # TODO extract
         | 
| 16 17 | 
             
                  def update_spec(spec)
         | 
| 17 | 
            -
                     | 
| 18 | 
            -
                    properties = spec["properties"]
         | 
| 18 | 
            +
                    properties = spec.properties
         | 
| 19 19 |  | 
| 20 20 | 
             
                    properties["vcenter"] =
         | 
| 21 21 | 
             
                      Config.spec_properties["vcenter"] ||
         | 
| 22 22 | 
             
                      Config.cloud_options["properties"]["vcenters"].first.dup
         | 
| 23 23 |  | 
| 24 24 | 
             
                    properties["vcenter"]["address"] ||= properties["vcenter"]["host"]
         | 
| 25 | 
            -
             | 
| 26 | 
            -
                    spec
         | 
| 27 25 | 
             
                  end
         | 
| 28 26 | 
             
                end
         | 
| 29 27 |  | 
| @@ -0,0 +1,103 @@ | |
| 1 | 
            +
            module Bosh::Deployer
         | 
| 2 | 
            +
              class Specification
         | 
| 3 | 
            +
             | 
| 4 | 
            +
                def self.load_from_stemcell(dir)
         | 
| 5 | 
            +
                  spec = load_apply_spec(dir)
         | 
| 6 | 
            +
                  Specification.new(spec)
         | 
| 7 | 
            +
                end
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                def self.load_apply_spec(dir)
         | 
| 10 | 
            +
                  file = "apply_spec.yml"
         | 
| 11 | 
            +
                  apply_spec = File.join(dir, file)
         | 
| 12 | 
            +
                  unless File.exist?(apply_spec)
         | 
| 13 | 
            +
                    err "this isn't a micro bosh stemcell - #{file} missing"
         | 
| 14 | 
            +
                  end
         | 
| 15 | 
            +
                  YAML.load_file(apply_spec)
         | 
| 16 | 
            +
                end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                attr_accessor :spec
         | 
| 19 | 
            +
                attr_accessor :properties
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                def initialize(spec)
         | 
| 22 | 
            +
                  @spec = spec
         | 
| 23 | 
            +
                  @properties = @spec["properties"]
         | 
| 24 | 
            +
                end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                # Update the spec with the IP of the micro bosh instance.
         | 
| 27 | 
            +
                # @param [String] bosh_ip IP address of the micro bosh VM
         | 
| 28 | 
            +
                # @param [String] service_ip private IP of the micro bosh VM on AWS/OS,
         | 
| 29 | 
            +
                #   or the same as the bosh_ip if vSphere/vCloud
         | 
| 30 | 
            +
                def update(bosh_ip, service_ip)
         | 
| 31 | 
            +
                  # set the director name to what is specified in the micro_bosh.yml
         | 
| 32 | 
            +
                  if Config.name
         | 
| 33 | 
            +
                    @properties["director"] = {} unless @properties["director"]
         | 
| 34 | 
            +
                    @properties["director"]["name"] = Config.name
         | 
| 35 | 
            +
                  end
         | 
| 36 | 
            +
             | 
| 37 | 
            +
                  # on AWS blobstore and nats need to use an elastic IP (if available),
         | 
| 38 | 
            +
                  # as when the micro bosh instance is re-created during a deployment,
         | 
| 39 | 
            +
                  # it might get a new private IP
         | 
| 40 | 
            +
                  %w{blobstore nats}.each do |service|
         | 
| 41 | 
            +
                    update_agent_service_address(service, bosh_ip)
         | 
| 42 | 
            +
                  end
         | 
| 43 | 
            +
             | 
| 44 | 
            +
                  services = %w{postgres director redis blobstore nats aws_registry
         | 
| 45 | 
            +
                                openstack_registry powerdns}
         | 
| 46 | 
            +
                  services.each do |service|
         | 
| 47 | 
            +
                    update_service_address(service, service_ip)
         | 
| 48 | 
            +
                  end
         | 
| 49 | 
            +
             | 
| 50 | 
            +
                  # health monitor does not listen to any ports, so there is no
         | 
| 51 | 
            +
                  # need to update the service address, but we still want to
         | 
| 52 | 
            +
                  # be able to override values in the apply_spec
         | 
| 53 | 
            +
                  override_property(@properties, "hm", Config.spec_properties["hm"])
         | 
| 54 | 
            +
             | 
| 55 | 
            +
                  # TODO this override should be made more generic
         | 
| 56 | 
            +
                  if Config.spec_properties.has_key?("ntp")
         | 
| 57 | 
            +
                    @properties["agent"] ||= {}
         | 
| 58 | 
            +
                    @properties["agent"]["ntp"] = Config.spec_properties["ntp"]
         | 
| 59 | 
            +
                  end
         | 
| 60 | 
            +
             | 
| 61 | 
            +
                  # TODO: this override is ugly (aws-specific) but needed for aws_registry
         | 
| 62 | 
            +
                  if Config.spec_properties["aws"] ||
         | 
| 63 | 
            +
                     Config.cloud_options["properties"]["aws"]
         | 
| 64 | 
            +
                    @properties["aws"] = Config.spec_properties["aws"] ||
         | 
| 65 | 
            +
                                         Config.cloud_options["properties"]["aws"]
         | 
| 66 | 
            +
                  end
         | 
| 67 | 
            +
             | 
| 68 | 
            +
                  @spec
         | 
| 69 | 
            +
                end
         | 
| 70 | 
            +
             | 
| 71 | 
            +
                # @param [String] name property name to delete from the spec
         | 
| 72 | 
            +
                def delete(name)
         | 
| 73 | 
            +
                  @spec.delete(name)
         | 
| 74 | 
            +
                end
         | 
| 75 | 
            +
             | 
| 76 | 
            +
                # @return [String] the port the director runs on
         | 
| 77 | 
            +
                def director_port
         | 
| 78 | 
            +
                  @properties["director"]["port"]
         | 
| 79 | 
            +
                end
         | 
| 80 | 
            +
             | 
| 81 | 
            +
                private
         | 
| 82 | 
            +
             | 
| 83 | 
            +
                # update the agent service section from the contents of the apply_spec
         | 
| 84 | 
            +
                def update_agent_service_address(service, address)
         | 
| 85 | 
            +
                  agent = @properties["agent"] ||= {}
         | 
| 86 | 
            +
                  svc = agent[service] ||= {}
         | 
| 87 | 
            +
                  svc["address"] = address
         | 
| 88 | 
            +
             | 
| 89 | 
            +
                  override_property(agent, service, Config.agent_properties[service])
         | 
| 90 | 
            +
                end
         | 
| 91 | 
            +
             | 
| 92 | 
            +
                def update_service_address(service, address)
         | 
| 93 | 
            +
                  return unless @properties[service]
         | 
| 94 | 
            +
                  @properties[service]["address"] = address
         | 
| 95 | 
            +
             | 
| 96 | 
            +
                  override_property(@properties, service, Config.spec_properties[service])
         | 
| 97 | 
            +
                end
         | 
| 98 | 
            +
             | 
| 99 | 
            +
                def override_property(properties, service, override)
         | 
| 100 | 
            +
                  properties[service].merge!(override) if override
         | 
| 101 | 
            +
                end
         | 
| 102 | 
            +
              end
         | 
| 103 | 
            +
            end
         | 
    
        data/lib/deployer/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: bosh_deployer
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1. | 
| 4 | 
            +
              version: 1.4.0
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -9,7 +9,7 @@ authors: | |
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date:  | 
| 12 | 
            +
            date: 2013-01-18 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: bosh_cli
         | 
| @@ -32,17 +32,17 @@ dependencies: | |
| 32 32 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 33 33 | 
             
                none: false
         | 
| 34 34 | 
             
                requirements:
         | 
| 35 | 
            -
                - -  | 
| 35 | 
            +
                - - ! '>='
         | 
| 36 36 | 
             
                  - !ruby/object:Gem::Version
         | 
| 37 | 
            -
                    version: 0.5. | 
| 37 | 
            +
                    version: 0.5.1
         | 
| 38 38 | 
             
              type: :runtime
         | 
| 39 39 | 
             
              prerelease: false
         | 
| 40 40 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 41 41 | 
             
                none: false
         | 
| 42 42 | 
             
                requirements:
         | 
| 43 | 
            -
                - -  | 
| 43 | 
            +
                - - ! '>='
         | 
| 44 44 | 
             
                  - !ruby/object:Gem::Version
         | 
| 45 | 
            -
                    version: 0.5. | 
| 45 | 
            +
                    version: 0.5.1
         | 
| 46 46 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 47 47 | 
             
              name: bosh_vcloud_cpi
         | 
| 48 48 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -50,7 +50,7 @@ dependencies: | |
| 50 50 | 
             
                requirements:
         | 
| 51 51 | 
             
                - - ~>
         | 
| 52 52 | 
             
                  - !ruby/object:Gem::Version
         | 
| 53 | 
            -
                    version: 0.4. | 
| 53 | 
            +
                    version: 0.4.9
         | 
| 54 54 | 
             
              type: :runtime
         | 
| 55 55 | 
             
              prerelease: false
         | 
| 56 56 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| @@ -58,7 +58,7 @@ dependencies: | |
| 58 58 | 
             
                requirements:
         | 
| 59 59 | 
             
                - - ~>
         | 
| 60 60 | 
             
                  - !ruby/object:Gem::Version
         | 
| 61 | 
            -
                    version: 0.4. | 
| 61 | 
            +
                    version: 0.4.9
         | 
| 62 62 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 63 63 | 
             
              name: bosh_vsphere_cpi
         | 
| 64 64 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -80,17 +80,17 @@ dependencies: | |
| 80 80 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 81 81 | 
             
                none: false
         | 
| 82 82 | 
             
                requirements:
         | 
| 83 | 
            -
                - -  | 
| 83 | 
            +
                - - ! '>='
         | 
| 84 84 | 
             
                  - !ruby/object:Gem::Version
         | 
| 85 | 
            -
                    version: 0. | 
| 85 | 
            +
                    version: 0.7.0
         | 
| 86 86 | 
             
              type: :runtime
         | 
| 87 87 | 
             
              prerelease: false
         | 
| 88 88 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 89 89 | 
             
                none: false
         | 
| 90 90 | 
             
                requirements:
         | 
| 91 | 
            -
                - -  | 
| 91 | 
            +
                - - ! '>='
         | 
| 92 92 | 
             
                  - !ruby/object:Gem::Version
         | 
| 93 | 
            -
                    version: 0. | 
| 93 | 
            +
                    version: 0.7.0
         | 
| 94 94 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 95 95 | 
             
              name: bosh_aws_registry
         | 
| 96 96 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -114,7 +114,7 @@ dependencies: | |
| 114 114 | 
             
                requirements:
         | 
| 115 115 | 
             
                - - ~>
         | 
| 116 116 | 
             
                  - !ruby/object:Gem::Version
         | 
| 117 | 
            -
                    version: 0.0. | 
| 117 | 
            +
                    version: 0.0.6
         | 
| 118 118 | 
             
              type: :runtime
         | 
| 119 119 | 
             
              prerelease: false
         | 
| 120 120 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| @@ -122,7 +122,7 @@ dependencies: | |
| 122 122 | 
             
                requirements:
         | 
| 123 123 | 
             
                - - ~>
         | 
| 124 124 | 
             
                  - !ruby/object:Gem::Version
         | 
| 125 | 
            -
                    version: 0.0. | 
| 125 | 
            +
                    version: 0.0.6
         | 
| 126 126 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 127 127 | 
             
              name: bosh_openstack_registry
         | 
| 128 128 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -130,7 +130,7 @@ dependencies: | |
| 130 130 | 
             
                requirements:
         | 
| 131 131 | 
             
                - - ~>
         | 
| 132 132 | 
             
                  - !ruby/object:Gem::Version
         | 
| 133 | 
            -
                    version: 0.0. | 
| 133 | 
            +
                    version: 0.0.5
         | 
| 134 134 | 
             
              type: :runtime
         | 
| 135 135 | 
             
              prerelease: false
         | 
| 136 136 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| @@ -138,7 +138,7 @@ dependencies: | |
| 138 138 | 
             
                requirements:
         | 
| 139 139 | 
             
                - - ~>
         | 
| 140 140 | 
             
                  - !ruby/object:Gem::Version
         | 
| 141 | 
            -
                    version: 0.0. | 
| 141 | 
            +
                    version: 0.0.5
         | 
| 142 142 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 143 143 | 
             
              name: agent_client
         | 
| 144 144 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -192,6 +192,7 @@ files: | |
| 192 192 | 
             
            - lib/deployer/instance_manager/vsphere.rb
         | 
| 193 193 | 
             
            - lib/deployer/instance_manager_helpers.rb
         | 
| 194 194 | 
             
            - lib/deployer/models/instance.rb
         | 
| 195 | 
            +
            - lib/deployer/specification.rb
         | 
| 195 196 | 
             
            - lib/deployer/version.rb
         | 
| 196 197 | 
             
            - README.rdoc
         | 
| 197 198 | 
             
            - Rakefile
         | 
| @@ -208,17 +209,22 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 208 209 | 
             
              - - ! '>='
         | 
| 209 210 | 
             
                - !ruby/object:Gem::Version
         | 
| 210 211 | 
             
                  version: '0'
         | 
| 212 | 
            +
                  segments:
         | 
| 213 | 
            +
                  - 0
         | 
| 214 | 
            +
                  hash: -132721875164071695
         | 
| 211 215 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 212 216 | 
             
              none: false
         | 
| 213 217 | 
             
              requirements:
         | 
| 214 218 | 
             
              - - ! '>='
         | 
| 215 219 | 
             
                - !ruby/object:Gem::Version
         | 
| 216 220 | 
             
                  version: '0'
         | 
| 221 | 
            +
                  segments:
         | 
| 222 | 
            +
                  - 0
         | 
| 223 | 
            +
                  hash: -132721875164071695
         | 
| 217 224 | 
             
            requirements: []
         | 
| 218 225 | 
             
            rubyforge_project: 
         | 
| 219 | 
            -
            rubygems_version: 1.8. | 
| 226 | 
            +
            rubygems_version: 1.8.24
         | 
| 220 227 | 
             
            signing_key: 
         | 
| 221 228 | 
             
            specification_version: 3
         | 
| 222 229 | 
             
            summary: Micro BOSH Deployer
         | 
| 223 230 | 
             
            test_files: []
         | 
| 224 | 
            -
            has_rdoc: 
         |