+ if vdu.has_field("volumes"):
+ vnfc["devices"] = []
+ # Sort volumes as device-list is implictly ordered by Openmano
+ newvollist = sorted(vdu.volumes, key=lambda k: k.name)
+ for iter_num, volume in enumerate(newvollist):
+ if iter_num == 0:
+ # Convert the first volume to vnfc.image
+ if os.path.isabs(volume.image):
+ vnfc["VNFC image"] = volume.image
+ else:
+ vnfc["image name"] = volume.image
+ if volume.has_field("image_checksum"):
+ vnfc["image checksum"] = volume.image_checksum
+ else:
+ # Add Openmano devices
+ device = {}
+ device["type"] = volume.guest_params.device_type
+ device["image"] = volume.image
+ vnfc["devices"].append(device)
+
+ vnfc_cloud_config_init = False
+ if vdu.has_field("cloud_init") or vdu.has_field("cloud_init_file"):
+ vnfc['cloud-config'] = dict()
+ vnfc_cloud_config_init = True
+ vnfc['cloud-config']['user-data'] = cloud_init(rift_vnfd.id, vdu)
+
+ if vdu.has_field("custom_boot_data"):
+ if vdu.custom_boot_data.has_field('custom_drive'):
+ if vdu.custom_boot_data.custom_drive is True:
+ if vnfc_cloud_config_init is False:
+ vnfc['cloud-config'] = dict()
+ vnfc_cloud_config_init = True
+ vnfc['cloud-config']['config-drive'] = vdu.custom_boot_data.custom_drive
+ if vdu.custom_boot_data.has_field('custom_meta_data'):
+ if vnfc_cloud_config_init is False:
+ vnfc['cloud-config'] = dict()
+ vnfc_cloud_config_init = True
+ vnfc['cloud-config']['meta-data'] = list()
+ for metaitem in vdu.custom_boot_data.custom_meta_data:
+ openmano_metaitem = dict()
+ openmano_metaitem['key'] = metaitem.name
+ openmano_metaitem['value'] = metaitem.value
+ vnfc['cloud-config']['meta-data'].append(openmano_metaitem)