Ejemplo n.º 1
0
 def get_compute_node(self, context, node_uuid):
     query = model_query(models.ComputeNode)
     query = query.filter_by(uuid=node_uuid)
     try:
         return query.one()
     except NoResultFound:
         raise exception.ComputeNodeNotFound(compute_node=node_uuid)
Ejemplo n.º 2
0
 def destroy_compute_node(self, context, node_uuid):
     session = get_session()
     with session.begin():
         query = model_query(models.ComputeNode, session=session)
         query = query.filter_by(uuid=node_uuid)
         count = query.delete()
         if count != 1:
             raise exception.ComputeNodeNotFound(compute_node=node_uuid)
Ejemplo n.º 3
0
 def get_compute_node_by_hostname(self, context, hostname):
     query = model_query(models.ComputeNode)
     query = query.filter_by(hostname=hostname)
     try:
         return query.one()
     except NoResultFound:
         raise exception.ComputeNodeNotFound(compute_node=hostname)
     except MultipleResultsFound:
         raise exception.Conflict('Multiple compute nodes exist with same '
                                  'hostname. Please use the uuid instead.')
Ejemplo n.º 4
0
 def get_compute_node(self, context, node_uuid):
     try:
         node = None
         res = self.client.read('/compute_nodes/' + node_uuid)
         node = translate_etcd_result(res, 'compute_node')
     except etcd.EtcdKeyNotFound:
         raise exception.ComputeNodeNotFound(compute_node=node_uuid)
     except Exception as e:
         LOG.error('Error occurred while retrieving zun compute nodes: %s',
                   six.text_type(e))
         raise
     return node
Ejemplo n.º 5
0
    def _do_update_compute_node(self, node_uuid, values):
        session = get_session()
        with session.begin():
            query = model_query(models.ComputeNode, session=session)
            query = query.filter_by(uuid=node_uuid)
            try:
                ref = query.with_lockmode('update').one()
            except NoResultFound:
                raise exception.ComputeNodeNotFound(compute_node=node_uuid)

            ref.update(values)
        return ref
Ejemplo n.º 6
0
    def update_compute_node(self, context, node_uuid, values):
        if 'uuid' in values:
            msg = _('Cannot overwrite UUID for an existing node.')
            raise exception.InvalidParameterValue(err=msg)

        try:
            target = self.client.read('/compute_nodes/' + node_uuid)
            target_value = json.loads(target.value)
            target_value.update(values)
            target.value = json.dumps(target_value)
            self.client.update(target)
        except etcd.EtcdKeyNotFound:
            raise exception.ComputeNodeNotFound(compute_node=node_uuid)
        except Exception as e:
            LOG.error('Error occurred while updating compute node: %s',
                      six.text_type(e))
            raise
        return translate_etcd_result(target, 'compute_node')
Ejemplo n.º 7
0
    def get_compute_node_by_hostname(self, context, hostname):
        """Return a compute node.

        :param context: The security context
        :param hostname: The hostname of a compute node.
        :returns: A compute node.
        """
        try:
            compute_nodes = self.list_compute_nodes(
                context, filters={'hostname': hostname})
            if compute_nodes:
                return compute_nodes[0]
            else:
                raise exception.ComputeNodeNotFound(compute_node=hostname)
        except Exception as e:
            LOG.error('Error occurred while retrieving compute node: %s',
                      six.text_type(e))
            raise