def _check_if_deleted(self, instance): try: nova.get_instance_info(instance) except nova_exceptions.NotFound: return True return False
def _check_if_active(self, instance): server = nova.get_instance_info(instance) if server.status == 'ERROR': raise exc.SystemError("Node %s has error status" % server.name) return server.status == 'ACTIVE'
def init_instances_ips(instance): """Extracts internal and management ips. As internal ip will be used the first ip from the nova networks CIDRs. If use_floating_ip flag is set than management ip will be the first non-internal ip. """ server = nova.get_instance_info(instance) management_ip = None internal_ip = None for network_label, addresses in six.iteritems(server.addresses): for address in addresses: if address['OS-EXT-IPS:type'] == 'fixed': internal_ip = internal_ip or address['addr'] else: management_ip = management_ip or address['addr'] cluster = instance.cluster if (not CONF.use_floating_ips or (cluster.has_proxy_gateway() and not instance.node_group.is_proxy_gateway)): management_ip = internal_ip # NOTE(aignatov): Once bug #1262529 is fixed this 'if' block should be # reviewed and reformatted again, probably removed completely. if CONF.use_neutron and not (management_ip and internal_ip): LOG.debug("Instance doesn't yet contain Floating IP or Internal IP. " "Floating IP={mgmt_ip}, Internal IP={internal_ip}. " "Trying to get via Neutron.".format( mgmt_ip=management_ip, internal_ip=internal_ip)) neutron_client = neutron.client() ports = b.execute_with_retries( neutron_client.list_ports, device_id=server.id)["ports"] if ports: target_port_id = ports[0]['id'] fl_ips = b.execute_with_retries( neutron_client.list_floatingips, port_id=target_port_id)['floatingips'] if fl_ips: fl_ip = fl_ips[0] if not internal_ip: internal_ip = fl_ip['fixed_ip_address'] LOG.debug('Found fixed IP {internal_ip}' .format(internal_ip=internal_ip)) # Zeroing management_ip if Sahara in private network if not CONF.use_floating_ips: management_ip = internal_ip elif not management_ip: management_ip = fl_ip['floating_ip_address'] LOG.debug('Found floating IP {mgmt_ip}' .format(mgmt_ip=management_ip)) conductor.instance_update(context.ctx(), instance, {"management_ip": management_ip, "internal_ip": internal_ip}) return internal_ip and management_ip
def init_instances_ips(instance): """Extracts internal and management ips. As internal ip will be used the first ip from the nova networks CIDRs. If use_floating_ip flag is set than management ip will be the first non-internal ip. """ server = nova.get_instance_info(instance) management_ip = None internal_ip = None for network_label, addresses in six.iteritems(server.addresses): for address in addresses: if address['OS-EXT-IPS:type'] == 'fixed': internal_ip = internal_ip or address['addr'] else: management_ip = management_ip or address['addr'] cluster = instance.cluster if (not CONF.use_floating_ips or (cluster.has_proxy_gateway() and not instance.node_group.is_proxy_gateway)): management_ip = internal_ip # NOTE(aignatov): Once bug #1262529 is fixed this 'if' block should be # reviewed and reformatted again, probably removed completely. if CONF.use_neutron and not (management_ip and internal_ip): LOG.debug( "Instance %s doesn't contain yet Floating IP or Internal IP." " Floating IP=%s, Internal IP=%s. Trying to get via Neutron." % (server.name, management_ip, internal_ip)) neutron_client = neutron.client() ports = neutron_client.list_ports(device_id=server.id)["ports"] if ports: target_port_id = ports[0]['id'] fl_ips = neutron_client.list_floatingips( port_id=target_port_id)['floatingips'] if fl_ips: fl_ip = fl_ips[0] if not internal_ip: internal_ip = fl_ip['fixed_ip_address'] LOG.debug('Found fixed IP %s for %s' % (internal_ip, server.name)) # Zeroing management_ip if Sahara in private network if not CONF.use_floating_ips: management_ip = internal_ip elif not management_ip: management_ip = fl_ip['floating_ip_address'] LOG.debug('Found floating IP %s for %s' % (management_ip, server.name)) conductor.instance_update(context.ctx(), instance, { "management_ip": management_ip, "internal_ip": internal_ip }) return internal_ip and management_ip
def _check_if_active(self, instance): server = nova.get_instance_info(instance) if server.status == 'ERROR': # TODO(slukjanov): replace with specific error raise RuntimeError("node %s has error status" % server.name) return server.status == 'ACTIVE'
def init_instances_ips(instance): """Extracts internal and management ips. As internal ip will be used the first ip from the nova networks CIDRs. If use_floating_ip flag is set than management ip will be the first non-internal ip. """ server = nova.get_instance_info(instance) management_ip = None internal_ip = None for addresses in six.itervalues(server.addresses): # selects IPv4 preferentially for address in sorted(addresses, key=lambda addr: addr['version']): if address['OS-EXT-IPS:type'] == 'fixed': internal_ip = internal_ip or address['addr'] else: management_ip = management_ip or address['addr'] # tmckay-fp okay # conf.use_floating_ips becomes # "use a floating ip for the management ip if one is defined" # assignment comes from nova conf setting, or from floating_ip_pool value # tmckay-fp log an extra warning here in the neutron # case that the node group has a floating ip pool but # we don't have a management ip yet ... cluster = instance.cluster if (not CONF.use_floating_ips or not management_ip or (cluster.has_proxy_gateway() and not instance.node_group.is_proxy_gateway)): management_ip = internal_ip conductor.instance_update(context.ctx(), instance, { "management_ip": management_ip, "internal_ip": internal_ip }) return internal_ip and management_ip
def init_instances_ips(instance): """Extracts internal and management ips. As internal ip will be used the first ip from the nova networks CIDRs. If use_floating_ip flag is set than management ip will be the first non-internal ip. """ server = nova.get_instance_info(instance) management_ip = None internal_ip = None for addresses in six.itervalues(server.addresses): # selects IPv4 preferentially for address in sorted(addresses, key=lambda addr: addr['version']): if address['OS-EXT-IPS:type'] == 'fixed': internal_ip = internal_ip or address['addr'] else: management_ip = management_ip or address['addr'] # tmckay-fp okay # conf.use_floating_ips becomes # "use a floating ip for the management ip if one is defined" # assignment comes from nova conf setting, or from floating_ip_pool value # tmckay-fp log an extra warning here in the neutron # case that the node group has a floating ip pool but # we don't have a management ip yet ... cluster = instance.cluster if (not CONF.use_floating_ips or not management_ip or (cluster.has_proxy_gateway() and not instance.node_group.is_proxy_gateway)): management_ip = internal_ip conductor.instance_update(context.ctx(), instance, {"management_ip": management_ip, "internal_ip": internal_ip}) return internal_ip and management_ip
def init_instances_ips(instance): """Extracts internal and management ips. As internal ip will be used the first ip from the nova networks CIDRs. If use_floating_ip flag is set than management ip will be the first non-internal ip. """ server = nova.get_instance_info(instance) management_ip = None internal_ip = None for addresses in six.itervalues(server.addresses): # selects IPv4 preferentially for address in sorted(addresses, key=lambda addr: addr['version']): if address['OS-EXT-IPS:type'] == 'fixed': internal_ip = internal_ip or address['addr'] else: management_ip = management_ip or address['addr'] cluster = instance.cluster if (not CONF.use_floating_ips or (cluster.has_proxy_gateway() and not instance.node_group.is_proxy_gateway)): management_ip = internal_ip # NOTE(aignatov): Once bug #1262529 is fixed this 'if' block should be # reviewed and reformatted again, probably removed completely. if CONF.use_neutron and not (management_ip and internal_ip): LOG.debug("Instance doesn't yet contain Floating IP or Internal IP. " "Floating IP={mgmt_ip}, Internal IP={internal_ip}. " "Trying to get via Neutron.".format(mgmt_ip=management_ip, internal_ip=internal_ip)) neutron_client = neutron.client() ports = b.execute_with_retries(neutron_client.list_ports, device_id=server.id)["ports"] if ports: target_port_id = ports[0]['id'] fl_ips = b.execute_with_retries( neutron_client.list_floatingips, port_id=target_port_id)['floatingips'] if fl_ips: fl_ip = fl_ips[0] if not internal_ip: internal_ip = fl_ip['fixed_ip_address'] LOG.debug('Found fixed IP {internal_ip}'.format( internal_ip=internal_ip)) # Zeroing management_ip if Sahara in private network if not CONF.use_floating_ips: management_ip = internal_ip elif not management_ip: management_ip = fl_ip['floating_ip_address'] LOG.debug('Found floating IP {mgmt_ip}'.format( mgmt_ip=management_ip)) conductor.instance_update(context.ctx(), instance, { "management_ip": management_ip, "internal_ip": internal_ip }) return internal_ip and management_ip