+ def _create_vnf_id_maps(self, nsd):
+ """
+ map identifier for 'member-vnf-index' in nsd to syntax that is safe for mzn
+
+ return tuples with mappings {<adjusted id>: <original id>} and {<original id>: <adjusted id>}
+ """
+ # TODO: Change for multiple DF support
+ ns_df = nsd.get('df', [{}])[0]
+ next_idx = itertools.count()
+ member_vnf_index2mzn = {e['id']: 'VNF' + str(next(next_idx)) for e in
+ ns_df.get('vnf-profile', [])}
+
+ # reverse the name map dictionary, used when the placement result is remapped
+ mzn_name2member_vnf_index = {v: k for k, v in member_vnf_index2mzn.items()}
+
+ return member_vnf_index2mzn, mzn_name2member_vnf_index
+