Exemple #1
0
    def _validate_config(self, data):
        config = data['config']
        resource_name = data['resource_name']
        capitalize_name = resource_name.capitalize()
        try:
            name = data['name']
            validate_mesos_res_name(name)
        except ValidationError as e:
            raise ValidationError(f'{capitalize_name} {e}')

        # 校验配置信息中的变量名是否规范
        validate_variable_inconfig(config)

        if settings.IS_TEMPLATE_VALIDATE:
            validate_res_config(config, capitalize_name,
                                get_config_schema(resource_name))

        # 检查单个 APP 中端口名称/挂载名 是否重复
        containers = config.get('spec',
                                {}).get('template',
                                        {}).get('spec',
                                                {}).get('containers', [])
        try:
            self._validate_volume_duplicate(containers)
        except ValidationError as e:
            raise ValidationError(_("挂载名:{},请重新填写").format(e))
        try:
            self._validate_port_duplicate(containers)
        except ValidationError as e:
            raise ValidationError(_("端口名称:{},请重新填写").format(e))

        if data.get('version_id'):
            validate_port_duplicate_in_ventity(containers,
                                               data.get('resource_id'),
                                               data['version_id'])
Exemple #2
0
    def _validate_config(self, data):
        config = data['config']
        resource_name = data['resource_name']
        short_name = resource_name[3:]
        try:
            name = data['name']
            validate_k8s_res_name(name)
        except ValidationError as e:
            raise ValidationError(f'{short_name} {e}')

        try:
            validate_pod_selector(config)
        except ValidationError as e:
            raise ValidationError(
                _("{}[{}]中选择器{}").format(short_name, name, e))

        # 校验配置信息中的变量名是否规范
        validate_variable_inconfig(config)

        if settings.IS_TEMPLATE_VALIDATE:
            validate_res_config(config, short_name,
                                get_config_schema(resource_name))
            try:
                validate_affinity(config)
            except ValidationError as e:
                raise ValidationError(f'{short_name} {e}')
Exemple #3
0
    def _validate_config(self, data):
        config = data['config']
        resource_name = data['resource_name']
        capitalize_name = resource_name.capitalize()

        validate_variable_inconfig(config)

        if settings.IS_TEMPLATE_VALIDATE:
            resource_name = data['resource_name']
            validate_res_config(config, capitalize_name, get_config_schema(resource_name))
    def validate(self, data):
        if not data.get('version_id'):
            raise ValidationError("请先创建 Deployment,再创建 Service")

        if not data.get('deploy_tag_list'):
            raise ValidationError(
                f"Service模板中{data.get('name')}: 请选择关联的 Deployment")

        config = data['config']
        if not data.get('namespace_id') and not data.get('instance_id'):
            # 校验配置信息中的变量名是否规范
            validate_variable_inconfig(config)
            self._validate_name_duplicate(data)

        return data
    def validate(self, data):
        # 目前仅支持配置了selector的Service的创建, 因此需要校验deploy_tag_list字段
        if not data.get('version_id'):
            raise ValidationError(_("请先创建 Deployment/StatefulSet/Daemonset,再创建 Service"))

        if not data.get('deploy_tag_list'):
            raise ValidationError(_("Service模板中{}: 请选择关联的 Deployment/StatefulSet/Daemonset").format(data.get('name')))

        config = data['config']
        if not data.get('namespace_id') and not data.get('instance_id'):
            # 校验配置信息中的变量名是否规范
            validate_variable_inconfig(config)
            self._validate_name_duplicate(data)

        return data
Exemple #6
0
    def _validate_config(self, data):
        config = data['config']
        resource_name = data['resource_name']
        capitalize_name = resource_name.capitalize()
        try:
            name = data['name']
            validate_mesos_res_name(name)
        except ValidationError as e:
            raise ValidationError(f'{capitalize_name} {e}')

        # 校验配置信息中的变量名是否规范
        validate_variable_inconfig(config)

        if settings.IS_TEMPLATE_VALIDATE:
            validate_res_config(config, capitalize_name, get_config_schema(resource_name))
Exemple #7
0
    def validate(self, data):
        self._validate_config(data)

        if not data.get('namespace_id') and not data.get('instance_id'):
            # 校验配置信息中的变量名是否规范
            validate_variable_inconfig(data['config'])
            self._validate_name_duplicate(data)

        if isinstance(data['app_id'], dict):
            app_id_list = data['app_id'].keys()
        else:
            app_id_list = data['app_id']

        validate_app_in_ventity(app_id_list, data.get('version_id'))

        return data