class Bosh::Deployer::InstanceManager::Openstack
Attributes
config[R]
instance_manager[R]
logger[R]
registry[R]
Public Class Methods
new(instance_manager, config, logger)
click to toggle source
# 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
Public Instance Methods
agent_services_ip()
click to toggle source
# 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_dependencies()
click to toggle source
# File lib/bosh/deployer/instance_manager/openstack.rb, line 44 def check_dependencies # nothing to check, move on... end
client_services_ip()
click to toggle source
# 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)
click to toggle source
@return [Integer] size in MiB
# 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_ip()
click to toggle source
# File lib/bosh/deployer/instance_manager/openstack.rb, line 67 def internal_services_ip config.internal_services_ip end
persistent_disk_changed?()
click to toggle source
# 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_tunnel()
click to toggle source
# File lib/bosh/deployer/instance_manager/openstack.rb, line 27 def remote_tunnel @remote_tunnel.create(instance_manager.client_services_ip, registry.port) end
start()
click to toggle source
# File lib/bosh/deployer/instance_manager/openstack.rb, line 48 def start registry.start end
stop()
click to toggle source
# File lib/bosh/deployer/instance_manager/openstack.rb, line 52 def stop registry.stop instance_manager.save_state end
update_spec(spec)
click to toggle source
# 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
Private Instance Methods
discover_agent_services_ip()
click to toggle source
# File lib/bosh/deployer/instance_manager/openstack.rb, line 121 def discover_agent_services_ip if instance_manager.state.vm_cid server = instance_manager.cloud.openstack.servers.get(instance_manager.state.vm_cid) ip = server.private_ip_address logger.info("discovered bosh ip=#{ip}") ip else default_ip = config.agent_services_ip logger.info("ip address not discovered - using default of #{default_ip}") default_ip end end
discover_client_services_ip()
click to toggle source
# File lib/bosh/deployer/instance_manager/openstack.rb, line 106 def discover_client_services_ip if instance_manager.state.vm_cid server = instance_manager.cloud.openstack.servers.get(instance_manager.state.vm_cid) ip = server.floating_ip_address || server.private_ip_address logger.info("discovered bosh ip=#{ip}") ip else default_ip = config.client_services_ip logger.info("ip address not discovered - using default of #{default_ip}") default_ip end end
ssh_properties(properties)
click to toggle source
# File lib/bosh/deployer/instance_manager/openstack.rb, line 90 def ssh_properties(properties) ssh_user = properties['openstack']['ssh_user'] ssh_port = properties['openstack']['ssh_port'] || 22 ssh_wait = properties['openstack']['ssh_wait'] || 60 key = properties['openstack']['private_key'] err 'Missing properties.openstack.private_key' unless key ssh_key = File.expand_path(key) unless File.exists?(ssh_key) err "properties.openstack.private_key '#{key}' does not exist" end [ssh_key, ssh_port, ssh_user, ssh_wait] end