update for change to etsicatalog
[modeling/etsicatalog.git] / catalog / packages / serializers / vnf_pkg_notifications.py
diff --git a/catalog/packages/serializers/vnf_pkg_notifications.py b/catalog/packages/serializers/vnf_pkg_notifications.py
new file mode 100644 (file)
index 0000000..5e023af
--- /dev/null
@@ -0,0 +1,117 @@
+# Copyright (C) 2019 Verizon. All Rights Reserved
+#
+# 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 rest_framework import serializers
+
+from catalog.packages.const import NOTIFICATION_TYPES
+
+PackageOperationalStateType = ["ENABLED", "DISABLED"]
+PackageUsageStateType = ["IN_USE", "NOT_IN_USE"]
+
+
+class VersionSerializer(serializers.Serializer):
+    vnfSoftwareVersion = serializers.CharField(
+        help_text="VNF software version to match.",
+        max_length=255,
+        required=True,
+        allow_null=False
+    )
+    vnfdVersions = serializers.ListField(
+        child=serializers.CharField(),
+        help_text="Match VNF packages that contain "
+                  "VNF products with certain VNFD versions",
+        required=False,
+        allow_null=False
+    )
+
+
+class vnfProductsSerializer(serializers.Serializer):
+    vnfProductName = serializers.CharField(
+        help_text="Name of the VNF product to match.",
+        max_length=255,
+        required=True,
+        allow_null=False
+    )
+    versions = VersionSerializer(
+        help_text="match VNF packages that contain "
+                  "VNF products with certain versions",
+        required=False,
+        allow_null=False
+    )
+
+
+class vnfProductsProvidersSerializer(serializers.Serializer):
+    vnfProvider = serializers.CharField(
+        help_text="Name of the VNFprovider to match.",
+        max_length=255,
+        required=True,
+        allow_null=False
+    )
+    vnfProducts = vnfProductsSerializer(
+        help_text="match VNF packages that contain "
+                  "VNF products with certain product names, "
+                  "from one particular provider",
+        required=False,
+        allow_null=False
+    )
+
+
+class PkgmNotificationsFilter(serializers.Serializer):
+    notificationTypes = serializers.ListField(
+        child=serializers.ChoiceField(
+            required=True,
+            choices=NOTIFICATION_TYPES
+        ),
+        help_text="Match particular notification types",
+        allow_null=False,
+        required=False
+    )
+    vnfProductsFromProviders = vnfProductsProvidersSerializer(
+        help_text="Match VNF packages that contain "
+                  "VNF products from certain providers.",
+        allow_null=False,
+        required=False
+    )
+    vnfdId = serializers.ListField(
+        child=serializers.UUIDField(),
+        help_text="Match VNF packages with a VNFD identifier"
+                  "listed in the attribute",
+        required=False,
+        allow_null=False
+    )
+    vnfPkgId = serializers.ListField(
+        child=serializers.UUIDField(),
+        help_text="Match VNF packages with a VNFD identifier"
+                  "listed in the attribute",
+        required=False,
+        allow_null=False
+    )
+    operationalState = serializers.ListField(
+        child=serializers.ChoiceField(
+            required=True,
+            choices=PackageOperationalStateType
+        ),
+        help_text="Operational state of the VNF package.",
+        allow_null=False,
+        required=False
+    )
+    usageState = serializers.ListField(
+        child=serializers.ChoiceField(
+            required=True,
+            choices=PackageUsageStateType
+        ),
+        help_text="Operational state of the VNF package.",
+        allow_null=False,
+        required=False
+    )