Class: Bosh::Deployer::InstanceManager::Openstack

Inherits:
Object
  • Object
show all
Defined in:
lib/bosh/deployer/instance_manager/openstack.rb

Instance Method Summary collapse

Constructor Details

#initialize(instance_manager, config, logger) ⇒ Openstack

Returns a new instance of Openstack.



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/bosh/deployer/instance_manager/openstack.rb', line 8

def initialize(instance_manager, config, logger)
  @instance_manager = instance_manager
  @logger = logger
  @config = config
  properties = config.cloud_options['properties']

  @registry = Registry.new(
    properties['registry']['endpoint'],
    'openstack',
    properties['openstack'],
    instance_manager,
    logger,
  )

  ssh_key, ssh_port, ssh_user, ssh_wait = ssh_properties(properties)
  ssh_server = SshServer.new(ssh_user, ssh_key, ssh_port, logger)
  @remote_tunnel = RemoteTunnel.new(ssh_server, ssh_wait, logger)
end

Instance Method Details

#agent_services_ipObject



62
63
64
65
# File 'lib/bosh/deployer/instance_manager/openstack.rb', line 62

def agent_services_ip
  logger.info('discovering agent services ip')
  discover_agent_services_ip
end

#check_dependenciesObject



44
45
46
# File 'lib/bosh/deployer/instance_manager/openstack.rb', line 44

def check_dependencies
  # nothing to check, move on...
end

#client_services_ipObject



57
58
59
60
# File 'lib/bosh/deployer/instance_manager/openstack.rb', line 57

def client_services_ip
  logger.info('discovering client services ip')
  discover_client_services_ip
end

#disk_size(cid) ⇒ Integer

Returns size in MiB.

Returns:

  • (Integer)

    size in MiB



72
73
74
75
# File 'lib/bosh/deployer/instance_manager/openstack.rb', line 72

def disk_size(cid)
  # OpenStack stores disk size in GiB but we work with MiB
  instance_manager.cloud.openstack.volumes.get(cid).size * 1024
end

#internal_services_ipObject



67
68
69
# File 'lib/bosh/deployer/instance_manager/openstack.rb', line 67

def internal_services_ip
  config.internal_services_ip
end

#persistent_disk_changed?Boolean

Returns:

  • (Boolean)


77
78
79
80
81
82
83
84
# File 'lib/bosh/deployer/instance_manager/openstack.rb', line 77

def persistent_disk_changed?
  # since OpenStack stores disk size in GiB and we use MiB there
  # is a risk of conversion errors which lead to an unnecessary
  # disk migration, so we need to do a double conversion
  # here to avoid that
  requested = (config.resources['persistent_disk'] / 1024.0).ceil * 1024
  requested != disk_size(instance_manager.state.disk_cid)
end

#remote_tunnelObject



27
28
29
# File 'lib/bosh/deployer/instance_manager/openstack.rb', line 27

def remote_tunnel
  @remote_tunnel.create(instance_manager.client_services_ip, registry.port)
end

#startObject



48
49
50
# File 'lib/bosh/deployer/instance_manager/openstack.rb', line 48

def start
  registry.start
end

#stopObject



52
53
54
55
# File 'lib/bosh/deployer/instance_manager/openstack.rb', line 52

def stop
  registry.stop
  instance_manager.save_state
end

#update_spec(spec) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/bosh/deployer/instance_manager/openstack.rb', line 31

def update_spec(spec)
  properties = spec.properties

  properties['openstack'] =
    config.spec_properties['openstack'] ||
      config.cloud_options['properties']['openstack'].dup

  properties['openstack']['registry'] = config.cloud_options['properties']['registry']
  properties['openstack']['stemcell'] = config.cloud_options['properties']['stemcell']

  spec.delete('networks')
end