예제 #1
0
 def validate_delete(cls, data, instance):
     if instance.is_default:
         raise errors.CannotDelete("Default node group cannot be deleted.")
     if instance.nodes and not all(
             node.status == consts.NODE_STATUSES.discover
             for node in instance.nodes):
         raise errors.CannotDelete(
             "Node group can be deleted only when all its nodes "
             "are in bootstrap state.")
예제 #2
0
    def validate_delete(cls, release, role_name):
        clusters = [cluster.id for cluster in release.clusters]
        node = db().query(models.Node).filter(
            models.Node.cluster_id.in_(clusters)).filter(
                sa.or_(models.Node.roles.any(role_name),
                       models.Node.pending_roles.any(role_name))).first()

        if node:
            raise errors.CannotDelete(
                "Can't delete roles that is assigned to some node.")
예제 #3
0
파일: release.py 프로젝트: xglhjk6/fuel-web
    def validate_update(cls, data, instance):
        d = cls.validate_json(data)
        cls._validate_common(d)

        if db().query(models.Release).filter_by(
                name=d.get("name", instance.name),
                version=d.get("version", instance.version)).filter(
                    sa.not_(models.Release.id == instance.id)).first():
            raise errors.AlreadyExists(
                "Release with the same name "
                "and version already exists",
                log_message=True)

        if 'roles_metadata' in d:
            new_roles = set(d['roles_metadata'])
            clusters = [cluster.id for cluster in instance.clusters]

            new_roles_array = sa.cast(
                psql.array(new_roles),
                psql.ARRAY(sa.String(consts.ROLE_NAME_MAX_SIZE)))

            node = db().query(models.Node).filter(
                models.Node.cluster_id.in_(clusters)).filter(
                    sa.not_(
                        sa.and_(
                            models.Node.roles.contained_by(new_roles_array),
                            models.Node.pending_roles.contained_by(
                                new_roles_array)))).first()

            if node:
                used_role = set(node.roles + node.pending_roles)
                used_role -= new_roles

                raise errors.CannotDelete(
                    "Cannot delete roles already assigned "
                    "to nodes: {0}".format(','.join(used_role)))

        return d
예제 #4
0
파일: plugin.py 프로젝트: xglhjk6/fuel-web
 def validate_delete(cls, data, instance):
     if ClusterPlugins.is_plugin_used(instance.id):
         raise errors.CannotDelete("Can't delete plugin which is enabled "
                                   "for some environment.")
예제 #5
0
 def validate_delete(cls, data, instance):
     if instance.clusters:
         raise errors.CannotDelete("Can't delete plugin which is enabled "
                                   "for some environment.")
예제 #6
0
 def validate_delete(cls, instance):
     if instance.nodes or instance.pending_nodes:
         raise errors.CannotDelete(
             "Can't delete roles that is assigned to some node.")
예제 #7
0
 def validate_delete(cls, instance, force=False):
     if (instance.nodes or instance.networks) and not force:
         raise errors.CannotDelete(
             "You cannot delete a node group that contains "
             "nodes or networks")
예제 #8
0
 def validate_delete(cls, instance):
     if instance.clusters:
         raise errors.CannotDelete("Can't delete release with "
                                   "clusters assigned")
예제 #9
0
 def validate_delete(cls, instance, force=False):
     if instance.status not in (consts.TASK_STATUSES.ready,
                                consts.TASK_STATUSES.error) and not force:
         raise errors.CannotDelete(
             "You cannot delete running task manually")