def destroy_baymodel(self, baymodel_id): session = get_session() with session.begin(): query = model_query(models.BayModel, session=session) query = add_identity_filter(query, baymodel_id) try: baymodel_ref = query.one() except NoResultFound: raise exception.ClusterTemplateNotFound( clustertemplate=baymodel_id) if self._is_baymodel_referenced(session, baymodel_ref['uuid']): raise exception.ClusterTemplateReferenced( clustertemplate=baymodel_id) query.delete()
def _do_update_cluster_template(self, cluster_template_id, values): session = get_session() with session.begin(): query = model_query(models.ClusterTemplate, session=session) query = add_identity_filter(query, cluster_template_id) try: ref = query.with_lockmode('update').one() except NoResultFound: raise exception.ClusterTemplateNotFound( clustertemplate=cluster_template_id) if self._is_cluster_template_referenced(session, ref['uuid']): # we only allow to update ClusterTemplate to be public if not self._is_publishing_cluster_template(values): raise exception.ClusterTemplateReferenced( clustertemplate=cluster_template_id) ref.update(values) return ref
def _do_update_cluster_template(self, cluster_template_id, values): session = get_session() with session.begin(): query = model_query(models.ClusterTemplate, session=session) query = add_identity_filter(query, cluster_template_id) try: ref = query.with_for_update().one() except NoResultFound: raise exception.ClusterTemplateNotFound( clustertemplate=cluster_template_id) if self._is_cluster_template_referenced(session, ref['uuid']): # NOTE(flwang): We only allow to update ClusterTemplate to be # public, hidden and rename if (not self._is_publishing_cluster_template(values) and list(six.viewkeys(values)) != ["name"]): raise exception.ClusterTemplateReferenced( clustertemplate=cluster_template_id) ref.update(values) return ref