コード例 #1
0
ファイル: serializers.py プロジェクト: dimuha-rs/adcm
class ProviderSerializer(serializers.Serializer):
    id = serializers.IntegerField(read_only=True)
    name = serializers.CharField()
    prototype_id = serializers.IntegerField()
    description = serializers.CharField(required=False)
    state = serializers.CharField(read_only=True)
    url = hlink('provider-details', 'id', 'provider_id')

    def validate_prototype_id(self, prototype_id):
        proto = check_obj(Prototype, {
            'id': prototype_id,
            'type': 'provider'
        }, "PROTOTYPE_NOT_FOUND")
        return proto

    def create(self, validated_data):
        try:
            return cm.api.add_host_provider(
                validated_data.get('prototype_id'), validated_data.get('name'),
                validated_data.get('description', ''))
        except Prototype.DoesNotExist:
            raise AdcmApiEx('PROTOTYPE_NOT_FOUND') from None
        except IntegrityError:
            raise AdcmApiEx("PROVIDER_CONFLICT") from None
        except AdcmEx as e:
            raise AdcmApiEx(e.code, e.msg, e.http_code) from e
コード例 #2
0
ファイル: serializers.py プロジェクト: dimuha-rs/adcm
class ProviderHostSerializer(serializers.Serializer):
    id = serializers.IntegerField(read_only=True)
    cluster_id = serializers.IntegerField(read_only=True)
    prototype_id = serializers.IntegerField(required=False, read_only=True)
    provider_id = serializers.IntegerField(required=False, read_only=True)
    fqdn = serializers.CharField(help_text='fully qualified domain name')
    description = serializers.CharField(required=False)
    state = serializers.CharField(read_only=True)
    # stack = serializers.JSONField(read_only=True)
    url = hlink('host-details', 'id', 'host_id')

    def validate_fqdn(self, name):
        try:
            return cm.stack.validate_name(name, 'Host name')
        except AdcmEx as e:
            raise AdcmApiEx(e.code, e.msg, e.http_code) from e

    def create(self, validated_data):
        provider = validated_data.get('provider')
        try:
            proto = Prototype.objects.get(bundle=provider.prototype.bundle,
                                          type='host')
        except Prototype.DoesNotExist:
            raise AdcmApiEx('PROTOTYPE_NOT_FOUND') from None
        try:
            return cm.api.add_host(proto, self.context.get('provider'),
                                   validated_data.get('fqdn'),
                                   validated_data.get('description', ''))
        except IntegrityError:
            raise AdcmApiEx("HOST_CONFLICT", "duplicate host") from None
        except AdcmEx as e:
            raise AdcmApiEx(e.code, e.msg, e.http_code) from e
コード例 #3
0
ファイル: serializers.py プロジェクト: dimuha-rs/adcm
class UpgradeSerializer(serializers.Serializer):
    id = serializers.IntegerField(read_only=True)
    name = serializers.CharField(required=False)
    bundle_id = serializers.IntegerField(read_only=True)
    description = serializers.CharField(required=False)
    min_version = serializers.CharField(required=False)
    max_version = serializers.CharField(required=False)
    min_strict = serializers.BooleanField(required=False)
    max_strict = serializers.BooleanField(required=False)
    upgradable = serializers.BooleanField(required=False)
    license = serializers.CharField(required=False)
    license_url = hlink('bundle-license', 'bundle_id', 'bundle_id')
    from_edition = serializers.JSONField(required=False)
    state_available = serializers.JSONField(required=False)
    state_on_success = serializers.CharField(required=False)
コード例 #4
0
ファイル: serializers.py プロジェクト: dimuha-rs/adcm
class ActionSerializer(serializers.Serializer):
    id = serializers.IntegerField(read_only=True)
    prototype_id = serializers.IntegerField()
    name = serializers.CharField()
    type = serializers.CharField()
    display_name = serializers.CharField(required=False)
    description = serializers.CharField(required=False)
    ui_options = serializers.JSONField(required=False)
    button = serializers.CharField(required=False)
    script = serializers.CharField()
    script_type = serializers.CharField()
    state_on_success = serializers.CharField()
    state_on_fail = serializers.CharField()
    hostcomponentmap = serializers.JSONField(required=False)
    allow_to_terminate = serializers.BooleanField(read_only=True)
    partial_execution = serializers.BooleanField(read_only=True)
コード例 #5
0
ファイル: serializers.py プロジェクト: dimuha-rs/adcm
class HostSerializer(serializers.Serializer):
    id = serializers.IntegerField(read_only=True)
    cluster_id = serializers.IntegerField(read_only=True)
    prototype_id = serializers.IntegerField(help_text='id of host type')
    provider_id = serializers.IntegerField()
    fqdn = serializers.CharField(help_text='fully qualified domain name')
    description = serializers.CharField(required=False)
    state = serializers.CharField(read_only=True)
    url = hlink('host-details', 'id', 'host_id')

    def get_issue(self, obj):
        return cm.issue.get_issue(obj)

    def validate_prototype_id(self, prototype_id):
        proto = check_obj(Prototype, {
            'id': prototype_id,
            'type': 'host'
        }, "PROTOTYPE_NOT_FOUND")
        return proto

    def validate_provider_id(self, provider_id):
        provider = check_obj(HostProvider, provider_id, "PROVIDER_NOT_FOUND")
        return provider

    def validate_fqdn(self, name):
        try:
            return cm.stack.validate_name(name, 'Host name')
        except AdcmEx as e:
            raise AdcmApiEx(e.code, e.msg, e.http_code) from e

    def create(self, validated_data):
        try:
            return cm.api.add_host(validated_data.get('prototype_id'),
                                   validated_data.get('provider_id'),
                                   validated_data.get('fqdn'),
                                   validated_data.get('description', ''))
        except Prototype.DoesNotExist:
            raise AdcmApiEx('PROTOTYPE_NOT_FOUND') from None
        except IntegrityError:
            raise AdcmApiEx("HOST_CONFLICT", "duplicate host") from None
        except AdcmEx as e:
            raise AdcmApiEx(e.code, e.msg, e.http_code) from e

    def update(self, instance, validated_data):
        instance.cluster_id = validated_data.get('cluster_id')
        instance.save()
        return instance
コード例 #6
0
ファイル: serializers.py プロジェクト: dimuha-rs/adcm
class AdcmDetailSerializer(AdcmSerializer):
    prototype_version = serializers.SerializerMethodField()
    bundle_id = serializers.IntegerField(read_only=True)
    config = CommonAPIURL(view_name='object-config')
    action = CommonAPIURL(view_name='object-action')

    def get_prototype_version(self, obj):
        return obj.prototype.version
コード例 #7
0
ファイル: serializers.py プロジェクト: dimuha-rs/adcm
class AddGroupRoleSerializer(serializers.Serializer):
    role_id = serializers.IntegerField()
    name = serializers.CharField(read_only=True)

    def update(self, group, validated_data):  # pylint: disable=arguments-differ
        role = check_obj(Role, {'id': validated_data.get('role_id')},
                         'ROLE_NOT_FOUND')
        return safe_api(cm.api.add_group_role, (group, role))
コード例 #8
0
ファイル: serializers.py プロジェクト: dimuha-rs/adcm
class DoUpgradeSerializer(serializers.Serializer):
    id = serializers.IntegerField(read_only=True)
    upgradable = serializers.BooleanField(read_only=True)

    def create(self, validated_data):
        try:
            upgrade = check_obj(Upgrade, validated_data.get('upgrade_id'),
                                'UPGRADE_NOT_FOUND')
            return cm.upgrade.do_upgrade(validated_data.get('obj'), upgrade)
        except AdcmEx as e:
            raise AdcmApiEx(e.code, e.msg, e.http_code) from e
コード例 #9
0
ファイル: serializers.py プロジェクト: dimuha-rs/adcm
class ProviderDetailSerializer(ProviderSerializer):
    issue = serializers.SerializerMethodField()
    edition = serializers.CharField(read_only=True)
    license = serializers.CharField(read_only=True)
    bundle_id = serializers.IntegerField(read_only=True)
    prototype = hlink('provider-type-details', 'prototype_id', 'prototype_id')
    config = CommonAPIURL(view_name='object-config')
    action = CommonAPIURL(view_name='object-action')
    upgrade = hlink('provider-upgrade', 'id', 'provider_id')
    host = hlink('provider-host', 'id', 'provider_id')

    def get_issue(self, obj):
        return cm.issue.get_issue(obj)
コード例 #10
0
ファイル: serializers.py プロジェクト: dimuha-rs/adcm
class HostDetailSerializer(HostSerializer):
    # stack = serializers.JSONField(read_only=True)
    issue = serializers.SerializerMethodField()
    bundle_id = serializers.IntegerField(read_only=True)
    status = serializers.SerializerMethodField()
    config = CommonAPIURL(view_name='object-config')
    action = CommonAPIURL(view_name='object-action')
    prototype = hlink('host-type-details', 'prototype_id', 'prototype_id')

    def get_issue(self, obj):
        return cm.issue.get_issue(obj)

    def get_status(self, obj):
        return cm.status_api.get_host_status(obj.id)
コード例 #11
0
ファイル: serializers.py プロジェクト: dimuha-rs/adcm
class RoleSerializer(serializers.Serializer):
    id = serializers.IntegerField(read_only=True)
    name = serializers.CharField(read_only=True)
    description = serializers.CharField(read_only=True)
    url = hlink('role-details', 'id', 'role_id')
コード例 #12
0
ファイル: serializers.py プロジェクト: dimuha-rs/adcm
class AdcmSerializer(serializers.Serializer):
    id = serializers.IntegerField(read_only=True)
    name = serializers.CharField()
    prototype_id = serializers.IntegerField()
    state = serializers.CharField(read_only=True)
    url = hlink('adcm-details', 'id', 'adcm_id')
コード例 #13
0
ファイル: serializers.py プロジェクト: dimuha-rs/adcm
class EmptySerializer(serializers.Serializer):
    id = serializers.IntegerField(read_only=True)