Exemplo n.º 1
0
    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})
Exemplo n.º 2
0
    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
              })
Exemplo n.º 3
0
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
Exemplo n.º 4
0
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
Exemplo n.º 5
0
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
Exemplo n.º 6
0
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
Exemplo n.º 7
0
 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']))
Exemplo n.º 8
0
 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']))
Exemplo n.º 9
0
    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
Exemplo n.º 10
0
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)
Exemplo n.º 11
0
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)