summaryrefslogtreecommitdiffstats
path: root/genericparser/packages/serializers/nsd_info.py
blob: 2206f467895c1d911580b51e8ddf5661e69dfb72 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
# Copyright 2018 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 rest_framework import serializers
from problem_details import ProblemDetailsSerializer
from link import LinkSerializer


class _LinkSerializer(serializers.Serializer):
    self = LinkSerializer(
        help_text="URI of this resource.",
        required=True,
        allow_null=False
    )
    nsd_content = LinkSerializer(
        help_text="Link to the NSD content resource.",
        required=True,
        allow_null=False
    )

    class Meta:
        ref_name = "NSD_LinkSerializer"


class NsdInfoSerializer(serializers.Serializer):
    id = serializers.CharField(
        help_text="Identifier of the onboarded individual NS descriptor resource."
        "This identifier is allocated by the NFVO.",
        required=True,
        allow_null=False,
        allow_blank=False
    )
    nsdId = serializers.CharField(
        help_text="This identifier, which is allocated by the NSD designer,"
        "identifies the NSD in a globally unique way."
        "It is copied from the NSD content and shall be present after the "
        "NSD content is on-boarded.",
        required=False,
        allow_null=True,
        allow_blank=True
    )
    nsdName = serializers.CharField(
        help_text="Name of the onboarded NSD."
        "This information is copied from the NSD content and shall be present "
        "after the NSD content is on-boarded.",
        required=False,
        allow_null=True,
        allow_blank=True
    )
    nsdVersion = serializers.CharField(  # TODO: data type is version
        help_text="Version of the on-boarded NSD."
        "This information is copied from the NSD content and shall be "
        "present after the NSD content is on-boarded.",
        required=False,
        allow_null=True,
        allow_blank=True
    )
    nsdDesigner = serializers.CharField(
        help_text="Designer of the on-boarded NSD."
        "This information is copied from the NSD content and shall be "
        "present after the NSD content is on-boarded.",
        required=False,
        allow_null=True,
        allow_blank=True
    )
    nsdInvariantId = serializers.CharField(
        help_text="This identifier, which is allocated by the NSD designer,"
        "identifies an NSD in a version independent manner."
        "This information is copied from the NSD content and shall be "
        "present after the NSD content is on-boarded.",
        required=False,
        allow_null=True,
        allow_blank=True
    )
    vnfPkgIds = serializers.ListSerializer(
        help_text="Identifies the VNF package for the VNFD referenced "
        "by the on-boarded NS descriptor resource.",
        child=serializers.CharField(
            help_text="Identifier of the VNF package",
            allow_blank=True
        ),
        required=False,
        allow_null=True,
        allow_empty=True
    )
    pnfdInfoIds = serializers.ListSerializer(
        help_text="Identifies the PnfdInfo element for the PNFD referenced "
        "by the on-boarded NS descriptor resource.",
        child=serializers.CharField(
            help_text="Identifier of the PnfdInfo element",
            allow_blank=True
        ),
        required=False,
        allow_null=True,
        allow_empty=True
    )
    nestedNsdInfoIds = serializers.ListSerializer(
        help_text="Identifies the NsdInfo element for the nested NSD referenced "
        "by the on-boarded NS descriptor resource.",
        child=serializers.CharField(
            help_text="Identifier of the NsdInfo element",
            allow_blank=True
        ),
        required=False,
        allow_null=True,
        allow_empty=True
    )
    nsdOnboardingState = serializers.ChoiceField(
        help_text="Onboarding state of the individual NS descriptor resource.",
        choices=["CREATED", "UPLOADING", "PROCESSING", "ONBOARDED"],
        required=True,
        allow_null=False,
        allow_blank=False
    )
    onboardingFailureDetails = ProblemDetailsSerializer(
        help_text="Failure details of current onboarding procedure."
        "It shall be present when the nsdOnboardingState attribute is CREATED "
        "and the uploading or processing fails in NFVO.",
        required=False,
        allow_null=True,
    )
    nsdOperationalState = serializers.ChoiceField(
        help_text="Operational state of the individual NS descriptor resource."
        "This attribute can be modified with the PATCH method.",
        choices=["ENABLED", "DISABLED"],
        required=True,
        allow_null=False,
        allow_blank=False
    )
    nsdUsageState = serializers.ChoiceField(
        help_text="Usage state of the individual NS descriptor resource.",
        choices=["IN_USE", "NOT_IN_USE"],
        required=True,
        allow_null=False,
    )
    userDefinedData = serializers.DictField(
        help_text="User defined data for the individual NS descriptor resource."
        "This attribute can be modified with the PATCH method.",
        child=serializers.CharField(
            help_text="Key Value Pairs",
            allow_blank=True
        ),
        required=False,
        allow_null=True
    )
    _links = _LinkSerializer(
        help_text="Links to resources related to this resource.",
        required=True,
        allow_null=True  # TODO: supposed to be False
    )