def plug(self, instance, vif): LOG.debug(_("plug: instance_uuid=%(uuid)s vif=%(vif)s") % {'uuid': instance['uuid'], 'vif': vif}) network, mapping = vif vif_uuid = mapping['vif_uuid'] ctx = context.get_admin_context() node = bmdb.bm_node_get_by_instance_uuid(ctx, instance['uuid']) # TODO(deva): optimize this database query # this is just searching for a free physical interface pifs = bmdb.bm_interface_get_all_by_bm_node_id(ctx, node['id']) for pif in pifs: if not pif['vif_uuid']: bmdb.bm_interface_set_vif_uuid(ctx, pif['id'], vif_uuid) LOG.debug(_("pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)") % {'id': pif['id'], 'vif_uuid': vif_uuid}) self._after_plug(instance, network, mapping, pif) return # NOTE(deva): should this really be raising an exception # when there are no physical interfaces left? raise exception.NovaException(_( "Baremetal node: %(id)s has no available physical interface" " for virtual interface %(vif_uuid)s") % {'id': node['id'], 'vif_uuid': vif_uuid})
def plug(self, instance, vif): LOG.debug( _("plug: instance_uuid=%(uuid)s vif=%(vif)s") % { 'uuid': instance['uuid'], 'vif': vif }) network, mapping = vif vif_uuid = mapping['vif_uuid'] ctx = context.get_admin_context() node = bmdb.bm_node_get_by_instance_uuid(ctx, instance['uuid']) # TODO(deva): optimize this database query # this is just searching for a free physical interface pifs = bmdb.bm_interface_get_all_by_bm_node_id(ctx, node['id']) for pif in pifs: if not pif['vif_uuid']: bmdb.bm_interface_set_vif_uuid(ctx, pif['id'], vif_uuid) LOG.debug( _("pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)") % { 'id': pif['id'], 'vif_uuid': vif_uuid }) self._after_plug(instance, network, mapping, pif) return # NOTE(deva): should this really be raising an exception # when there are no physical interfaces left? raise exception.NovaException( _("Baremetal node: %(id)s has no available physical interface" " for virtual interface %(vif_uuid)s") % { 'id': node['id'], 'vif_uuid': vif_uuid })
def _get_baremetal_node_by_instance_uuid(instance_uuid): ctx = nova_context.get_admin_context() node = db.bm_node_get_by_instance_uuid(ctx, instance_uuid) if node["service_host"] != CONF.host: LOG.error(_("Request for baremetal node %s " "sent to wrong service host") % instance_uuid) raise exception.InstanceNotFound(instance_id=instance_uuid) return node
def _get_baremetal_node_by_instance_uuid(instance_uuid): ctx = nova_context.get_admin_context() node = db.bm_node_get_by_instance_uuid(ctx, instance_uuid) if node['service_host'] != CONF.host: LOG.error(_("Request for baremetal node %s " "sent to wrong service host") % instance_uuid) raise exception.InstanceNotFound(instance_id=instance_uuid) return node
def _get_baremetal_node_by_instance_uuid(instance_uuid): if not instance_uuid: return None ctx = nova_context.get_admin_context() node = bmdb.bm_node_get_by_instance_uuid(ctx, instance_uuid) if not node: return None if node['service_host'] != FLAGS.host: return None return node
def plug(self, instance, vif): LOG.debug("plug: instance_uuid=%s vif=%s", instance['uuid'], vif) network, mapping = vif ctx = context.get_admin_context() node = bmdb.bm_node_get_by_instance_uuid(ctx, instance['uuid']) if not node: return pifs = bmdb.bm_interface_get_all_by_bm_node_id(ctx, node['id']) for pif in pifs: if not pif['vif_uuid']: bmdb.bm_interface_set_vif_uuid(ctx, pif['id'], mapping.get('vif_uuid')) LOG.debug("pif:%s is plugged (vif_uuid=%s)", pif['id'], mapping.get('vif_uuid')) self._after_plug(instance, network, mapping, pif) return raise exception.NovaException( "baremetalnode:%s has no vacant pif for vif_uuid=%s" % (node['id'], mapping['vif_uuid']))
def consume_from_instance(self, instance): """Update information about a host from instance info.""" if self.baremetal_compute: context = ctx.get_admin_context() instance_uuid = instance.get('uuid', None) if instance_uuid: bm_node = bmdb.bm_node_get_by_instance_uuid(context, instance['uuid']) else: bm_node = None if bm_node: return if len(self.available_nodes): self.available_nodes.pop(0) if len(self.available_nodes): bm_node = self.available_nodes[0] else: bm_node = {} bm_node['local_gb'] = 0 bm_node['memory_mb'] = 0 bm_node['cpus'] = 0 self.free_disk_mb = bm_node['local_gb'] * 1024 self.free_ram_mb = bm_node['memory_mb'] self.vcpus_used = 0 self.vcpus_total = bm_node['cpus'] else: disk_mb = (instance['root_gb'] + instance['ephemeral_gb']) * 1024 ram_mb = instance['memory_mb'] vcpus = instance['vcpus'] self.free_ram_mb -= ram_mb self.free_disk_mb -= disk_mb self.vcpus_used += vcpus
def _get_baremetal_node_by_instance_uuid(instance_uuid): context = nova_context.get_admin_context() return bmdb.bm_node_get_by_instance_uuid(context, instance_uuid)