to leafref, whose target is in a different module.
Once that is resovled this will switched to use
leafref";
- type string;
+ type leafref {
+ path "../../../constituent-vnfd" +
+ "[member-vnf-index = current()/../member-vnf-index-ref]" +
+ "/vnfd-id-ref";
+ }
}
leaf vnfd-connection-point-ref {
description
"Identifier for the VNFD.";
type leafref {
- path "/vnfd:vnfd-catalog/vnfd:vnfd/vnfd:id";
+ path "../../../constituent-vnfd" +
+ "[member-vnf-index = current()/../member-vnf-index-ref]" +
+ "/vnfd-id-ref";
}
}
}
key vnf-source-ref;
leaf vnf-source-ref {
type leafref {
- path "/vnfd:vnfd-catalog/vnfd:vnfd/vnfd:id";
+ path "../../constituent-vnfd/vnfd-id-ref";
}
}
leaf vnf-depends-on-ref {
description
"Reference to VNF that sorce VNF depends.";
type leafref {
- path "/vnfd:vnfd-catalog/vnfd:vnfd/vnfd:id";
+ path "../../constituent-vnfd/vnfd-id-ref";
}
}
}
to leafref, whose target is in a different module.
Once that is resovled this will switched to use
leafref";
- type string;
+ type leafref {
+ path "../../../../constituent-vnfd" +
+ "[member-vnf-index = current()/../member-vnf-index-ref]" +
+ "/vnfd-id-ref";
+ }
}
leaf vnfd-connection-point-ref {
to leafref, whose target is in a different module.
Once that is resovled this will switched to use
leafref";
- type string;
+ type leafref {
+ path "/vnfd:vnfd-catalog/vnfd:vnfd" +
+ "[vnfd:id = current()/../vnfd-id-ref]/" +
+ "vnfd:connection-point/vnfd:name";
+ }
}
}
} //rsp
to leafref, whose target is in a different module.
Once that is resovled this will switched to use
leafref";
- type string;
+ type leafref {
+ path "../../../constituent-vnfd" +
+ "[member-vnf-index = current()/../member-vnf-index-ref]" +
+ "/vnfd-id-ref";
+ }
}
leaf vnfd-connection-point-ref {
to leafref, whose target is in a different module.
Once that is resovled this will switched to use
leafref";
- type string;
+ type leafref {
+ path "/vnfd:vnfd-catalog/vnfd:vnfd" +
+ "[vnfd:id = current()/../vnfd-id-ref]/" +
+ "vnfd:connection-point/vnfd:name";
+ }
}
list match-attributes {
list vnfd-monitoring-param {
description "A list of VNFD monitoring params";
- key "vnfd-id-ref vnfd-monitoring-param-ref";
+ key "member-vnf-index-ref vnfd-monitoring-param-ref";
leaf vnfd-id-ref {
description
Once that is resolved this will switched to use
leafref";
- type yang:uuid;
+ type leafref {
+ path "../../../constituent-vnfd" +
+ "[member-vnf-index = current()/../member-vnf-index-ref]" +
+ "/vnfd-id-ref";
+ }
}
leaf vnfd-monitoring-param-ref {
}
}
- leaf-list member-vnf-index-ref {
- description
- "Optional reference to member-vnf within constituent-vnfds";
- type uint64;
+ leaf member-vnf-index-ref {
+ description
+ "Mandatory reference to member-vnf within constituent-vnfds";
+ type leafref {
+ path "../../../constituent-vnfd/member-vnf-index";
+ }
}
}
}
.format(vnfr.name, method, rc))
return rc
- def is_vnfr_config_agent_managed(self, vnfr):
- if (not vnfr.has_field('netconf') and
- not vnfr.has_field('juju') and
- not vnfr.has_field('script')):
- return False
+ def get_vnfr_config_agent(self, vnfr):
+ # if (not vnfr.has_field('netconf') and
+ # not vnfr.has_field('juju') and
+ # not vnfr.has_field('script')):
+ # return False
for agent in self._plugin_instances.values():
try:
if agent.is_vnfr_managed(vnfr.id):
- return True
+ return agent
except Exception as e:
self._log.debug("Check if VNFR {} is config agent managed: {}".
format(vnfr.name, e))
+
+ def is_vnfr_config_agent_managed(self, vnfr):
+ if self.get_vnfr_config_agent(vnfr):
+ return True
return False
def _on_config_agent(self, config_agent):
if vnfr_name:
inp['vnfr_name'] = vnfr_name
- # TODO (pjoseph): Add config agents, we need to identify which all
- # config agents are required from this NS and provide only those
- inp['config-agent'] = {}
-
# Add parameters for initial config
inp['parameter'] = {}
for parameter in parameters:
format(nsr_obj.nsr_name, parameter, e))
+ # Add config agents specific to each VNFR
+ inp['config-agent'] = {}
+ for vnfr in nsr_obj.agent_nsr.vnfrs:
+ # Get the config agent for the VNFR
+ # If vnfr name is specified, add only CA specific to that
+ if (vnfr_name is None) or \
+ (vnfr_name == vnfr.name):
+ agent = self._config_agent_mgr.get_vnfr_config_agent(vnfr.vnfr_msg)
+ if agent:
+ if agent.agent_type != riftcm_config_plugin.DEFAULT_CAP_TYPE:
+ inp['config-agent'][vnfr.member_vnf_index] = agent.agent_data
+ inp['config-agent'][vnfr.member_vnf_index] \
+ ['service-name'] = agent.get_service_name(vnfr.id)
+
# Add vnfrs specific data
inp['vnfr'] = {}
for vnfr in nsr_obj.vnfrs:
inp['vnfr'][vnfr['member_vnf_index_ref']] = v
+
self._log.debug("Input data for {}: {}".
format((vnfr_name if vnfr_name else nsr_obj.nsr_name),
inp))