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
|
"""Modification of the PNF module."""
from abc import ABC
from typing import TYPE_CHECKING
from onapsdk.aai.business.owning_entity import OwningEntity
from onapsdk.onap_service import OnapService
from onapsdk.so.so_element import OrchestrationRequest
from onapsdk.utils.headers_creator import headers_so_creator
from onapsdk.utils.jinja import jinja_env
from onapsdk.configuration import settings
if TYPE_CHECKING:
from onapsdk.aai.business.service import ServiceInstance
from onapsdk.aai.business import PnfInstance as Pnf
class PnfModificationRequest(OrchestrationRequest, ABC):
"""PNF Modification class."""
@classmethod
def send_request(cls,
pnf_object: "Pnf",
sdc_service: "Service",
aai_service_instance: "ServiceInstance") -> "PnfModificationRequest":
"""Send request to SO to modify PNF instance.
Args:
pnf_object: pnf object for pnf id
sdc_service: service for modify pnf
aai_service_instance: Service object from aai sdc
Returns:
PnfModificationRequest: modify request object
"""
owning_entity_id = None
project = settings.PROJECT
line_of_business = settings.LOB
platform = settings.PLATFORM
for rel in aai_service_instance.relationships:
if rel.related_to == "owning-entity":
owning_entity_id = rel.relationship_data.pop().get("relationship-value")
if rel.related_to == "project":
project = rel.relationship_data.pop().get("relationship-value")
owning_entity = OwningEntity.get_by_owning_entity_id(
owning_entity_id=owning_entity_id)
cls._logger.debug("PNF %s modify request", pnf_object.pnf_id)
response = cls.send_message_json("PUT",
f"Create {pnf_object.pnf_id} PNF modification request",
(f"{cls.base_url}/onap/so/infra/"
f"serviceInstantiation/{cls.api_version}/"
"serviceInstances/"
f"{aai_service_instance.instance_id}/"
f"pnfs/{pnf_object.pnf_id}"),
data=jinja_env().
get_template("modify_pnf.json.j2").
render(
platform_name=platform,
service=sdc_service,
project=project,
owning_entity=owning_entity,
line_of_business=line_of_business,
service_instance=aai_service_instance
),
headers=headers_so_creator(OnapService.headers))
return cls(request_id=response["requestReferences"]["requestId"])
|