raise ValueError("VDU Virtual Interface type {} not supported".format(rift_type))
# Add all external connections
+ cp_to_port_security_map = {}
+
for cp in rift_vnfd.cps:
# Find the VDU and and external interface for this connection point
vdu, ext_if = find_vdu_and_ext_if_by_cp_ref(cp.name)
"description": "%s iface on VDU %s" % (ext_if.name, vdu.name),
}
+ if cp.has_field('port_security_enabled'):
+ cp_to_port_security_map[cp.name] = cp.port_security_enabled
vnf["external-connections"].append(connection)
# Add all internal networks
if bps/x[1] >= 1:
intf["bandwidth"] = "{} {}bps".format(math.ceil(bps/x[1]), x[0])
+ for bridge_iface in vnfc["bridge-ifaces"]:
+ if bridge_iface['name'] in cp_to_port_security_map:
+ bridge_iface['port-security'] = cp_to_port_security_map[bridge_iface['name']]
# Sort bridge-ifaces-list TODO sort others
newlist = sorted(vnfc["bridge-ifaces"], key=lambda k: k['name'])
vnfc["bridge-ifaces"] = newlist
/*
- *
+ *
* Copyright 2016 RIFT.IO Inc
*
* Licensed under the Apache License, Version 2.0 (the "License");
uses manotypes:provider-network;
leaf mgmt-network {
- description "Flag indicating whether this network is a VIM management network";
+ description "Flag indicating whether this network is a VIM management network";
type boolean;
default false;
}
case vim-network-profile {
leaf ip-profile-ref {
description "Named reference to IP-profile object";
- type string;
- }
+ type leafref {
+ path "../../ip-profiles/name";
+ }
+ }
}
-
}
}
leaf member-vnf-index {
description
"Identifier/index for the VNFD. This separate id
- is required so that multiple VNFs can be part of
+ is required so that multiple VNFs can be part of
single NS";
type uint64;
}
leaf scale-in-operation-type {
description
- "Operation to be applied to check between scaling criterias to
+ "Operation to be applied to check between scaling criterias to
check if the scale in threshold condition has been met.
Defaults to AND";
type scaling-criteria-operation;
leaf scale-out-operation-type {
description
- "Operation to be applied to check between scaling criterias to
+ "Operation to be applied to check between scaling criterias to
check if the scale out threshold condition has been met.
Defaults to OR";
type scaling-criteria-operation;
}
leaf ns-monitoring-param-ref {
- description
+ description
"Reference to the NS level monitoring parameter
that is aggregated";
type leafref {
description
"Minimum number of instances of the scaling group that
are allowed in a single network service. These instances
- are created by default when the network service is
+ are created by default when the network service is
instantiated.";
type uint32;
default 0;
leaf max-instance-count {
description
"Maximum number of instances of this scaling group that
- are allowed in a single network service. The network
+ are allowed in a single network service. The network
service scaling fails when the number of service group
instances exceeds the max-instance-count specified.";
type uint32;
description
"Identifier for the VNFD.";
type leafref {
- path "../../../constituent-vnfd" +
+ path "../../../constituent-vnfd" +
"[member-vnf-index = current()/../member-vnf-index-ref]" +
"/vnfd-id-ref";
}
list parameter-pool {
description
- "Pool of parameter values from which to choose during
- configuration.";
+ "Pool of parameter values from which to choose during
+ configuration.";
key "name";
leaf name {
type string;
}
}
-
+
list initial-config-primitive {
rwpb:msg-new NsdInitialConfigPrimitive;
description
Raises:
NotADirectoryError - dest_root_dir is not a directory
"""
+ def find_prefix():
+ """ Find comon prefix of all files in package. This prefix will be
+ used to collapse directory structure during extraction to eliminate
+ empty nested folders.
+ """
+ common_dir = set()
+ for f in self.files:
+ common_dir.add(os.path.dirname(f))
+ prefix = os.path.commonprefix(list(common_dir))
+ return prefix if prefix else None
+
if not os.path.isdir(dest_root_dir):
raise NotADirectoryError(dest_root_dir)
- self.extract_dir(None, dest_root_dir, extract_images)
+ self.extract_dir(find_prefix(), dest_root_dir, extract_images)
def open(self, rel_path):
""" Open a file contained in the package in read-only, binary mode.