From ad8970a1c5e207f180e45bb8e5c3ef0f2853614a Mon Sep 17 00:00:00 2001 From: maopengzhang Date: Fri, 19 Apr 2019 10:20:42 +0800 Subject: [PATCH] improve enum and list in serializers improve enum and list in serializers Change-Id: I714f39a3b0b03693f6c95b2e93ac7590dc3bbf94 Issue-ID: VFC-1241 Signed-off-by: maopengzhang --- lcm/ns/enum.py | 142 ++++++++++++++++++++++++++++++ lcm/ns/serializers/sol/affected_nss.py | 26 ++---- lcm/ns/serializers/sol/affected_pnfs.py | 15 ++-- lcm/ns/serializers/sol/affected_saps.py | 23 ++--- lcm/ns/serializers/sol/affected_vls.py | 17 ++-- lcm/ns/serializers/sol/affected_vnffgs.py | 17 ++-- lcm/ns/serializers/sol/affected_vnfs.py | 22 ++--- lcm/ns/serializers/sol/cp_serializers.py | 17 ++-- lcm/pub/utils/enumutil.py | 4 + 9 files changed, 183 insertions(+), 100 deletions(-) create mode 100644 lcm/ns/enum.py diff --git a/lcm/ns/enum.py b/lcm/ns/enum.py new file mode 100644 index 00000000..5e22f66a --- /dev/null +++ b/lcm/ns/enum.py @@ -0,0 +1,142 @@ +# Copyright 2019 ZTE Corporation. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +from lcm.pub.utils.enumutil import enum + +ACTION_TYPE = enum( + START=1, + STOP=2, + REBOOT=3 +) +AUTH_TYPE = enum( + BASIC="BASIC", + OAUTH2_CLIENT_CREDENTIALS="OAUTH2_CLIENT_CREDENTIALS", + TLS_CERT="TLS_CERT" +) +CHANGE_RESULT = enum( + COMPLETED='COMPLETED', + ROLLED_BACK='ROLLED_BACK', + FAILED='FAILED', + PARTIALLY_COMPLETED='PARTIALLY_COMPLETED' +) +CHANGE_TYPE = enum( + ADD='ADD', + DELETE='DELETE', + REMOVE='REMOVE', + INSTANTIATE='INSTANTIATE', + TERMINATE='TERMINATE', + SCALE='SCALE', + UPDATE='UPDATE', + CHANGE_FLAVOUR='CHANGE_FLAVOUR', + HEAL='HEAL', + OPERATE='OPERATE', + MODIFY='MODIFY', + MODIFY_INFORMATION='MODIFY_INFORMATION', + CHANGE_EXTERNAL_VNF_CONNECTIVITY='CHANGE_EXTERNAL_VNF_CONNECTIVITY', + ADD_LINK_PORT='ADD_LINK_PORT', + REMOVE_LINK_PORT='REMOVE_LINK_PORT' +) +GRANT_TYPE = enum( + INSTANTIATE="INSTANTIATE", + TERMINATE="TERMINATE", + HEAL_CREATE="Heal Create", + HEAL_RESTART="Heal Restart", + OPERATE="OPERATE" +) +HEAL_ACTION_TYPE = enum( + START="vmCreate", + RESTART="vmReset" +) +IPADDRESSES_TYPE = enum( + IPV4='IPV4', + IPV6='IPV6' +) +LCM_NOTIFICATION_STATUS = enum( + START="START", + RESULT="RESULT" +) +LAYER_PROTOCOL = enum( + IP_OVER_ETHERNET="IP_OVER_ETHERNET" +) +NS_COMPOMENT_TYPE = enum( + VNF="VNF", + PNF="PNF", + NS="NS" +) +NS_INST_STATUS = enum( + EMPTY='empty', + INSTANTIATING='instantiating', + TERMINATING='terminating', + ACTIVE='active', + FAILED='failed', + INACTIVE='inactive', + UPDATING='updating', + SCALING='scaling', + HEALING='healing' +) +OPERATION_STATE_TYPE = enum( + STARTING="STARTING", + PROCESSING="PROCESSING", + COMPLETED="COMPLETED", + FAILED_TEMP="FAILED_TEMP", + FAILED="FAILED", + ROLLING_BACK="ROLLING_BACK", + ROLLED_BACK="ROLLED_BACK" +) +OPERATION_TYPE = enum( + INSTANTIATE="INSTANTIATE", + SCALE="SCALE", + TERMINATE="TERMINATE", + UPDATE="UPDATE", + HEAL="HEAL", +) +OPNAME_FOR_CHANGE_NOTIFICATION_TYPE = enum( + VNF_INSTANTIATE="VNF_INSTANTIATE", + VNF_SCALE="VNF_SCALE", + VNF_SCALE_TO_LEVEL="VNF_SCALE_TO_LEVEL", + VNF_CHANGE_FLAVOUR="VNF_CHANGE_FLAVOUR", + VNF_TERMINATE="VNF_TERMINATE", + VNF_HEAL="VNF_HEAL", + VNF_OPERATE="VNF_OPERATE", + VNF_CHANGE_EXT_CONN="VNF_CHANGE_EXT_CONN", + VNF_MODIFY_INFO="VNF_MODIFY_INFO", + NS_INSTANTIATE="NS_INSTANTIATE", + NS_SCALE="NS_SCALE", + NS_UPDATE="NS_UPDATE", + NS_TERMINATE="NS_TERMINATE", + NS_HEAL="NS_HEAL" +) +OPOCC_STATUS_FOR_CHANGENOTIFICATION_TYPE = enum( + START="START", + COMPLETED="COMPLETED ", + PARTIALLY_COMPLETED="PARTIALLY_COMPLETED", + FAILED="FAILED", + ROLLED_BACK="ROLLED_BACK", +) +OWNER_TYPE = enum( + VNF=0, + VNFM=1, + NS=2 +) +VNF_STATUS = enum( + NULL='null', + INSTANTIATING="instantiating", + INACTIVE='inactive', + ACTIVE="active", + FAILED="failed", + TERMINATING="terminating", + SCALING="scaling", + OPERATING="operating", + UPDATING="updating", + HEALING="healing" +) diff --git a/lcm/ns/serializers/sol/affected_nss.py b/lcm/ns/serializers/sol/affected_nss.py index c35b0830..d4d61706 100644 --- a/lcm/ns/serializers/sol/affected_nss.py +++ b/lcm/ns/serializers/sol/affected_nss.py @@ -1,4 +1,5 @@ # Copyright (c) 2019, CMCC Technologies Co., Ltd. +# Copyright (c) 2019, ZTE Corporation. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -15,25 +16,8 @@ from rest_framework import serializers -from lcm.ns import const - - -CHANGE_TYPE = [ - const.CHANGE_TYPES.ADD, - const.CHANGE_TYPES.REMOVE, - const.CHANGE_TYPES.INSTANTIATE, - const.CHANGE_TYPES.SCALE, - const.CHANGE_TYPES.UPDATE, - const.CHANGE_TYPES.HEAL, - const.CHANGE_TYPES.TERMINATE -] - -CHANGE_RESULT = [ - const.CHANGE_RESULTS.COMPLETED, - const.CHANGE_RESULTS.ROLLED_BACK, - const.CHANGE_RESULTS.FAILED, - const.CHANGE_RESULTS.PARTIALLY_COMPLETED -] +from lcm.ns.enum import CHANGE_TYPE, CHANGE_RESULT +from lcm.pub.utils.enumutil import enum_to_list class AffectedNssSerializer(serializers.Serializer): @@ -48,10 +32,10 @@ class AffectedNssSerializer(serializers.Serializer): changeType = serializers.ChoiceField( help_text="Signals the type of change", required=True, - choices=CHANGE_TYPE + choices=enum_to_list(CHANGE_TYPE) ) changeResult = serializers.ChoiceField( help_text="Signals the result of change identified by the 'changeType' attribute.", required=True, - choices=CHANGE_RESULT + choices=enum_to_list(CHANGE_RESULT) ) diff --git a/lcm/ns/serializers/sol/affected_pnfs.py b/lcm/ns/serializers/sol/affected_pnfs.py index c89d4a45..071f96e7 100644 --- a/lcm/ns/serializers/sol/affected_pnfs.py +++ b/lcm/ns/serializers/sol/affected_pnfs.py @@ -1,4 +1,5 @@ # Copyright (c) 2019, CMCC Technologies Co., Ltd. +# Copyright (c) 2019, ZTE Corporation. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -14,14 +15,8 @@ from rest_framework import serializers -from lcm.ns.const import CHANGE_TYPES, CHANGE_RESULT - - -CHANGE_TYPE = [ - CHANGE_TYPES.ADD, - CHANGE_TYPES.REMOVE, - CHANGE_TYPES.MODIFY -] +from lcm.ns.enum import CHANGE_TYPE, CHANGE_RESULT +from lcm.pub.utils.enumutil import enum_to_list class AffectedPnfsSerializer(serializers.Serializer): @@ -47,10 +42,10 @@ class AffectedPnfsSerializer(serializers.Serializer): changeType = serializers.ChoiceField( help_text="Signals the type of change", required=True, - choices=CHANGE_TYPE + choices=enum_to_list(CHANGE_TYPE) ) changeResult = serializers.ChoiceField( help_text="Signals the result of change identified by the 'changeType' attribute.", required=True, - choices=CHANGE_RESULT + choices=enum_to_list(CHANGE_RESULT) ) diff --git a/lcm/ns/serializers/sol/affected_saps.py b/lcm/ns/serializers/sol/affected_saps.py index b1091e5e..7c334945 100644 --- a/lcm/ns/serializers/sol/affected_saps.py +++ b/lcm/ns/serializers/sol/affected_saps.py @@ -1,5 +1,5 @@ # Copyright (c) 2019, CMCC Technologies Co., Ltd. -# Copyright 2019 ZTE Corporation. +# Copyright (c) 2019, ZTE Corporation. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -15,21 +15,8 @@ from rest_framework import serializers - -from lcm.ns import const - - -CHANGE_TYPE = [ - const.CHANGE_TYPES.ADD, - const.CHANGE_TYPES.REMOVE, - const.CHANGE_TYPES.MODIFY -] - -CHANGE_RESULT = [ - const.CHANGE_RESULTS.COMPLETED, - const.CHANGE_RESULTS.ROLLED_BACK, - const.CHANGE_RESULTS.FAILED -] +from lcm.ns.enum import CHANGE_TYPE, CHANGE_RESULT +from lcm.pub.utils.enumutil import enum_to_list class AffectedSapsSerializer(serializers.Serializer): @@ -47,10 +34,10 @@ class AffectedSapsSerializer(serializers.Serializer): changeType = serializers.ChoiceField( help_text="Signals the type of lifecycle change", required=True, - choices=CHANGE_TYPE + choices=enum_to_list(CHANGE_TYPE) ) changeResult = serializers.ChoiceField( help_text="Signals the result of change identified by the 'changeType' attribute.", required=True, - choices=CHANGE_RESULT + choices=enum_to_list(CHANGE_RESULT) ) diff --git a/lcm/ns/serializers/sol/affected_vls.py b/lcm/ns/serializers/sol/affected_vls.py index 26e0c9b1..a891e83a 100644 --- a/lcm/ns/serializers/sol/affected_vls.py +++ b/lcm/ns/serializers/sol/affected_vls.py @@ -1,4 +1,5 @@ # Copyright (c) 2019, CMCC Technologies Co., Ltd. +# Copyright (c) 2019, ZTE Corporation. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -14,16 +15,8 @@ from rest_framework import serializers - -from lcm.ns.const import CHANGE_TYPES, CHANGE_RESULT - -CHANGE_TYPE = [ - CHANGE_TYPES.ADD, - CHANGE_TYPES.DELETE, - CHANGE_TYPES.MODIFY, - CHANGE_TYPES.ADD_LINK_PORT, - CHANGE_TYPES.REMOVE_LINK_PORT -] +from lcm.ns.enum import CHANGE_TYPE, CHANGE_RESULT +from lcm.pub.utils.enumutil import enum_to_list class AffectedVLsSerializer(serializers.Serializer): @@ -38,10 +31,10 @@ class AffectedVLsSerializer(serializers.Serializer): changeType = serializers.ChoiceField( help_text="Signals the type of change", required=True, - choices=CHANGE_TYPE + choices=enum_to_list(CHANGE_TYPE) ) changeResult = serializers.ChoiceField( help_text="Signals the result of change identified by the 'changeType' attribute.", required=True, - choices=CHANGE_RESULT + choices=enum_to_list(CHANGE_RESULT) ) diff --git a/lcm/ns/serializers/sol/affected_vnffgs.py b/lcm/ns/serializers/sol/affected_vnffgs.py index 3e5de99b..9d00b4bb 100644 --- a/lcm/ns/serializers/sol/affected_vnffgs.py +++ b/lcm/ns/serializers/sol/affected_vnffgs.py @@ -1,5 +1,5 @@ # Copyright (c) 2019, CMCC Technologies Co., Ltd. -# Copyright 2019 ZTE Corporation. +# Copyright (c) 2019, ZTE Corporation. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -15,15 +15,8 @@ from rest_framework import serializers - -from lcm.ns import const - - -CHANGE_TYPE = [ - const.CHANGE_TYPES.ADD, - const.CHANGE_TYPES.REMOVE, - const.CHANGE_TYPES.MODIFY -] +from lcm.ns.enum import CHANGE_TYPE, CHANGE_RESULT +from lcm.pub.utils.enumutil import enum_to_list class AffectedVnffgsSerializer(serializers.Serializer): @@ -38,10 +31,10 @@ class AffectedVnffgsSerializer(serializers.Serializer): changeType = serializers.ChoiceField( help_text="Signals the type of lifecycle change.", required=True, - choices=CHANGE_TYPE + choices=enum_to_list(CHANGE_TYPE) ) changeResult = serializers.ChoiceField( help_text="Signals the result of change identified by the 'changeType' attribute.", required=True, - choices=const.CHANGE_RESULT + choices=enum_to_list(CHANGE_RESULT) ) diff --git a/lcm/ns/serializers/sol/affected_vnfs.py b/lcm/ns/serializers/sol/affected_vnfs.py index ebb94ebf..ff817971 100644 --- a/lcm/ns/serializers/sol/affected_vnfs.py +++ b/lcm/ns/serializers/sol/affected_vnfs.py @@ -1,5 +1,5 @@ # Copyright (c) 2019, CMCC Technologies Co., Ltd. -# Copyright 2019 ZTE Corporation. +# Copyright (c) 2019, ZTE Corporation. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -16,23 +16,11 @@ from rest_framework import serializers -from lcm.ns.const import CHANGE_TYPES, CHANGE_RESULT +from lcm.ns.enum import CHANGE_TYPE, CHANGE_RESULT +from lcm.pub.utils.enumutil import enum_to_list from lcm.ns.serializers.sol.ext_virtual_link_info import ExtVirtualLinkInfoSerializer from lcm.ns.serializers.sol.update_serializers import ModifyVnfInfoDataSerializer -CHANGE_TYPE = [ - CHANGE_TYPES.ADD, - CHANGE_TYPES.REMOVE, - CHANGE_TYPES.INSTANTIATE, - CHANGE_TYPES.TERMINATE, - CHANGE_TYPES.SCALE, - CHANGE_TYPES.CHANGE_FLAVOUR, - CHANGE_TYPES.HEAL, - CHANGE_TYPES.OPERATE, - CHANGE_TYPES.MODIFY_INFORMATION, - CHANGE_TYPES.CHANGE_EXTERNAL_VNF_CONNECTIVITY -] - class ChangedInfoSerializer(serializers.Serializer): changedVnfInfo = ModifyVnfInfoDataSerializer( @@ -64,12 +52,12 @@ class AffectedVnfsSerializer(serializers.Serializer): changeType = serializers.ChoiceField( help_text="Signals the type of change", required=True, - choices=CHANGE_TYPE + choices=enum_to_list(CHANGE_TYPE) ) changeResult = serializers.ChoiceField( help_text="Signals the result of change identified by the 'changeType' attribute.", required=True, - choices=CHANGE_RESULT + choices=enum_to_list(CHANGE_RESULT) ) changedInfo = ChangedInfoSerializer( help_text="Information about the changed VNF instance information, including VNF configurable properties, if applicable.", diff --git a/lcm/ns/serializers/sol/cp_serializers.py b/lcm/ns/serializers/sol/cp_serializers.py index bf93d9d9..6a4de9be 100644 --- a/lcm/ns/serializers/sol/cp_serializers.py +++ b/lcm/ns/serializers/sol/cp_serializers.py @@ -1,4 +1,5 @@ # Copyright (c) 2019, CMCC Technologies Co., Ltd. +# Copyright (c) 2019, ZTE Corporation. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -13,12 +14,8 @@ # limitations under the License. from rest_framework import serializers -from lcm.ns.const import IPADDRESSES_TYPE_LIST - - -LAYER_PROTOCOL = [ - "IP_OVER_ETHERNET" -] +from lcm.ns.enum import LAYER_PROTOCOL, IPADDRESSES_TYPE +from lcm.pub.utils.enumutil import enum_to_list class AddressRangeSerializer(serializers.Serializer): @@ -34,7 +31,7 @@ class IpAddressesDataSerialzier(serializers.Serializer): type = serializers.ChoiceField( help_text="The type of the IP addresses.", required=True, - choices=IPADDRESSES_TYPE_LIST) + choices=enum_to_list(IPADDRESSES_TYPE)) fixedAddresses = serializers.ListField( child=serializers.CharField( help_text="Fixed addresses to assign.", @@ -57,7 +54,7 @@ class IpAddressesInfoSerialzier(serializers.Serializer): type = serializers.ChoiceField( help_text="The type of the IP addresses.", required=True, - choices=IPADDRESSES_TYPE_LIST) + choices=enum_to_list(IPADDRESSES_TYPE)) addresses = serializers.ListField( help_text="An IPV4 or IPV6 address", required=False, @@ -104,7 +101,7 @@ class IpOverEthernetAddressInfoSerializer(serializers.Serializer): class CpProtocolDataSerializer(serializers.Serializer): layerProtocol = serializers.ChoiceField( help_text="Identifier of layer(s) and protocol(s)", - choices=LAYER_PROTOCOL, + choices=enum_to_list(LAYER_PROTOCOL), required=True) ipOverEthernet = IpOverEthernetAddressDataSerializer( help_text="Network address data for IP over Ethernet to assign to the extCP instance.", @@ -115,7 +112,7 @@ class CpProtocolDataSerializer(serializers.Serializer): class CpProtocolInfoSerializer(serializers.Serializer): layerProtocol = serializers.ChoiceField( help_text="Identifier of layer(s) and protocol(s)", - choices=LAYER_PROTOCOL, + choices=enum_to_list(LAYER_PROTOCOL), required=True) ipOverEthernet = IpOverEthernetAddressInfoSerializer( help_text="Network address data for IP over Ethernet to assign to the extCP instance.", diff --git a/lcm/pub/utils/enumutil.py b/lcm/pub/utils/enumutil.py index 8b263db4..e06c16b7 100644 --- a/lcm/pub/utils/enumutil.py +++ b/lcm/pub/utils/enumutil.py @@ -15,3 +15,7 @@ def enum(**enums): return type('Enum', (), enums) + + +def enum_to_list(e): + return [v for k, v in e.__dict__.iteritems() if not k.startswith("_")] -- 2.16.6