X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=examples%2Fping_pong_ns%2Frift%2Fmano%2Fexamples%2Fping_pong_nsd.py;h=ef2dd90e507fcf624ef084c11d6b418dcf6f5779;hb=6f1a3fe149e4a6b9803382cb299c902f4cf58ec9;hp=5348e00b70cd617d83e12bfc62d0c74ba226840c;hpb=255ff03a528a3090ce7f46f0a63b65da3e6f9bcf;p=osm%2FSO.git diff --git a/examples/ping_pong_ns/rift/mano/examples/ping_pong_nsd.py b/examples/ping_pong_ns/rift/mano/examples/ping_pong_nsd.py index 5348e00b..ef2dd90e 100755 --- a/examples/ping_pong_ns/rift/mano/examples/ping_pong_nsd.py +++ b/examples/ping_pong_ns/rift/mano/examples/ping_pong_nsd.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 -# +# # Copyright 2016 RIFT.IO Inc # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -120,6 +120,7 @@ class VirtualNetworkFunction(ManoDescriptor): self.vnfd = None self.instance_count = instance_count self._placement_groups = [] + self.use_vnf_init_conf = False super(VirtualNetworkFunction, self).__init__(name) def add_placement_group(self, group): @@ -214,12 +215,18 @@ class VirtualNetworkFunction(ManoDescriptor): node = vdu.guest_epa.numa_node_policy.node.add() node.id = 0 node.memory_mb = 512 - node.vcpu = [0, 1] + vcpu = node.vcpu.add() + vcpu.id = 0 + vcpu = node.vcpu.add() + vcpu.id = 1 node = vdu.guest_epa.numa_node_policy.node.add() node.id = 1 node.memory_mb = 512 - node.vcpu = [2, 3] + vcpu = node.vcpu.add() + vcpu.id = 2 + vcpu = node.vcpu.add() + vcpu.id = 3 # specify the vswitch EPA vdu.vswitch_epa.ovs_acceleration = 'DISABLED' @@ -254,7 +261,8 @@ class VirtualNetworkFunction(ManoDescriptor): internal_cp.name = cp_name + "/icp{}".format(i) internal_cp.id = cp_name + "/icp{}".format(i) internal_cp.type_yang = 'VPORT' - internal_vlds[i].internal_connection_point_ref.append(internal_cp.id) + ivld_cp = internal_vlds[i].internal_connection_point_ref.add() + ivld_cp.id_ref = internal_cp.id internal_interface = vdu.internal_interface.add() internal_interface.name = 'fab%d' % i @@ -317,6 +325,22 @@ class VirtualNetworkFunction(ManoDescriptor): with open(script_file, "w") as f: f.write("{}".format(cfg)) + # Copy the vnf_init_config script + if self.use_vnf_init_conf and ('ping' in self.name): + script_name = 'ping_set_rate.py' + + src_path = os.path.dirname(os.path.abspath(os.path.realpath(__file__))) + script_src = os.path.join(src_path, script_name) + if not os.path.exists(script_src): + src_path = os.path.join(os.environ['RIFT_ROOT'], + 'modules/core/mano/examples/ping_pong_ns/rift/mano/examples') + script_src = os.path.join(src_path, script_name) + + dest_path = os.path.join(outdir, self.name, 'scripts') + os.makedirs(dest_path, exist_ok=True) + + shutil.copy2(script_src, dest_path) + class NetworkService(ManoDescriptor): def __init__(self, name): @@ -325,7 +349,7 @@ class NetworkService(ManoDescriptor): self.vnfd_config = {} self._placement_groups = [] - def ping_config(self, mano_ut, use_ns_init_conf): + def ping_config(self, mano_ut, use_ns_init_conf, use_vnf_init_conf): suffix = '' if mano_ut: ping_cfg = r''' @@ -359,7 +383,10 @@ then echo "Failed to set server info for ping!" exit $rc fi +''' % suffix + if use_vnf_init_conf is False: + ping_cfg +=''' curl -D /dev/stdout \ -H "Accept: application/vnd.yang.data+xml" \ -H "Content-Type: application/vnd.yang.data+json" \ @@ -373,7 +400,7 @@ then exit $rc fi -''' % suffix +''' if use_ns_init_conf: ping_cfg += "exit 0\n" else: @@ -522,7 +549,9 @@ exit 0 }) vnf_config.service_primitive.append(config) - def default_config(self, const_vnfd, vnfd, mano_ut, use_ns_init_conf): + def default_config(self, const_vnfd, vnfd, mano_ut, + use_ns_init_conf, + use_vnf_init_conf): vnf_config = vnfd.vnfd.vnf_configuration vnf_config.config_attributes.config_priority = 0 @@ -545,7 +574,23 @@ exit 0 if vnfd.name == 'ping_vnfd' or vnfd.name == 'ping_vnfd_with_epa' or vnfd.name == 'ping_vnfd_aws': vnf_config.config_attributes.config_priority = 2 - vnf_config.config_template = self.ping_config(mano_ut, use_ns_init_conf) + vnf_config.config_template = self.ping_config(mano_ut, + use_ns_init_conf, + use_vnf_init_conf) + if use_vnf_init_conf: + vnf_config.initial_config_primitive.add().from_dict( + { + "seq": 1, + "name": "set ping rate", + "user_defined_script": "ping_set_rate.py", + "parameter": [ + { + 'name': 'rate', + 'value': '5', + }, + ], + } + ) def ns_config(self, nsd, vnfd_list, mano_ut): # Used by scale group @@ -608,11 +653,14 @@ exit 0 - def compose(self, vnfd_list, cpgroup_list, mano_ut, use_ns_init_conf=True): + def compose(self, vnfd_list, cpgroup_list, mano_ut, + use_ns_init_conf=True, + use_vnf_init_conf=True,): if mano_ut: # Disable NS initial config primitive - use_ns_init_conf=False + use_ns_init_conf = False + use_vnf_init_conf = False self.descriptor = RwNsdYang.YangData_Nsd_NsdCatalog() self.id = str(uuid.uuid1()) @@ -637,7 +685,7 @@ exit 0 ip_profile.ip_profile_params.ip_version = "ipv4" ip_profile.ip_profile_params.subnet_address = "31.31.31.0/24" ip_profile.ip_profile_params.gateway_address = "31.31.31.210" - + vld_id = 1 for cpgroup in cpgroup_list: vld = nsd.vld.add() @@ -672,7 +720,7 @@ exit 0 constituent_vnfd.vnfd_id_ref = vnfd.descriptor.vnfd[0].id self.default_config(constituent_vnfd, vnfd, mano_ut, - use_ns_init_conf,) + use_ns_init_conf, use_vnf_init_conf) member_vnf_index += 1 # Enable config primitives if either mano_ut or @@ -885,6 +933,7 @@ def generate_ping_pong_descriptors(fmt="json", ex_pong_userdata=None, use_placement_group=True, use_ns_init_conf=True, + use_vnf_init_conf=True, ): # List of connection point groups # Each connection point group refers to a virtual link @@ -895,6 +944,7 @@ def generate_ping_pong_descriptors(fmt="json", suffix = '' ping = VirtualNetworkFunction("ping_vnfd%s" % (suffix), pingcount) + ping.use_vnf_init_conf = use_vnf_init_conf if use_placement_group: ### Add group name Eris @@ -1034,7 +1084,8 @@ def generate_ping_pong_descriptors(fmt="json", nsd_catalog.compose(vnfd_list, cpgroup_list, mano_ut, - use_ns_init_conf=use_ns_init_conf,) + use_ns_init_conf=use_ns_init_conf, + use_vnf_init_conf=use_vnf_init_conf,) if write_to_file: ping.write_to_file(out_dir, ping_fmt if ping_fmt is not None else fmt)