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)
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)
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.')
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
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
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')
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