From f382838372dcf11a8436020457562bd9930da8f7 Mon Sep 17 00:00:00 2001 From: Enol Fernandez Date: Fri, 17 May 2024 15:17:31 +0100 Subject: [PATCH 01/11] New json template --- cloud_info_provider/formatters/templates/glue21.json.tpl | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 cloud_info_provider/formatters/templates/glue21.json.tpl diff --git a/cloud_info_provider/formatters/templates/glue21.json.tpl b/cloud_info_provider/formatters/templates/glue21.json.tpl new file mode 100644 index 00000000..287d48d1 --- /dev/null +++ b/cloud_info_provider/formatters/templates/glue21.json.tpl @@ -0,0 +1,5 @@ +<%! + import json +%>\ +## This got simple :) +${json.dumps(info)} From 2845114e3cb9c92f2e506334fd7ae0cf561d7d47 Mon Sep 17 00:00:00 2001 From: Enol Fernandez Date: Fri, 17 May 2024 15:17:53 +0100 Subject: [PATCH 02/11] New JSON formatter --- cloud_info_provider/formatters/glue.py | 527 +++++++++++++++++++++++++ 1 file changed, 527 insertions(+) diff --git a/cloud_info_provider/formatters/glue.py b/cloud_info_provider/formatters/glue.py index 4cfa431f..222e187a 100644 --- a/cloud_info_provider/formatters/glue.py +++ b/cloud_info_provider/formatters/glue.py @@ -1,3 +1,5 @@ +from datetime import datetime + from cloud_info_provider.formatters import base @@ -21,3 +23,528 @@ def __init__(self): "compute", "storage", ] + + +class GLUE21Json(base.BaseFormatter): + def __init__(self): + self.template_extension = ".json.tpl" + self.templates = [ + "glue21", + ] + self.glue_dict = {} + self.creation_time = datetime.now().isoformat() + self.validity = 3600 + + def _glue_dict_if_def(self, what, name, where): + if what in where: + return {name: where[what]} + else: + return {} + + def _dict_append(self, new): + for k, v in new.items(): + if k in self.glue_dict: + self.glue_dict[k].extend(v) + else: + self.glue_dict[k] = v + + def _glue_obj(self, obj_id, name): + return { + "CreationTime": self.creation_time, + "Validity": self.validity, + "ID": obj_id, + "Name": name, + } + + def glue_manager(self, info): + # We may not have any template! + templates_cpu = [ + tpl["template_cpu"] + for vo, share in self.shares.items() + for tpl_id, tpl in share["templates"].items() + ] + if templates_cpu: + template_max_cpu = max(templates_cpu) + template_min_cpu = min(templates_cpu) + else: + template_max_cpu = 0 + template_min_cpu = 0 + + templates_memory = [ + tpl["template_memory"] + for vo, share in self.shares.items() + for tpl_id, tpl in share["templates"].items() + ] + if templates_memory: + template_max_memory = max(templates_memory) + template_min_memory = min(templates_memory) + else: + template_max_memory = 0 + template_min_memory = 0 + manager = self._glue_obj( + self.compute_service_manager, + f"Cloud Manager for {self.static_compute_info['compute_service_name']}", + ) + manager.update( + { + "ProductName": self.static_compute_info["compute_hypervisor"], + "ProductVersion": self.static_compute_info[ + "compute_hypervisor_version" + ], + "HypervisorName": self.static_compute_info["compute_hypervisor"], + "HypervisorVersion": self.static_compute_info[ + "compute_hypervisor_version" + ], + "Associations": { + "CloudComputingService": self.compute_service_id, + }, + "TotalCPUs": self.static_compute_info["compute_total_cores"], + "TotalRAM": self.static_compute_info["compute_total_ram"], + "InstanceMaxCPU": template_max_cpu, + "InstanceMinCPU": template_min_cpu, + "InstanceMaxRAM": template_max_memory, + "InstanceMinRAM": template_min_memory, + } + ) + manager.update( + self._glue_dict_if_def( + "compute_network_virt_type", + "NetworkVirtualizationType", + self.static_compute_info, + ) + ) + manager.update( + self._glue_dict_if_def( + "compute_cpu_virt_type", + "CPUVirtualizationType", + self.static_compute_info, + ) + ) + manager.update( + self._glue_dict_if_def( + "compute_virtual_disk_formats", + "ManagerVirtualdiskFormat", + self.static_compute_info, + ) + ) + manager.update( + self._glue_dict_if_def( + "compute_failover", + "ManagerFailover", + self.static_compute_info, + ) + ) + manager.update( + self._glue_dict_if_def( + "compute_live_migration", + "ManagerLiveMigration", + self.static_compute_info, + ) + ) + manager.update( + self._glue_dict_if_def( + "compute_vm_backup_restore", + "ManagerVMBackupRestore", + self.static_compute_info, + ) + ) + self._dict_append({"CloudComputingManager": manager}) + + def _endpoint_id(self, ep): + return ( + f"{ep['compute_endpoint_url']}_{ep['compute_api_type']}" + f"_{ep['compute_api_version']}_{ep['compute_api_authn_method']}" + ) + + def glue_endpoints(self, info): + endpoints = [] + for url, endpoint in self.all_endpoints.items(): + native_endpoint = endpoint["compute_api_type"] != "OCCI" + if endpoint["compute_api_type"] == "OpenStack": + interface_name = "org.openstack.nova" + endpoint_semantics = "https://developer.openstack.org/api-ref/compute" + elif endpoint["compute_api_type"] == "OpenNebula": + interface_name = "org.opennebula.compute" + endpoint_semantics = "UNKNOWN" + else: + endpoint_semantics = "http://occi-wg.org/about/specification" + interface_name = "eu.egi.cloud.vm-management.occi" + endpoint_id = self._endpoint_id(endpoint) + ep_obj = self._glue_obj( + endpoint_id, f"Cloud computing endpoint for {endpoint_id}" + ) + ep_obj.update( + { + "URL": endpoint["compute_endpoint_url"], + "Associations": { + "CloudComputingService": [self.compute_service_id], + }, + "Capability": endpoint.get("compute_capabiliities", []), + "QualityLevel": endpoint["compute_production_level"], + "InterfaceName": interface_name, + "InterfaceVersion": endpoint["compute_api_version"], + "HealthState": "ok", + "HealthStateInfo": "Endpoint functioning properly", + "ServingState": endpoint["compute_production_level"], + "Technology": endpoint["compute_api_endpoint_technology"], + "Implementor": endpoint["compute_middleware_developer"], + "ImplementationName": endpoint["compute_middleware"], + "ImplementationVersion": endpoint["compute_middleware_version"], + "DowntimeInfo": ( + "See the GOC DB for downtimes: " + f"https://goc.egi.eu/portal/index.php?Page_Type=Downtimes_Calendar&site={self.site_name}" + ), + "Semantics": endpoint_semantics, + "Authentication": endpoint["compute_api_authn_method"], + "IssuerCA": endpoint["endpoint_issuer"], + "TrustedCA": endpoint["endpoint_trusted_cas"], + } + ) + endpoints.append(ep_obj) + self._dict_append({"CloudComputingEndpoint": endpoints}) + + def count_instance_status(self, instances, status): + return len([i for i in instances.values() if i["instance_status"] == status]) + + def glue_service(self): + instances = { + instance_id: instance + for vo, share in self.shares.items() + for instance_id, instance in share["instances"].items() + } + service = self._glue_obj( + self.compute_service_id, f"Cloud Compute service on {self.site_name}" + ) + service.update( + { + "Type": "org.cloud.iaas", + "QualityLevel": self.static_compute_info[ + "compute_service_production_level" + ], + "StatusInfo": f"http://argo.egi.eu/lavoisier/status_report-sf?site={self.site_name}", + "ServiceAUP": "http://go.egi.eu/aup", + "Complexity": f"endpointType=2,share={len(self.shares)}", + "Capability": [ + c for c in self.static_compute_info["compute_capabilities"] + ], + "TotalVM": len(instances), + "RunningVM": self.count_instance_status(instances, "ACTIVE"), + "SuspendedVM": self.count_instance_status(instances, "SUSPENDED"), + "HaltedVM": self.count_instance_status(instances, "SHUTOFF"), + "Associations": [{"AdminDomain": [self.site_name]}], + } + ) + if "gocdb_id" in self.static_compute_info: + service.update( + {"OtherInfo": {"gocdb_id": self.static_compute_info["gocdb_id"]}} + ) + self._dict_append({"CloudComputingService": [service]}) + + def glue_templates(self, share, share_id): + templates = [] + gpu_templates = [] + for template_native_id, template in share["templates"].items(): + for ep in share.get("endpoints", {}).get("endpoints", {}).values(): + native_endpoint = ep["compute_api_type"] != "OCCI" + id_field = "template_native_id" if native_endpoint else "template_id" + tpl_name = ( + template["template_name"] if "template_name" in template else tpl_id + ) + tpl_obj = self._glue_obj(template[id_field], tpl_name) + gpu_number = template.get("template_flavor_gpu_number", 0) + + tpl_obj.update( + { + "Associations": { + "Share": [share_id], + "CloudComputingManager": self.compute_service_manager, + "CloudComputingEndpoint": [self._endpoint_id(ep)], + }, + "Platform": template["template_platform"], + "CPU": template["template_cpu"], + "RAM": template["template_memory"], + "NetworkIn": template.get("template_network_in", "UNKNOWN"), + "NetworkOut": template.get("template_network_out", "UNKNOWN"), + "NetworkInfo": share["network_info"], + "Disk": template["template_disk"], + } + ) + if template.get("template_ephemeral"): + tpl_obj["EphemeralStorage"] = template["template_ephemeral"] + if gpu_number: + gpu_tpl_id = tpl_id + "_gpu" + gpu_tpl_name = tpl_name + "_gpu" + tpl_obj["Associations"][ + "CloudComputingInstanceTypeCloudComputingVirtualAccelerator" + ] = gpu_tpl_id + gpu_obj = { + "ID": gpu_tpl_id, + "Name": gpu_tpl_name, + "Associations": { + "CloudComputingVirtualAcceleratorCloudComputingInstanceType": tpl_id, + }, + "Type": "GPU", + "Number": gpu_number, + } + for field_name, field_value in ( + ("Vendor", "template_flavor_gpu_vendor"), + ("Model", "template_flavor_gpu_model"), + ("Version", "template_flavor_gpu_version"), + ("Memory", "template_flavor_gpu_memory"), + ): + if field_value in template: + gpu_obj[field_name] = template[field_value] + gpu_templates.append(gpu_obj) + templates.append(tpl_obj) + self._dict_append( + { + "CloudComputingInstanceType": templates, + "CloudComputingVirtualAccelerator": gpu_templates, + } + ) + + def glue_images(self, share, share_id): + images = [] + image_network = [] + # XXX wrong + field_mapping = [ + ("MarketPlaceURL", "image_marketplace_id"), + ("OSPlatform", "image_platform"), + ("OSFamily", "image_os_family"), + ("OSName", "image_os_name"), + ("OSVersion", "image_os_version"), + ("Version", "image_version"), + ("MinCPU", "image_minimal_cpu"), + ("RecommendedCPU", "image_recommended_cpu"), + ("MinRAM", "image_minimal_ram"), + ("RecommendedRAM", "image_recommended_ram"), + ("MinAccelerators", "image_minimal_accel"), + ("RecommendedAccelerators", "image_recommended_accel"), + ("RecommendedAcceleratorType", "image_accel_type"), + ("Description", "image_description"), + ("DiskSize", "image_size"), + ("AccessInfo", "image_access_info"), + ("ContextualizationName", "image_context_format"), + ("Installedsoftware", "image_software"), + ("OtherInfo", "other_info"), + ] + + for image_native_id, image in share["images"].items(): + for ep in share.get("endpoints", {}).get("endpoints", {}).values(): + native_endpoint = ep["compute_api_type"] != "OCCI" + id_field = "image_native_id" if native_endpoint else "image_id" + img_obj = self._glue_obj(image[id_field], image["image_name"]) + img_obj["Associations"] = { + "Share": [share_id], + "CloudComputingManager": self.compute_service_manager, + "CloudComputingEndpoint": [self._endpoint_id(ep)], + } + + for field_name, field_value in field_mapping: + if image.get(field_value, None): + img_obj[field_name] = image[field_value] + + images.append(img_obj) + + # image network configuration + network_types = ( + ("inbound", "network_traffic_in"), + ("outbound", "network_traffic_out"), + ) + for network_type, network_traffic in network_types: + for idx, network_conf in enumerate(image.get(network_traffic, [])): + network_conf_id = ( + f"{network_type}_{network_conf['ad:net_protocol']}_{idx}" + ) + network_obj = { + "ID": network_conf_id, + "Associations": { + "CloudComputingImage": [img_id], + }, + "Direction": network_type, + "Protocol": network_conf["ad:net_protocol"], + "Port": network_conf["ad:net_port"], + "AddressRange": network_conf["ad:net_range"], + } + img_assoc = image["Associations"].get( + "ImageNetworkConfiguration", [] + ) + img_assoc.append(network_conf_id) + img_obj["Associations"]["ImageNetworkConfiguration"] = img_assoc + + self._dict_append( + { + "CloudComputingImage": images, + "CloudComputingImageNetwokConfiguration": image_network, + } + ) + + def glue_access_policy(self, share, share_id, vo): + for ep in share.get("endpoints", {}).get("endpoints", {}).values(): + endpoint_id = self._endpoint_id(ep) + self._dict_append( + { + "AccessPolicy": [ + { + "ID": f"{endpoint_id}_Policy", + "Name": f"Access control rules for {vo} on {endpoint_id}", + "Associations": { + "CloudComputingEndpoint": endpoint_id, + }, + "Scheme": "org.glite.standard", + "PolicyRule": f"VO:{vo}", + } + ] + } + ) + self._dict_append( + { + "MappingPolicy": [ + { + "ID": f"{share_id}_Policy", + "Associations": { + "Share": share_id, + # XXX this seems wrong + "PolicyUserDomain": vo, + }, + "Rule": share["membership"], + } + ], + } + ) + + def glue_shares(self, info): + all_obj = {} + shares = [] + for vo, share in self.shares.items(): + share_id = "%s_share_%s_%s" % ( + self.compute_service_id, + vo, + share["project"], + ) + share_instances = share["instances"] + + running_instances = len( + [ + i + for i in share_instances.values() + if i["instance_status"] == "ACTIVE" + ] + ) + suspended_instances = len( + [ + i + for i in share_instances.values() + if i["instance_status"] == "SUSPENDED" + ] + ) + halted_instances = len( + [ + i + for i in share_instances.values() + if i["instance_status"] == "SHUTOFF" + ] + ) + + share_templates_cpu = [ + tpl["template_cpu"] for tpl_id, tpl in share["templates"].items() + ] + if share_templates_cpu: + share_template_max_cpu = max(share_templates_cpu) + else: + share_template_max_cpu = 0 + + share_templates_memory = [ + tpl["template_memory"] for tpl_id, tpl in share["templates"].items() + ] + if share_templates_memory: + share_template_max_memory = max(share_templates_memory) + else: + share_template_max_memory = 0 + + endpoints = share.get("endpoints", {}).get("endpoints", {}) + templates = share["templates"] + + if share["instance_max_accelerators"]: + share_max_accelerators = share["instance_max_accelerators"] + else: + share_max_accelerators = self.static_compute_info[ + "compute_max_accelerators" + ] + + quotas = share["quotas"] + if "instances" in quotas: + share_max_vm = quotas["instances"] + else: + share_max_vm = False + + fields = { + "sla", + "network_info", + "default_network_type", + "public_network_name", + } + for field in fields: + if field not in share or share[field] is None: + share[field] = "UNKNOWN" + + share_dict = { + "ID": share_id, + "Name": f"Share in service {self.compute_service_id} for VO {vo} (Project {share['project']})", + "Associations": { + "CloudComputingService": [self.compute_service_id], + "CloudComputingEndpoint": [ + self._endpoint_id(ep) for ep in endpoints.values() + ], + }, + "Description": f"Share in service {self.compute_service_id} for VO {vo} (Project {share['project']})", + "InstanceMaxCPU": share_template_max_cpu, + "InstanceMaxRAM": share_template_max_memory, + "SLA": share["sla"], + "TotalVM": len(share_instances), + "RunningVM": running_instances, + "SuspendedVM": suspended_instances, + "HaltedVM": halted_instances, + "NetworkInfo": share["network_info"], + "DefaultNetworkType": share["default_network_type"], + "PublicNetworkName": share["public_network_name"], + "ProjectID": share["project"], + } + if share_max_vm: + share_dict.update({"MaxVM": share_max_vm}) + other_info = {} + if share["project_name"]: + other_info["project_name"] = share["project_name"] + if share["project_domain_name"]: + other_info["project_domain_name"] = share["project_domain_name"] + if other_info: + share_dict.update({"OtherInfo": other_info}) + shares.append(share_dict) + self.glue_images(share, share_id) + self.glue_templates(share, share_id) + self.glue_access_policy(share, share_id, vo) + self._dict_append({"Share": [shares]}) + + def build_glue(self, info): + self.static_compute_info = info["static_compute_info"] + self.site_name = self.static_compute_info["site_name"] + self.shares = info["shares"] + self.compute_service_id = ( + self.static_compute_info["compute_service_name"] + "_cloud.compute" + ) + self.compute_service_manager = self.compute_service_id + "_manager" + self.all_endpoints = { + url: endpoint + for vo, share in self.shares.items() + for url, endpoint in share.get("endpoints", {}).get("endpoints", {}).items() + } + self.glue_service() + self.glue_manager(info) + self.glue_endpoints(info) + self.glue_shares(info) + return self.glue_dict + + def _format_template(self, template, info, extra={}): + # do not mess with formatting in mako, build here our JSON + json_info = self.build_json(info) + return super()._format_template(template, json_info, extra) From f6caa6788e9224f66ddf3ed0457b1a2d13e1216a Mon Sep 17 00:00:00 2001 From: Enol Fernandez Date: Fri, 17 May 2024 15:18:12 +0100 Subject: [PATCH 03/11] New JSON formatter --- setup.cfg | 1 + 1 file changed, 1 insertion(+) diff --git a/setup.cfg b/setup.cfg index c8c9bc4c..75e2417b 100644 --- a/setup.cfg +++ b/setup.cfg @@ -42,6 +42,7 @@ cip.providers = cip.formatters = glue = cloud_info_provider.formatters.glue:GLUE glue21 = cloud_info_provider.formatters.glue:GLUE21 + glue21json = cloud_info_provider.formatters.glue:GLUE21Json cmdb = cloud_info_provider.formatters.cmdb:CMDB cip.collectors = headers = cloud_info_provider.collectors.cloud:CloudCollector From 61718dd22986fd1bb7add46774f7aa1208222c40 Mon Sep 17 00:00:00 2001 From: Enol Fernandez Date: Fri, 17 May 2024 15:18:19 +0100 Subject: [PATCH 04/11] Use dict instead of list for other_info --- .../formatters/templates/compute.glue21 | 4 +- cloud_info_provider/providers/opennebula.py | 4 +- cloud_info_provider/providers/openstack.py | 6 +- .../opennebula_base_provider_images.json | 138 +++++++++--------- 4 files changed, 75 insertions(+), 77 deletions(-) diff --git a/cloud_info_provider/formatters/templates/compute.glue21 b/cloud_info_provider/formatters/templates/compute.glue21 index 1dac7415..f98de4ff 100644 --- a/cloud_info_provider/formatters/templates/compute.glue21 +++ b/cloud_info_provider/formatters/templates/compute.glue21 @@ -386,8 +386,8 @@ GLUE2CloudComputingImageContextualizationName: context_format:${image['image_con % for software in image.get('image_software', []): GLUE2CloudComputingImageInstalledsoftware: ${software} % endfor -% for other in image.get('other_info', []): -GLUE2EntityOtherInfo: ${other} +% for other, value in image.get('other_info', {}).items(): +GLUE2EntityOtherInfo: ${other}=${value} % endfor ## XXX Missing ## GLUE2CloudComputingImageContextualizationVersion: diff --git a/cloud_info_provider/providers/opennebula.py b/cloud_info_provider/providers/opennebula.py index 9e2ea9f2..01746e0e 100644 --- a/cloud_info_provider/providers/opennebula.py +++ b/cloud_info_provider/providers/opennebula.py @@ -100,7 +100,7 @@ def get_images(self, **kwargs): "image_os_name": None, "image_os_version": None, "image_platform": "amd64", - "other_info": [], + "other_info": {}, } defaults = self.static.get_image_defaults(prefix=True) img_schema = defaults.get("image_schema", "template") @@ -141,7 +141,7 @@ def get_images(self, **kwargs): base_mpuri = ck_attrs.get("ad:base_mpuri") if base_mpuri: - aux_tpl["other_info"].append("base_mpuri=%s" % base_mpuri) + aux_tpl["other_info"]["base_mpuri"] = base_mpuri if not (self.all_images or aux_tpl["image_marketplace_id"]): continue diff --git a/cloud_info_provider/providers/openstack.py b/cloud_info_provider/providers/openstack.py index 02ec38a9..0d5c9719 100644 --- a/cloud_info_provider/providers/openstack.py +++ b/cloud_info_provider/providers/openstack.py @@ -316,7 +316,7 @@ def get_images(self, **kwargs): "image_context_format": None, "image_software": [], "os_distro": None, - "other_info": [], + "other_info": {}, } defaults = self.static.get_image_defaults(prefix=True) img_sch = defaults.get("image_schema", "os") @@ -346,9 +346,7 @@ def get_images(self, **kwargs): ) extra_attrs = {} if "ad:base_mpuri" in extra_attrs: - aux_img["other_info"].append( - "base_mpuri=%s" % extra_attrs["ad:base_mpuri"] - ) + aux_img["other_info"]["base_mpuri"] = extra_attrs["ad:base_mpuri"] if not marketplace_id: if self.all_images: diff --git a/cloud_info_provider/tests/one_samples/opennebula_base_provider_images.json b/cloud_info_provider/tests/one_samples/opennebula_base_provider_images.json index 48e983e8..320cc36e 100644 --- a/cloud_info_provider/tests/one_samples/opennebula_base_provider_images.json +++ b/cloud_info_provider/tests/one_samples/opennebula_base_provider_images.json @@ -9,7 +9,7 @@ "image_os_version": null, "image_platform": null, "image_version": null, - "other_info": [] + "other_info": {} }, "64": { "image_description": null, @@ -21,7 +21,7 @@ "image_os_version": null, "image_platform": null, "image_version": null, - "other_info": [] + "other_info": {} }, "120": { "image_description": null, @@ -33,7 +33,7 @@ "image_os_version": null, "image_platform": null, "image_version": null, - "other_info": [] + "other_info": {} }, "161": { "image_description": null, @@ -45,7 +45,7 @@ "image_os_version": null, "image_platform": null, "image_version": null, - "other_info": [] + "other_info": {} }, "168": { "image_description": null, @@ -57,7 +57,7 @@ "image_os_version": null, "image_platform": null, "image_version": null, - "other_info": [] + "other_info": {} }, "176": { "image_description": null, @@ -69,7 +69,7 @@ "image_os_version": null, "image_platform": null, "image_version": null, - "other_info": [] + "other_info": {} }, "181": { "image_description": null, @@ -81,7 +81,7 @@ "image_os_version": null, "image_platform": null, "image_version": null, - "other_info": [] + "other_info": {} }, "182": { "image_description": null, @@ -93,7 +93,7 @@ "image_os_version": null, "image_platform": null, "image_version": null, - "other_info": [] + "other_info": {} }, "185": { "image_description": null, @@ -105,7 +105,7 @@ "image_os_version": null, "image_platform": null, "image_version": null, - "other_info": [] + "other_info": {} }, "187": { "image_description": null, @@ -117,7 +117,7 @@ "image_os_version": null, "image_platform": null, "image_version": null, - "other_info": [] + "other_info": {} }, "188": { "image_description": null, @@ -129,7 +129,7 @@ "image_os_version": null, "image_platform": null, "image_version": null, - "other_info": [] + "other_info": {} }, "192": { "image_description": null, @@ -141,7 +141,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "20141029", - "other_info": [] + "other_info": {} }, "193": { "image_description": null, @@ -153,7 +153,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "20141029", - "other_info": [] + "other_info": {} }, "194": { "image_description": "This version of CERNVM has been modified by EGI with the followign changes - default OS extended to 40GB of disk - updated OpenNebula Cloud-Init driver to latest version 0.7.5 - enabled all Cloud-Init data sources", @@ -165,7 +165,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "3.3.0-1", - "other_info": [] + "other_info": {} }, "195": { "image_description": "Chipster is a user-friendly analysis software for high-throughput data. It contains over 300 analysis tools for next generation sequencing NGS microarray proteomics and sequence data. Chipsters client software uses Java Web Start to install itself automatically and it connects to computing servers for the actual analysis. Chipster is open source and the server environment is available as a virtual machine image.", @@ -177,7 +177,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "3.11.2_cloud", - "other_info": [] + "other_info": {} }, "196": { "image_description": "This version of CERNVM has been modified by EGI with the followign changes - default OS extended to 40GB of disk - updated OpenNebula Cloud-Init driver to latest version 0.7.5 - enabled all Cloud-Init data sources", @@ -189,7 +189,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "3.3.0-1", - "other_info": [] + "other_info": {} }, "197": { "image_description": null, @@ -201,7 +201,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "20141119a", - "other_info": [] + "other_info": {} }, "198": { "image_description": "West-life VirtualFolder VM based on CernVM4 and Scientific Linux 7.2. It mounts remote installation of software at cernvm.ch and west-life.egi.eu thus VM should have access to Internet otherwise itll not boot/download the depended software into the cache.Default user is vagrantvagrant if no public ssh key is set non-secure vagrant key is used for testing purposes only please change the ssh-keys in cloud-init. After boot and bootstrap the web ui is accessible on standard HTTP port 80. See the web page e.g. http//localhost or http//[vm.ip.address] Login using vagrantvagrant. Limited scratch disc space available. Optional GUI to desktop allows to mount work with preinstalled SCIPION and CCP4 software.", @@ -213,7 +213,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "17.05", - "other_info": [] + "other_info": {} }, "199": { "image_description": "EGI FedCloud clients rOCCI-cli installed on the Long Term Support version of Ubuntu support guaranteed until April 2019.Includes voms clients with the fedcloud.egi.eu preconfigured and rOCCI-cli tool to interact with the FedCloud services. User must upload his/her certificate into the VM in order to create the proxy.This Virtual Machine has been created by the EGI Federated Cloud using a minimal Ubuntu 14.04 installation with cloud-init contextualization. In order to log into the image a ssh key must be used default user name is ubuntu.See https//wiki.egi.eu/wiki/FAQ10_EGI_Federated_Cloud_UserHow_can_I_connect_to_a_VM.3F for more informationImage was built using packer with the configuration available at https//github.com/EGI-FCTF/VMI-endorsement/.", @@ -225,7 +225,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "2017.02.09", - "other_info": [] + "other_info": {} }, "200": { "image_description": "The Long Term Support version of Ubuntu support guaranteed until 2017.This Virtual Machine has been created by the EGI Federated Cloud using a minimal Ubuntu 12.04 installation with cloud-init contextualization. In order to log into the image a ssh key must be used see https//wiki.egi.eu/wiki/FAQ10_EGI_Federated_Cloud_UserHow_can_I_connect_to_a_VM.3F for more information. Image was built using packer with the configuration available at https//github.com/EGI-FCTF/VMI-endorsement/.", @@ -237,7 +237,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "2017.02.06", - "other_info": [] + "other_info": {} }, "201": { "image_description": "The CentOS Linux distribution is a stable predictable manageable and reproducible platform derived from the sources of Red Hat Enterprise Linux RHEL.This Virtual Machine has been created by the EGI Federated Cloud using a minimal CentOS 7 installation with cloud-init contextualization. In order to log into the image a ssh key must be used default user is named centosSee https//wiki.egi.eu/wiki/FAQ10_EGI_Federated_Cloud_UserHow_can_I_connect_to_a_VM.3F for more informationImage was built using packer with the configuration available at https//github.com/EGI-FCTF/VMI-endorsement/", @@ -249,7 +249,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "2017.02.06", - "other_info": [] + "other_info": {} }, "202": { "image_description": "The CentOS Linux distribution is a stable predictable manageable and reproducible platform derived from the sources of Red Hat Enterprise Linux RHEL.This Virtual Machine has been created by the EGI Federated Cloud using a minimal CentOS 6 installation with cloud-init contextualization. In order to log into the image a ssh key must be used see https//wiki.egi.eu/wiki/FAQ10_EGI_Federated_Cloud_UserHow_can_I_connect_to_a_VM.3F for more information. Image was built using packer with the configuration available at https//github.com/EGI-FCTF/VMI-endorsement/.", @@ -261,7 +261,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "2017.02.06", - "other_info": [] + "other_info": {} }, "203": { "image_description": "Ubuntu 14.04 LTS with docker installed and ready to be used.", @@ -273,7 +273,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "2017.01.31", - "other_info": [] + "other_info": {} }, "204": { "image_description": "The Long Term Support version of Ubuntu support guaranteed until April 2021 with Docker installed and ready to be used.This Virtual Machine has been created by the EGI Federated Cloud using a minimal Ubuntu 16.04 installation with cloud-init contextualization. In order to log into the image a ssh key must be used default user name is ubuntuSee https//wiki.egi.eu/wiki/FAQ10_EGI_Federated_Cloud_UserHow_can_I_connect_to_a_VM.3F for more informationImage was built using packer with the configuration available at https//github.com/EGI-FCTF/VMI-endorsement/.", @@ -285,7 +285,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "2017.01.31", - "other_info": [] + "other_info": {} }, "205": { "image_description": "The Long Term Support version of Ubuntu support guaranteed until April 2019.This Virtual Machine has been created by the EGI Federated Cloud using a minimal Ubuntu 14.04 installation with cloud-init contextualization. In order to log into the image a ssh key must be used see https//wiki.egi.eu/wiki/FAQ10_EGI_Federated_Cloud_UserHow_can_I_connect_to_a_VM.3F for more information. Image was built using packer with the configuration available at https//github.com/EGI-FCTF/VMI-endorsement/.", @@ -297,7 +297,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "2017.01.13", - "other_info": [] + "other_info": {} }, "206": { "image_description": "Scipion is an image processing framework for obtaining 3D models of macromolecular complexes using Electron Microscopy 3DEM.This image provides Scipion v1.0 to be run on a single node plus remote desktop guacamole installed and configured to access the Virtual Machine through a Web Browser.", @@ -309,7 +309,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "1.0.1", - "other_info": [] + "other_info": {} }, "207": { "image_description": null, @@ -321,7 +321,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "20150921", - "other_info": [] + "other_info": {} }, "208": { "image_description": null, @@ -333,7 +333,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "20141029", - "other_info": [] + "other_info": {} }, "209": { "image_description": "The Long Term Support version of Ubuntu support guaranteed until April 2019.This Virtual Machine has been created by the EGI Federated Cloud using a minimal Ubuntu 14.04 installation with cloud-init contextualization. In order to log into the image a ssh key must be used see https//wiki.egi.eu/wiki/FAQ10_EGI_Federated_Cloud_UserHow_can_I_connect_to_a_VM.3F for more information. Image was built using packer with the configuration available at https//github.com/EGI-FCTF/VMI-endorsement/.", @@ -345,7 +345,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "2017.01.13", - "other_info": [] + "other_info": {} }, "210": { "image_description": "Ubuntu 14.04 LTS with docker installed and ready to be used.", @@ -357,7 +357,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "2017.01.31", - "other_info": [] + "other_info": {} }, "211": { "image_description": "Chipster is a user-friendly analysis software for high-throughput data. It contains over 300 analysis tools for next generation sequencing NGS microarray proteomics and sequence data. Chipsters client software uses Java Web Start to install itself automatically and it connects to computing servers for the actual analysis. Chipster is open source and the server environment is available as a virtual machine image.", @@ -369,7 +369,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "3.6.2", - "other_info": [] + "other_info": {} }, "212": { "image_description": "The gCube Smart Executor acts as a working node for a gCube Statistical Manager Service. Please refer to https//wiki.gcube-system.org/gcube/Statistical_Manager for more information.", @@ -381,7 +381,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "1.9", - "other_info": [] + "other_info": {} }, "213": { "image_description": "DataMiner is an e-Infrastructure service providing state-of-the art Data Mining algorithms and ecological modelling approaches under the Web Processing Service WPS standard. This service aids in the application of statistical computing and data mining to a variety of biological and statistical related problems. Models hosted on Dataminer are distributed as-a-Service. Dataminer is able to exploit the heterogeneous resources offered by the D4Science e-Infrastructure to both retrieve and store data. The service allows users to import community developed algorithms written in several programming languages e.g. Fortran R Java etc. and is flexible in terms of algorithms plugability.", @@ -393,7 +393,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "1.7", - "other_info": [] + "other_info": {} }, "214": { "image_description": "BioExcel Model Protein Mutants Workflow Design of an automated protocol to generate comparative modelling structures and genomic data. Using MDWeb and Gromacs engines to setup and run a MD simulation of each protein candidate and the corresponding mutated variants.", @@ -405,7 +405,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "1.0", - "other_info": [] + "other_info": {} }, "215": { "image_description": "Fedora Server is a powerful flexible operating system that includes the best and latest datacenter technologies. It puts you in control of all your infrastructure and services.This Virtual Machine has been created by the EGI Federated Cloud using a minimal Fedora 25 server installation with cloud-init contextualization. In order to log into the image a ssh key must be used default user is named centosSee https//wiki.egi.eu/wiki/FAQ10_EGI_Federated_Cloud_UserHow_can_I_connect_to_a_VM.3F for more informationImage was built using packer with the configuration available at https//github.com/EGI-FCTF/VMI-endorsement/", @@ -417,7 +417,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "2017.03.29", - "other_info": [] + "other_info": {} }, "216": { "image_description": "EGI FedCloud clients rOCCI-cli installed on the Long Term Support version of Ubuntu support guaranteed until April 2019.Includes voms clients with the fedcloud.egi.eu preconfigured and rOCCI-cli tool to interact with the FedCloud services. User must upload his/her certificate into the VM in order to create the proxy.This Virtual Machine has been created by the EGI Federated Cloud using a minimal Ubuntu 14.04 installation with cloud-init contextualization. In order to log into the image a ssh key must be used default user name is ubuntu.See https//wiki.egi.eu/wiki/FAQ10_EGI_Federated_Cloud_UserHow_can_I_connect_to_a_VM.3F for more informationImage was built using packer with the configuration available at https//github.com/EGI-FCTF/VMI-endorsement/.", @@ -429,7 +429,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "2017.02.09", - "other_info": [] + "other_info": {} }, "217": { "image_description": "Ubuntu 14.04 LTS with docker installed and ready to be used.", @@ -441,7 +441,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "2017.01.31", - "other_info": [] + "other_info": {} }, "218": { "image_description": "The Long Term Support version of Ubuntu support guaranteed until April 2019.This Virtual Machine has been created by the EGI Federated Cloud using a minimal Ubuntu 14.04 installation with cloud-init contextualization. In order to log into the image a ssh key must be used see https//wiki.egi.eu/wiki/FAQ10_EGI_Federated_Cloud_UserHow_can_I_connect_to_a_VM.3F for more information. Image was built using packer with the configuration available at https//github.com/EGI-FCTF/VMI-endorsement/.", @@ -453,7 +453,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "2017.01.13", - "other_info": [] + "other_info": {} }, "219": { "image_description": "The Long Term Support version of Ubuntu support guaranteed until April 2021.This Virtual Machine has been created by the EGI Federated Cloud using a minimal Ubuntu 16.04 installation with cloud-init contextualization. In order to log into the image a ssh key must be used default user name is ubuntuSee https//wiki.egi.eu/wiki/FAQ10_EGI_Federated_Cloud_UserHow_can_I_connect_to_a_VM.3F for more informationImage was built using packer with the configuration available at https//github.com/EGI-FCTF/VMI-endorsement/.", @@ -465,7 +465,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "2017.05.23", - "other_info": [] + "other_info": {} }, "220": { "image_description": "This appliance provides an installation of the COMPSs framework. More details on the usage of COMPSs can be found here https//compss.bsc.es", @@ -477,7 +477,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "2.0.1", - "other_info": [] + "other_info": {} }, "221": { "image_description": "This VA is used as base image to deploy the LOFAR use case implemented through the COMPSs programming framework", @@ -489,7 +489,7 @@ "image_os_version": null, "image_platform": "x86", "image_version": "1.4.1", - "other_info": [] + "other_info": {} }, "222": { "image_description": "The Apache Hive data warehouse software facilitates reading writing and managing large datasets residing in distributed storage using SQL. Built on top of Apache Hadoop it provides Tools to enable easy access to data via SQL thus enabling data warehousing tasks such as extract/transform/load ETL reporting and data analysis. A mechanism to impose structure on a variety of data formats Access to files stored either directly in Apache HDFSTM or in other data storage systems such as Apache HBaseTM Query execution via Apache TezTM Apache SparkTM or MapReduce.This image provides a Apache Hive 1.2.1 and Apache Hadoop 2.7.2", @@ -501,7 +501,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "1.0", - "other_info": [] + "other_info": {} }, "223": { "image_description": "This virtual appliance allow any scientific gateway application developer to make practice with the FutureGateway APIs without taking care of the whole system installation which will be in charge of the proper contextualization script user-data", @@ -513,7 +513,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "v1.4", - "other_info": [] + "other_info": {} }, "224": { "image_description": "Cloud support for WS-Pgrade/gUSE/DCI-Bridge.", @@ -525,7 +525,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "3.7.1.7", - "other_info": [] + "other_info": {} }, "225": { "image_description": "The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models. It is designed to scale up from single servers to thousands of machines each offering local computation and storage.", @@ -537,7 +537,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "1.0", - "other_info": [] + "other_info": {} }, "226": { "image_description": null, @@ -549,7 +549,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "20141029", - "other_info": [] + "other_info": {} }, "227": { "image_description": "This version of CERNVM has been modified by EGI with the followign changes - default OS extended to 40GB of disk - updated OpenNebula Cloud-Init driver to latest version 0.7.5 - enabled all Cloud-Init data sources", @@ -561,7 +561,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "3.3.0-1", - "other_info": [] + "other_info": {} }, "228": { "image_description": "The Long Term Support version of Ubuntu support guaranteed until April 2021 with Docker installed and ready to be used.This Virtual Machine has been created by the EGI Federated Cloud using a minimal Ubuntu 16.04 installation with cloud-init contextualization. In order to log into the image a ssh key must be used default user name is ubuntuSee https//wiki.egi.eu/wiki/FAQ10_EGI_Federated_Cloud_UserHow_can_I_connect_to_a_VM.3F for more informationImage was built using packer with the configuration available at https//github.com/EGI-FCTF/VMI-endorsement/.", @@ -573,7 +573,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "2017.01.31", - "other_info": [] + "other_info": {} }, "229": { "image_description": "The CentOS Linux distribution is a stable predictable manageable and reproducible platform derived from the sources of Red Hat Enterprise Linux RHEL.This Virtual Machine has been created by the EGI Federated Cloud using a minimal CentOS 6 installation with cloud-init contextualization. In order to log into the image a ssh key must be used see https//wiki.egi.eu/wiki/FAQ10_EGI_Federated_Cloud_UserHow_can_I_connect_to_a_VM.3F for more information. Image was built using packer with the configuration available at https//github.com/EGI-FCTF/VMI-endorsement/.", @@ -585,7 +585,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "2017.02.06", - "other_info": [] + "other_info": {} }, "230": { "image_description": "The CentOS Linux distribution is a stable predictable manageable and reproducible platform derived from the sources of Red Hat Enterprise Linux RHEL.This Virtual Machine has been created by the EGI Federated Cloud using a minimal CentOS 7 installation with cloud-init contextualization. In order to log into the image a ssh key must be used default user is named centosSee https//wiki.egi.eu/wiki/FAQ10_EGI_Federated_Cloud_UserHow_can_I_connect_to_a_VM.3F for more informationImage was built using packer with the configuration available at https//github.com/EGI-FCTF/VMI-endorsement/", @@ -597,7 +597,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "2017.02.06", - "other_info": [] + "other_info": {} }, "231": { "image_description": "The Jupyter Notebook is a web application that allows you to create and share documents that contain live code equations visualizations and explanatory text. Uses include data cleaning and transformation numerical simulation statistical modeling machine learning and much more.This Virtual Machine has been created by the EGI Federated Cloud using a minimal desktop CentOS 6.8 installation with cloud-init contextualization. In order to log into the image a ssh key must be used default user is named cloudadm.See https//wiki.egi.eu/wiki/FAQ10_EGI_Federated_Cloud_UserHow_can_I_connect_to_a_VM.3F for more information", @@ -609,7 +609,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "4.1.1-1", - "other_info": [] + "other_info": {} }, "232": { "image_description": "The CentOS Linux distribution is a stable predictable manageable and reproducible platform derived from the sources of Red Hat Enterprise Linux RHEL.This Virtual Machine has been created by the EGI Federated Cloud using a minimal CentOS 6 installation with cloud-init contextualization. In order to log into the image a ssh key must be used see https//wiki.egi.eu/wiki/FAQ10_EGI_Federated_Cloud_UserHow_can_I_connect_to_a_VM.3F for more information. Image was built using packer with the configuration available at https//github.com/EGI-FCTF/VMI-endorsement/.", @@ -621,7 +621,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "2017.02.06", - "other_info": [] + "other_info": {} }, "233": { "image_description": "The CentOS Linux distribution is a stable predictable manageable and reproducible platform derived from the sources of Red Hat Enterprise Linux RHEL.This Virtual Machine has been created by the EGI Federated Cloud using a minimal CentOS 7 installation with cloud-init contextualization. In order to log into the image a ssh key must be used default user is named centosSee https//wiki.egi.eu/wiki/FAQ10_EGI_Federated_Cloud_UserHow_can_I_connect_to_a_VM.3F for more informationImage was built using packer with the configuration available at https//github.com/EGI-FCTF/VMI-endorsement/", @@ -633,7 +633,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "2017.02.06", - "other_info": [] + "other_info": {} }, "234": { "image_description": "Ubuntu 14.04 LTS with docker installed and ready to be used.", @@ -645,7 +645,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "2017.01.31", - "other_info": [] + "other_info": {} }, "235": { "image_description": "The Long Term Support version of Ubuntu support guaranteed until April 2019.This Virtual Machine has been created by the EGI Federated Cloud using a minimal Ubuntu 14.04 installation with cloud-init contextualization. In order to log into the image a ssh key must be used see https//wiki.egi.eu/wiki/FAQ10_EGI_Federated_Cloud_UserHow_can_I_connect_to_a_VM.3F for more information. Image was built using packer with the configuration available at https//github.com/EGI-FCTF/VMI-endorsement/.", @@ -657,7 +657,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "2017.01.13", - "other_info": [] + "other_info": {} }, "236": { "image_description": "This appliance provides an installation of the COMPSs framework. More details on the usage of COMPSs can be found here https//compss.bsc.es", @@ -669,7 +669,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "2.0.1", - "other_info": [] + "other_info": {} }, "237": { "image_description": null, @@ -681,7 +681,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "20150921", - "other_info": [] + "other_info": {} }, "238": { "image_description": "Cloud init bug fixing", @@ -693,7 +693,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "1.1.4", - "other_info": [] + "other_info": {} }, "239": { "image_description": "This is a Ubuntu 14.04 LTS image with python-moinmoin installed and served with apache2. Wiki will start by default with user WikiAdmin as administrator just point your browser to its IP address.Image was built with Packer using configuration available at https//github.com/EGI-FCTF/VMI-endorsement/trainingDO NOT USE FOR PRODUCTION", @@ -705,7 +705,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "20160120", - "other_info": [] + "other_info": {} }, "240": { "image_description": "Fractal application for tutorials with docker", @@ -717,7 +717,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "20160330", - "other_info": [] + "other_info": {} }, "241": { "image_description": "The Apache Cassandra database is the right choice when you need scalability and high availability without compromising performance. Linear scalability and proven fault-tolerance on commodity hardware or cloud infrastructure make it the perfect platform for mission-critical data. Cassandras support for replicating across multiple datacenters is best-in-class providing lower latency for your users and the peace of mind of knowing that you can survive regional outages.Cassandras data model offers the convenience of column indexes with the performance of log-structured updates strong support for denormalization and powerful built-in caching.This Virtual Machine has been created by the EGI Federated Cloud using a minimal CentOS 6.7 installation with cloud-init contextualization. In order to log into the image a ssh key must be used default user is named centos.See https//wiki.egi.eu/wiki/FAQ10_EGI_Federated_Cloud_UserHow_can_I_connect_to_a_VM.3F for more information", @@ -729,7 +729,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "20-2.0.17-1", - "other_info": [] + "other_info": {} }, "242": { "image_description": "EGI FedCloud clients rOCCI-cli installed on the Long Term Support version of Ubuntu support guaranteed until April 2019.Includes voms clients with the fedcloud.egi.eu preconfigured and rOCCI-cli tool to interact with the FedCloud services. User must upload his/her certificate into the VM in order to create the proxy.This Virtual Machine has been created by the EGI Federated Cloud using a minimal Ubuntu 14.04 installation with cloud-init contextualization. In order to log into the image a ssh key must be used default user name is ubuntu.See https//wiki.egi.eu/wiki/FAQ10_EGI_Federated_Cloud_UserHow_can_I_connect_to_a_VM.3F for more informationImage was built using packer with the configuration available at https//github.com/EGI-FCTF/VMI-endorsement/.", @@ -741,7 +741,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "2017.02.09", - "other_info": [] + "other_info": {} }, "243": { "image_description": "Chipster is a user-friendly analysis software for high-throughput data. It contains over 300 analysis tools for next generation sequencing NGS microarray proteomics and sequence data. Chipsters client software uses Java Web Start to install itself automatically and it connects to computing servers for the actual analysis. Chipster is open source and the server environment is available as a virtual machine image.", @@ -753,7 +753,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "3.11.2_cloud", - "other_info": [] + "other_info": {} }, "244": { "image_description": "The Long Term Support version of Ubuntu support guaranteed until April 2021 with Docker installed and ready to be used.This Virtual Machine has been created by the EGI Federated Cloud using a minimal Ubuntu 16.04 installation with cloud-init contextualization. In order to log into the image a ssh key must be used default user name is ubuntuSee https//wiki.egi.eu/wiki/FAQ10_EGI_Federated_Cloud_UserHow_can_I_connect_to_a_VM.3F for more informationImage was built using packer with the configuration available at https//github.com/EGI-FCTF/VMI-endorsement/.", @@ -765,7 +765,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "2017.01.31", - "other_info": [] + "other_info": {} }, "245": { "image_description": "Ubuntu 16.04 LTS with minimal installation and small root fs for monitoring purposes", @@ -777,7 +777,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "2017.05.17", - "other_info": [] + "other_info": {} }, "248": { "image_description": "This is for CF14", @@ -789,7 +789,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "2.0.2", - "other_info": [] + "other_info": {} }, "249": { "image_description": null, @@ -801,7 +801,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "20141029", - "other_info": [] + "other_info": {} }, "999": { "image_description": "This VA contains the Cloud support for WS-PGRADE/gUSE/DCI-Bridge needed by the VisIVO Science Demonstrator and the applications needed to run it.", @@ -813,7 +813,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "0.0.1", - "other_info": ["base_mpuri=https://appdb.egi.eu/store/vm/image/bfb017c9-7d6b-4760-ac7d-e312015e63cb:7701/"] + "other_info": {"base_mpuri": "https://appdb.egi.eu/store/vm/image/bfb017c9-7d6b-4760-ac7d-e312015e63cb:7701/"} }, "666": { "image_description": "This VA contains the Cloud support for WS-PGRADE/gUSE/DCI-Bridge needed by the VisIVO Science Demonstrator and the applications needed to run it.", @@ -825,6 +825,6 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "0.0.1", - "other_info": ["base_mpuri=https://appdb.egi.eu/store/vo/image/1FDD3B64-9F6E-48C9-9DBE-1AFE304055A8:4321/"] + "other_info": ["base_mpuri": "https://appdb.egi.eu/store/vo/image/1FDD3B64-9F6E-48C9-9DBE-1AFE304055A8:4321/"} } } From 5b91041cee3bb284fd36126bb8b99c03623c7257 Mon Sep 17 00:00:00 2001 From: Enol Fernandez Date: Fri, 17 May 2024 15:21:42 +0100 Subject: [PATCH 05/11] Fix syntax --- .../tests/one_samples/opennebula_base_provider_images.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cloud_info_provider/tests/one_samples/opennebula_base_provider_images.json b/cloud_info_provider/tests/one_samples/opennebula_base_provider_images.json index 320cc36e..8629ee57 100644 --- a/cloud_info_provider/tests/one_samples/opennebula_base_provider_images.json +++ b/cloud_info_provider/tests/one_samples/opennebula_base_provider_images.json @@ -825,6 +825,6 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "0.0.1", - "other_info": ["base_mpuri": "https://appdb.egi.eu/store/vo/image/1FDD3B64-9F6E-48C9-9DBE-1AFE304055A8:4321/"} + "other_info": ["base_mpuri": "https://appdb.egi.eu/store/vo/image/1FDD3B64-9F6E-48C9-9DBE-1AFE304055A8:4321/"] } } From e7e920be985e725ed3704aa594133e50e76b5e59 Mon Sep 17 00:00:00 2001 From: Enol Fernandez Date: Mon, 20 May 2024 08:58:48 +0100 Subject: [PATCH 06/11] linter fixes --- cloud_info_provider/formatters/glue.py | 27 +++++++++++++------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/cloud_info_provider/formatters/glue.py b/cloud_info_provider/formatters/glue.py index 222e187a..5784acc0 100644 --- a/cloud_info_provider/formatters/glue.py +++ b/cloud_info_provider/formatters/glue.py @@ -159,7 +159,6 @@ def _endpoint_id(self, ep): def glue_endpoints(self, info): endpoints = [] for url, endpoint in self.all_endpoints.items(): - native_endpoint = endpoint["compute_api_type"] != "OCCI" if endpoint["compute_api_type"] == "OpenStack": interface_name = "org.openstack.nova" endpoint_semantics = "https://developer.openstack.org/api-ref/compute" @@ -247,10 +246,10 @@ def glue_templates(self, share, share_id): for ep in share.get("endpoints", {}).get("endpoints", {}).values(): native_endpoint = ep["compute_api_type"] != "OCCI" id_field = "template_native_id" if native_endpoint else "template_id" - tpl_name = ( - template["template_name"] if "template_name" in template else tpl_id + name_field = ( + "template_name" if "template_name" in template else id_field ) - tpl_obj = self._glue_obj(template[id_field], tpl_name) + tpl_obj = self._glue_obj(template[id_field], template[name_field]) gpu_number = template.get("template_flavor_gpu_number", 0) tpl_obj.update( @@ -272,8 +271,8 @@ def glue_templates(self, share, share_id): if template.get("template_ephemeral"): tpl_obj["EphemeralStorage"] = template["template_ephemeral"] if gpu_number: - gpu_tpl_id = tpl_id + "_gpu" - gpu_tpl_name = tpl_name + "_gpu" + gpu_tpl_id = f"{template[id_field]}_gpu" + gpu_tpl_name = f"{template[name_field]}_gpu" tpl_obj["Associations"][ "CloudComputingInstanceTypeCloudComputingVirtualAccelerator" ] = gpu_tpl_id @@ -371,6 +370,7 @@ def glue_images(self, share, share_id): ) img_assoc.append(network_conf_id) img_obj["Associations"]["ImageNetworkConfiguration"] = img_assoc + image_network.append(network_obj) self._dict_append( { @@ -414,7 +414,6 @@ def glue_access_policy(self, share, share_id, vo): ) def glue_shares(self, info): - all_obj = {} shares = [] for vo, share in self.shares.items(): share_id = "%s_share_%s_%s" % ( @@ -463,14 +462,14 @@ def glue_shares(self, info): share_template_max_memory = 0 endpoints = share.get("endpoints", {}).get("endpoints", {}) - templates = share["templates"] - if share["instance_max_accelerators"]: - share_max_accelerators = share["instance_max_accelerators"] - else: - share_max_accelerators = self.static_compute_info[ - "compute_max_accelerators" - ] + # This is commented out as we are not using it + # if share["instance_max_accelerators"]: + # share_max_accelerators = share["instance_max_accelerators"] + # else: + # share_max_accelerators = self.static_compute_info[ + # "compute_max_accelerators" + # ] quotas = share["quotas"] if "instances" in quotas: From aca19b578d1aefa3d2e635118a7a1940e3b52427 Mon Sep 17 00:00:00 2001 From: Enol Fernandez Date: Mon, 20 May 2024 09:39:32 +0100 Subject: [PATCH 07/11] Fix tests --- .../opennebula_base_provider_images.json | 2 +- .../opennebula_rocci_provider_images.json | 138 +++++++++--------- cloud_info_provider/tests/test_openstack.py | 4 +- 3 files changed, 72 insertions(+), 72 deletions(-) diff --git a/cloud_info_provider/tests/one_samples/opennebula_base_provider_images.json b/cloud_info_provider/tests/one_samples/opennebula_base_provider_images.json index 8629ee57..4bed8399 100644 --- a/cloud_info_provider/tests/one_samples/opennebula_base_provider_images.json +++ b/cloud_info_provider/tests/one_samples/opennebula_base_provider_images.json @@ -825,6 +825,6 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "0.0.1", - "other_info": ["base_mpuri": "https://appdb.egi.eu/store/vo/image/1FDD3B64-9F6E-48C9-9DBE-1AFE304055A8:4321/"] + "other_info": {"base_mpuri": "https://appdb.egi.eu/store/vo/image/1FDD3B64-9F6E-48C9-9DBE-1AFE304055A8:4321/"} } } diff --git a/cloud_info_provider/tests/one_samples/opennebula_rocci_provider_images.json b/cloud_info_provider/tests/one_samples/opennebula_rocci_provider_images.json index 73c6626f..f2e5c96a 100644 --- a/cloud_info_provider/tests/one_samples/opennebula_rocci_provider_images.json +++ b/cloud_info_provider/tests/one_samples/opennebula_rocci_provider_images.json @@ -7,7 +7,7 @@ "image_os_version": null, "image_platform": null, "image_version": null, - "other_info": []}, + "other_info": {}}, "161": {"image_description": null, "image_id": "template#161", "image_marketplace_id": null, @@ -17,7 +17,7 @@ "image_os_version": null, "image_platform": null, "image_version": null, - "other_info": []}, + "other_info": {}}, "168": {"image_description": null, "image_id": "template#168", "image_marketplace_id": null, @@ -27,7 +27,7 @@ "image_os_version": null, "image_platform": null, "image_version": null, - "other_info": []}, + "other_info": {}}, "176": {"image_description": null, "image_id": "template#176", "image_marketplace_id": null, @@ -37,7 +37,7 @@ "image_os_version": null, "image_platform": null, "image_version": null, - "other_info": []}, + "other_info": {}}, "181": {"image_description": null, "image_id": "template#181", "image_marketplace_id": null, @@ -47,7 +47,7 @@ "image_os_version": null, "image_platform": null, "image_version": null, - "other_info": []}, + "other_info": {}}, "182": {"image_description": null, "image_id": "template#182", "image_marketplace_id": null, @@ -57,7 +57,7 @@ "image_os_version": null, "image_platform": null, "image_version": null, - "other_info": []}, + "other_info": {}}, "185": {"image_description": null, "image_id": "template#185", "image_marketplace_id": null, @@ -67,7 +67,7 @@ "image_os_version": null, "image_platform": null, "image_version": null, - "other_info": []}, + "other_info": {}}, "187": {"image_description": null, "image_id": "template#187", "image_marketplace_id": null, @@ -77,7 +77,7 @@ "image_os_version": null, "image_platform": null, "image_version": null, - "other_info": []}, + "other_info": {}}, "188": {"image_description": null, "image_id": "template#188", "image_marketplace_id": null, @@ -87,7 +87,7 @@ "image_os_version": null, "image_platform": null, "image_version": null, - "other_info": []}, + "other_info": {}}, "192": {"image_description": null, "image_id": "template#192", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/ba4235f2-8732-5376-ad46-53bf176ea036:167/", @@ -97,7 +97,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "20141029", - "other_info": []}, + "other_info": {}}, "193": {"image_description": null, "image_id": "template#193", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/2f55ff2a-abe3-52b3-ad56-aded22a63fae:177/", @@ -107,7 +107,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "20141029", - "other_info": []}, + "other_info": {}}, "194": {"image_description": "This version of CERNVM has been modified by EGI with the followign changes - default OS extended to 40GB of disk - updated OpenNebula Cloud-Init driver to latest version 0.7.5 - enabled all Cloud-Init data sources", "image_id": "template#194", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/a7b085a0-1f1b-5bc4-82d8-a33c20f69749:199/", @@ -117,7 +117,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "3.3.0-1", - "other_info": []}, + "other_info": {}}, "195": {"image_description": "Chipster is a user-friendly analysis software for high-throughput data. It contains over 300 analysis tools for next generation sequencing NGS microarray proteomics and sequence data. Chipsters client software uses Java Web Start to install itself automatically and it connects to computing servers for the actual analysis. Chipster is open source and the server environment is available as a virtual machine image.", "image_id": "template#195", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/9c30db3a-791f-5617-916d-945ed6782cfa:4145/", @@ -127,7 +127,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "3.11.2_cloud", - "other_info": []}, + "other_info": {}}, "196": {"image_description": "This version of CERNVM has been modified by EGI with the followign changes - default OS extended to 40GB of disk - updated OpenNebula Cloud-Init driver to latest version 0.7.5 - enabled all Cloud-Init data sources", "image_id": "template#196", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/b5d1e18a-cc98-5566-80af-6320d75a83c8:556/", @@ -137,7 +137,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "3.3.0-1", - "other_info": []}, + "other_info": {}}, "197": {"image_description": null, "image_id": "template#197", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/fcb79e7e-6489-588d-b608-5c25cda31ff6:557/", @@ -147,7 +147,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "20141119a", - "other_info": []}, + "other_info": {}}, "198": {"image_description": "West-life VirtualFolder VM based on CernVM4 and Scientific Linux 7.2. It mounts remote installation of software at cernvm.ch and west-life.egi.eu thus VM should have access to Internet otherwise itll not boot/download the depended software into the cache.Default user is vagrantvagrant if no public ssh key is set non-secure vagrant key is used for testing purposes only please change the ssh-keys in cloud-init. After boot and bootstrap the web ui is accessible on standard HTTP port 80. See the web page e.g. http//localhost or http//[vm.ip.address] Login using vagrantvagrant. Limited scratch disc space available. Optional GUI to desktop allows to mount work with preinstalled SCIPION and CCP4 software.", "image_id": "template#198", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/1cc39672-0f09-51da-b232-17722be1c583:4381/", @@ -157,7 +157,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "17.05", - "other_info": []}, + "other_info": {}}, "199": {"image_description": "EGI FedCloud clients rOCCI-cli installed on the Long Term Support version of Ubuntu support guaranteed until April 2019.Includes voms clients with the fedcloud.egi.eu preconfigured and rOCCI-cli tool to interact with the FedCloud services. User must upload his/her certificate into the VM in order to create the proxy.This Virtual Machine has been created by the EGI Federated Cloud using a minimal Ubuntu 14.04 installation with cloud-init contextualization. In order to log into the image a ssh key must be used default user name is ubuntu.See https//wiki.egi.eu/wiki/FAQ10_EGI_Federated_Cloud_UserHow_can_I_connect_to_a_VM.3F for more informationImage was built using packer with the configuration available at https//github.com/EGI-FCTF/VMI-endorsement/.", "image_id": "template#199", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/4c566580-0d9f-5b79-91e0-0b65bc4eceff:4323/", @@ -167,7 +167,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "2017.02.09", - "other_info": []}, + "other_info": {}}, "20": {"image_description": null, "image_id": "template#20", "image_marketplace_id": null, @@ -177,7 +177,7 @@ "image_os_version": null, "image_platform": null, "image_version": null, - "other_info": []}, + "other_info": {}}, "200": {"image_description": "The Long Term Support version of Ubuntu support guaranteed until 2017.This Virtual Machine has been created by the EGI Federated Cloud using a minimal Ubuntu 12.04 installation with cloud-init contextualization. In order to log into the image a ssh key must be used see https//wiki.egi.eu/wiki/FAQ10_EGI_Federated_Cloud_UserHow_can_I_connect_to_a_VM.3F for more information. Image was built using packer with the configuration available at https//github.com/EGI-FCTF/VMI-endorsement/.", "image_id": "template#200", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/532215e2-920b-5a75-9550-79177e699669:4324/", @@ -187,7 +187,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "2017.02.06", - "other_info": []}, + "other_info": {}}, "201": {"image_description": "The CentOS Linux distribution is a stable predictable manageable and reproducible platform derived from the sources of Red Hat Enterprise Linux RHEL.This Virtual Machine has been created by the EGI Federated Cloud using a minimal CentOS 7 installation with cloud-init contextualization. In order to log into the image a ssh key must be used default user is named centosSee https//wiki.egi.eu/wiki/FAQ10_EGI_Federated_Cloud_UserHow_can_I_connect_to_a_VM.3F for more informationImage was built using packer with the configuration available at https//github.com/EGI-FCTF/VMI-endorsement/", "image_id": "template#201", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/55f38ac1-ff24-5bd5-acea-a9668c7b04da:4325/", @@ -197,7 +197,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "2017.02.06", - "other_info": []}, + "other_info": {}}, "202": {"image_description": "The CentOS Linux distribution is a stable predictable manageable and reproducible platform derived from the sources of Red Hat Enterprise Linux RHEL.This Virtual Machine has been created by the EGI Federated Cloud using a minimal CentOS 6 installation with cloud-init contextualization. In order to log into the image a ssh key must be used see https//wiki.egi.eu/wiki/FAQ10_EGI_Federated_Cloud_UserHow_can_I_connect_to_a_VM.3F for more information. Image was built using packer with the configuration available at https//github.com/EGI-FCTF/VMI-endorsement/.", "image_id": "template#202", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/51149658-e395-5971-b235-dcfd4d1db873:4326/", @@ -207,7 +207,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "2017.02.06", - "other_info": []}, + "other_info": {}}, "203": {"image_description": "Ubuntu 14.04 LTS with docker installed and ready to be used.", "image_id": "template#203", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/bf5b76c9-d3f3-5cda-908d-e5f5e8d103cf:4327/", @@ -217,7 +217,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "2017.01.31", - "other_info": []}, + "other_info": {}}, "204": {"image_description": "The Long Term Support version of Ubuntu support guaranteed until April 2021 with Docker installed and ready to be used.This Virtual Machine has been created by the EGI Federated Cloud using a minimal Ubuntu 16.04 installation with cloud-init contextualization. In order to log into the image a ssh key must be used default user name is ubuntuSee https//wiki.egi.eu/wiki/FAQ10_EGI_Federated_Cloud_UserHow_can_I_connect_to_a_VM.3F for more informationImage was built using packer with the configuration available at https//github.com/EGI-FCTF/VMI-endorsement/.", "image_id": "template#204", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/8e8e110c-a83c-591a-9f04-13f341b2117f:4328/", @@ -227,7 +227,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "2017.01.31", - "other_info": []}, + "other_info": {}}, "205": {"image_description": "The Long Term Support version of Ubuntu support guaranteed until April 2019.This Virtual Machine has been created by the EGI Federated Cloud using a minimal Ubuntu 14.04 installation with cloud-init contextualization. In order to log into the image a ssh key must be used see https//wiki.egi.eu/wiki/FAQ10_EGI_Federated_Cloud_UserHow_can_I_connect_to_a_VM.3F for more information. Image was built using packer with the configuration available at https//github.com/EGI-FCTF/VMI-endorsement/.", "image_id": "template#205", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/2e38ea90-92dd-529b-81b9-929a7aed9f27:4329/", @@ -237,7 +237,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "2017.01.13", - "other_info": []}, + "other_info": {}}, "206": {"image_description": "Scipion is an image processing framework for obtaining 3D models of macromolecular complexes using Electron Microscopy 3DEM.This image provides Scipion v1.0 to be run on a single node plus remote desktop guacamole installed and configured to access the Virtual Machine through a Web Browser.", "image_id": "template#206", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/cd01b6c8-9e1d-5a99-bb56-aea4efdec735:4330/", @@ -247,7 +247,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "1.0.1", - "other_info": []}, + "other_info": {}}, "207": {"image_description": null, "image_id": "template#207", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/3cd088c3-9400-5977-a16b-47b957f64f00:4331/", @@ -257,7 +257,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "20150921", - "other_info": []}, + "other_info": {}}, "208": {"image_description": null, "image_id": "template#208", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/389f8dc5-ca37-52b9-9876-43dc6abbb5ec:4332/", @@ -267,7 +267,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "20141029", - "other_info": []}, + "other_info": {}}, "209": {"image_description": "The Long Term Support version of Ubuntu support guaranteed until April 2019.This Virtual Machine has been created by the EGI Federated Cloud using a minimal Ubuntu 14.04 installation with cloud-init contextualization. In order to log into the image a ssh key must be used see https//wiki.egi.eu/wiki/FAQ10_EGI_Federated_Cloud_UserHow_can_I_connect_to_a_VM.3F for more information. Image was built using packer with the configuration available at https//github.com/EGI-FCTF/VMI-endorsement/.", "image_id": "template#209", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/aae65115-66c7-5cb9-8c55-db301fc2cfd9:4030/", @@ -277,7 +277,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "2017.01.13", - "other_info": []}, + "other_info": {}}, "210": {"image_description": "Ubuntu 14.04 LTS with docker installed and ready to be used.", "image_id": "template#210", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/8a1e4f72-fc8f-51a2-b6a4-a5b659b73cc9:4029/", @@ -287,7 +287,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "2017.01.31", - "other_info": []}, + "other_info": {}}, "211": {"image_description": "Chipster is a user-friendly analysis software for high-throughput data. It contains over 300 analysis tools for next generation sequencing NGS microarray proteomics and sequence data. Chipsters client software uses Java Web Start to install itself automatically and it connects to computing servers for the actual analysis. Chipster is open source and the server environment is available as a virtual machine image.", "image_id": "template#211", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/85dfee50-c583-5ac6-afca-552f80980a56:2634/", @@ -297,7 +297,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "3.6.2", - "other_info": []}, + "other_info": {}}, "212": {"image_description": "The gCube Smart Executor acts as a working node for a gCube Statistical Manager Service. Please refer to https//wiki.gcube-system.org/gcube/Statistical_Manager for more information.", "image_id": "template#212", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/2433ccee-a656-5671-96e2-942514e5ab11:4436/", @@ -307,7 +307,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "1.9", - "other_info": []}, + "other_info": {}}, "213": {"image_description": "DataMiner is an e-Infrastructure service providing state-of-the art Data Mining algorithms and ecological modelling approaches under the Web Processing Service WPS standard. This service aids in the application of statistical computing and data mining to a variety of biological and statistical related problems. Models hosted on Dataminer are distributed as-a-Service. Dataminer is able to exploit the heterogeneous resources offered by the D4Science e-Infrastructure to both retrieve and store data. The service allows users to import community developed algorithms written in several programming languages e.g. Fortran R Java etc. and is flexible in terms of algorithms plugability.", "image_id": "template#213", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/5175fae4-ada9-5964-95cd-af5202bf76b5:4437/", @@ -317,7 +317,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "1.7", - "other_info": []}, + "other_info": {}}, "214": {"image_description": "BioExcel Model Protein Mutants Workflow Design of an automated protocol to generate comparative modelling structures and genomic data. Using MDWeb and Gromacs engines to setup and run a MD simulation of each protein candidate and the corresponding mutated variants.", "image_id": "template#214", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/a2e676e9-39e1-5e84-942d-332d8107223d:4438/", @@ -327,7 +327,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "1.0", - "other_info": []}, + "other_info": {}}, "215": {"image_description": "Fedora Server is a powerful flexible operating system that includes the best and latest datacenter technologies. It puts you in control of all your infrastructure and services.This Virtual Machine has been created by the EGI Federated Cloud using a minimal Fedora 25 server installation with cloud-init contextualization. In order to log into the image a ssh key must be used default user is named centosSee https//wiki.egi.eu/wiki/FAQ10_EGI_Federated_Cloud_UserHow_can_I_connect_to_a_VM.3F for more informationImage was built using packer with the configuration available at https//github.com/EGI-FCTF/VMI-endorsement/", "image_id": "template#215", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/591f6cd0-28af-552a-9447-875b44a86112:4439/", @@ -337,7 +337,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "2017.03.29", - "other_info": []}, + "other_info": {}}, "216": {"image_description": "EGI FedCloud clients rOCCI-cli installed on the Long Term Support version of Ubuntu support guaranteed until April 2019.Includes voms clients with the fedcloud.egi.eu preconfigured and rOCCI-cli tool to interact with the FedCloud services. User must upload his/her certificate into the VM in order to create the proxy.This Virtual Machine has been created by the EGI Federated Cloud using a minimal Ubuntu 14.04 installation with cloud-init contextualization. In order to log into the image a ssh key must be used default user name is ubuntu.See https//wiki.egi.eu/wiki/FAQ10_EGI_Federated_Cloud_UserHow_can_I_connect_to_a_VM.3F for more informationImage was built using packer with the configuration available at https//github.com/EGI-FCTF/VMI-endorsement/.", "image_id": "template#216", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/8b3f7a4d-29ae-5bd1-ada5-efedd1993643:4440/", @@ -347,7 +347,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "2017.02.09", - "other_info": []}, + "other_info": {}}, "217": {"image_description": "Ubuntu 14.04 LTS with docker installed and ready to be used.", "image_id": "template#217", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/2017241c-210b-5aef-8145-42dedb628ded:4441/", @@ -357,7 +357,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "2017.01.31", - "other_info": []}, + "other_info": {}}, "218": {"image_description": "The Long Term Support version of Ubuntu support guaranteed until April 2019.This Virtual Machine has been created by the EGI Federated Cloud using a minimal Ubuntu 14.04 installation with cloud-init contextualization. In order to log into the image a ssh key must be used see https//wiki.egi.eu/wiki/FAQ10_EGI_Federated_Cloud_UserHow_can_I_connect_to_a_VM.3F for more information. Image was built using packer with the configuration available at https//github.com/EGI-FCTF/VMI-endorsement/.", "image_id": "template#218", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/38d42ca1-f4e9-5b5c-98de-37eb2d26301a:4442/", @@ -367,7 +367,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "2017.01.13", - "other_info": []}, + "other_info": {}}, "219": {"image_description": "The Long Term Support version of Ubuntu support guaranteed until April 2021.This Virtual Machine has been created by the EGI Federated Cloud using a minimal Ubuntu 16.04 installation with cloud-init contextualization. In order to log into the image a ssh key must be used default user name is ubuntuSee https//wiki.egi.eu/wiki/FAQ10_EGI_Federated_Cloud_UserHow_can_I_connect_to_a_VM.3F for more informationImage was built using packer with the configuration available at https//github.com/EGI-FCTF/VMI-endorsement/.", "image_id": "template#219", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/8df7ba00-8467-57aa-bf1e-05754a2a73bf:4469/", @@ -377,7 +377,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "2017.05.23", - "other_info": []}, + "other_info": {}}, "220": {"image_description": "This appliance provides an installation of the COMPSs framework. More details on the usage of COMPSs can be found here https//compss.bsc.es", "image_id": "template#220", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/96a4edff-bb1f-5685-be47-ba9a10429b05:4444/", @@ -387,7 +387,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "2.0.1", - "other_info": []}, + "other_info": {}}, "221": {"image_description": "This VA is used as base image to deploy the LOFAR use case implemented through the COMPSs programming framework", "image_id": "template#221", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/ac34bc96-4d78-583a-b73b-a9102aeec206:4445/", @@ -397,7 +397,7 @@ "image_os_version": null, "image_platform": "x86", "image_version": "1.4.1", - "other_info": []}, + "other_info": {}}, "222": {"image_description": "The Apache Hive data warehouse software facilitates reading writing and managing large datasets residing in distributed storage using SQL. Built on top of Apache Hadoop it provides Tools to enable easy access to data via SQL thus enabling data warehousing tasks such as extract/transform/load ETL reporting and data analysis. A mechanism to impose structure on a variety of data formats Access to files stored either directly in Apache HDFSTM or in other data storage systems such as Apache HBaseTM Query execution via Apache TezTM Apache SparkTM or MapReduce.This image provides a Apache Hive 1.2.1 and Apache Hadoop 2.7.2", "image_id": "template#222", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/2287633e-329d-5daf-acab-11bc9e4b1385:4446/", @@ -407,7 +407,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "1.0", - "other_info": []}, + "other_info": {}}, "223": {"image_description": "This virtual appliance allow any scientific gateway application developer to make practice with the FutureGateway APIs without taking care of the whole system installation which will be in charge of the proper contextualization script user-data", "image_id": "template#223", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/d905439a-218a-5f70-8067-346ad9e84b85:4447/", @@ -417,7 +417,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "v1.4", - "other_info": []}, + "other_info": {}}, "224": {"image_description": "Cloud support for WS-Pgrade/gUSE/DCI-Bridge.", "image_id": "template#224", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/b93d7f71-ae03-5826-bb44-d9154ed28a91:4448/", @@ -427,7 +427,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "3.7.1.7", - "other_info": []}, + "other_info": {}}, "225": {"image_description": "The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models. It is designed to scale up from single servers to thousands of machines each offering local computation and storage.", "image_id": "template#225", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/8f6c8f24-55a9-545e-a92d-82581de89c51:4449/", @@ -437,7 +437,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "1.0", - "other_info": []}, + "other_info": {}}, "226": {"image_description": null, "image_id": "template#226", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/b25c250b-637b-5622-a6fb-b0db4f2883f2:4450/", @@ -447,7 +447,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "20141029", - "other_info": []}, + "other_info": {}}, "227": {"image_description": "This version of CERNVM has been modified by EGI with the followign changes - default OS extended to 40GB of disk - updated OpenNebula Cloud-Init driver to latest version 0.7.5 - enabled all Cloud-Init data sources", "image_id": "template#227", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/c0482bc2-bf41-5d49-a85f-a750174a186b:4451/", @@ -457,7 +457,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "3.3.0-1", - "other_info": []}, + "other_info": {}}, "228": {"image_description": "The Long Term Support version of Ubuntu support guaranteed until April 2021 with Docker installed and ready to be used.This Virtual Machine has been created by the EGI Federated Cloud using a minimal Ubuntu 16.04 installation with cloud-init contextualization. In order to log into the image a ssh key must be used default user name is ubuntuSee https//wiki.egi.eu/wiki/FAQ10_EGI_Federated_Cloud_UserHow_can_I_connect_to_a_VM.3F for more informationImage was built using packer with the configuration available at https//github.com/EGI-FCTF/VMI-endorsement/.", "image_id": "template#228", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/07fbd366-bbd2-5ca4-8f47-82c23ebc7d23:4452/", @@ -467,7 +467,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "2017.01.31", - "other_info": []}, + "other_info": {}}, "229": {"image_description": "The CentOS Linux distribution is a stable predictable manageable and reproducible platform derived from the sources of Red Hat Enterprise Linux RHEL.This Virtual Machine has been created by the EGI Federated Cloud using a minimal CentOS 6 installation with cloud-init contextualization. In order to log into the image a ssh key must be used see https//wiki.egi.eu/wiki/FAQ10_EGI_Federated_Cloud_UserHow_can_I_connect_to_a_VM.3F for more information. Image was built using packer with the configuration available at https//github.com/EGI-FCTF/VMI-endorsement/.", "image_id": "template#229", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/e009209f-b62b-552e-b26c-eef351264f58:4453/", @@ -477,7 +477,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "2017.02.06", - "other_info": []}, + "other_info": {}}, "230": {"image_description": "The CentOS Linux distribution is a stable predictable manageable and reproducible platform derived from the sources of Red Hat Enterprise Linux RHEL.This Virtual Machine has been created by the EGI Federated Cloud using a minimal CentOS 7 installation with cloud-init contextualization. In order to log into the image a ssh key must be used default user is named centosSee https//wiki.egi.eu/wiki/FAQ10_EGI_Federated_Cloud_UserHow_can_I_connect_to_a_VM.3F for more informationImage was built using packer with the configuration available at https//github.com/EGI-FCTF/VMI-endorsement/", "image_id": "template#230", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/fe71524e-66d3-5d09-8375-c5510ed5ccba:4454/", @@ -487,7 +487,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "2017.02.06", - "other_info": []}, + "other_info": {}}, "231": {"image_description": "The Jupyter Notebook is a web application that allows you to create and share documents that contain live code equations visualizations and explanatory text. Uses include data cleaning and transformation numerical simulation statistical modeling machine learning and much more.This Virtual Machine has been created by the EGI Federated Cloud using a minimal desktop CentOS 6.8 installation with cloud-init contextualization. In order to log into the image a ssh key must be used default user is named cloudadm.See https//wiki.egi.eu/wiki/FAQ10_EGI_Federated_Cloud_UserHow_can_I_connect_to_a_VM.3F for more information", "image_id": "template#231", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/20f1eac8-68b4-5938-b720-ab07b2edc485:4239/", @@ -497,7 +497,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "4.1.1-1", - "other_info": []}, + "other_info": {}}, "232": {"image_description": "The CentOS Linux distribution is a stable predictable manageable and reproducible platform derived from the sources of Red Hat Enterprise Linux RHEL.This Virtual Machine has been created by the EGI Federated Cloud using a minimal CentOS 6 installation with cloud-init contextualization. In order to log into the image a ssh key must be used see https//wiki.egi.eu/wiki/FAQ10_EGI_Federated_Cloud_UserHow_can_I_connect_to_a_VM.3F for more information. Image was built using packer with the configuration available at https//github.com/EGI-FCTF/VMI-endorsement/.", "image_id": "template#232", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/ef631811-62b9-526c-8dce-c90cba3949b5:4240/", @@ -507,7 +507,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "2017.02.06", - "other_info": []}, + "other_info": {}}, "233": {"image_description": "The CentOS Linux distribution is a stable predictable manageable and reproducible platform derived from the sources of Red Hat Enterprise Linux RHEL.This Virtual Machine has been created by the EGI Federated Cloud using a minimal CentOS 7 installation with cloud-init contextualization. In order to log into the image a ssh key must be used default user is named centosSee https//wiki.egi.eu/wiki/FAQ10_EGI_Federated_Cloud_UserHow_can_I_connect_to_a_VM.3F for more informationImage was built using packer with the configuration available at https//github.com/EGI-FCTF/VMI-endorsement/", "image_id": "template#233", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/e42cac2b-1c12-5e1f-8914-25d85eb6c9be:4241/", @@ -517,7 +517,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "2017.02.06", - "other_info": []}, + "other_info": {}}, "234": {"image_description": "Ubuntu 14.04 LTS with docker installed and ready to be used.", "image_id": "template#234", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/09232b7f-1a93-558e-b13c-7175b0fd4af4:4242/", @@ -527,7 +527,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "2017.01.31", - "other_info": []}, + "other_info": {}}, "235": {"image_description": "The Long Term Support version of Ubuntu support guaranteed until April 2019.This Virtual Machine has been created by the EGI Federated Cloud using a minimal Ubuntu 14.04 installation with cloud-init contextualization. In order to log into the image a ssh key must be used see https//wiki.egi.eu/wiki/FAQ10_EGI_Federated_Cloud_UserHow_can_I_connect_to_a_VM.3F for more information. Image was built using packer with the configuration available at https//github.com/EGI-FCTF/VMI-endorsement/.", "image_id": "template#235", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/e72b7551-f7a4-523b-8832-da8725e49fc3:4243/", @@ -537,7 +537,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "2017.01.13", - "other_info": []}, + "other_info": {}}, "236": {"image_description": "This appliance provides an installation of the COMPSs framework. More details on the usage of COMPSs can be found here https//compss.bsc.es", "image_id": "template#236", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/02a34f93-1054-5441-816a-714eb2071118:4244/", @@ -547,7 +547,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "2.0.1", - "other_info": []}, + "other_info": {}}, "237": {"image_description": null, "image_id": "template#237", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/115aa4f1-fdd4-5129-bc19-09755e483940:4245/", @@ -557,7 +557,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "20150921", - "other_info": []}, + "other_info": {}}, "238": {"image_description": "Cloud init bug fixing", "image_id": "template#238", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/1849f46a-5917-573d-bc4f-68058ef6dbd8:4246/", @@ -567,7 +567,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "1.1.4", - "other_info": []}, + "other_info": {}}, "239": {"image_description": "This is a Ubuntu 14.04 LTS image with python-moinmoin installed and served with apache2. Wiki will start by default with user WikiAdmin as administrator just point your browser to its IP address.Image was built with Packer using configuration available at https//github.com/EGI-FCTF/VMI-endorsement/trainingDO NOT USE FOR PRODUCTION", "image_id": "template#239", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/bcad2125-e9a3-5933-b415-55d440967481:4247/", @@ -577,7 +577,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "20160120", - "other_info": []}, + "other_info": {}}, "240": {"image_description": "Fractal application for tutorials with docker", "image_id": "template#240", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/4151dc6f-5854-5bc0-a845-8dcc8b2920e3:4248/", @@ -587,7 +587,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "20160330", - "other_info": []}, + "other_info": {}}, "241": {"image_description": "The Apache Cassandra database is the right choice when you need scalability and high availability without compromising performance. Linear scalability and proven fault-tolerance on commodity hardware or cloud infrastructure make it the perfect platform for mission-critical data. Cassandras support for replicating across multiple datacenters is best-in-class providing lower latency for your users and the peace of mind of knowing that you can survive regional outages.Cassandras data model offers the convenience of column indexes with the performance of log-structured updates strong support for denormalization and powerful built-in caching.This Virtual Machine has been created by the EGI Federated Cloud using a minimal CentOS 6.7 installation with cloud-init contextualization. In order to log into the image a ssh key must be used default user is named centos.See https//wiki.egi.eu/wiki/FAQ10_EGI_Federated_Cloud_UserHow_can_I_connect_to_a_VM.3F for more information", "image_id": "template#241", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/e2c97984-efdc-5f52-8c46-2f879619b6a2:4249/", @@ -597,7 +597,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "20-2.0.17-1", - "other_info": []}, + "other_info": {}}, "242": {"image_description": "EGI FedCloud clients rOCCI-cli installed on the Long Term Support version of Ubuntu support guaranteed until April 2019.Includes voms clients with the fedcloud.egi.eu preconfigured and rOCCI-cli tool to interact with the FedCloud services. User must upload his/her certificate into the VM in order to create the proxy.This Virtual Machine has been created by the EGI Federated Cloud using a minimal Ubuntu 14.04 installation with cloud-init contextualization. In order to log into the image a ssh key must be used default user name is ubuntu.See https//wiki.egi.eu/wiki/FAQ10_EGI_Federated_Cloud_UserHow_can_I_connect_to_a_VM.3F for more informationImage was built using packer with the configuration available at https//github.com/EGI-FCTF/VMI-endorsement/.", "image_id": "template#242", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/218cd70f-3058-5c9c-b3d0-50db8758e15f:4251/", @@ -607,7 +607,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "2017.02.09", - "other_info": []}, + "other_info": {}}, "243": {"image_description": "Chipster is a user-friendly analysis software for high-throughput data. It contains over 300 analysis tools for next generation sequencing NGS microarray proteomics and sequence data. Chipsters client software uses Java Web Start to install itself automatically and it connects to computing servers for the actual analysis. Chipster is open source and the server environment is available as a virtual machine image.", "image_id": "template#243", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/5057da7b-d3bb-502e-84d1-3484daf2607f:4252/", @@ -617,7 +617,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "3.11.2_cloud", - "other_info": []}, + "other_info": {}}, "244": {"image_description": "The Long Term Support version of Ubuntu support guaranteed until April 2021 with Docker installed and ready to be used.This Virtual Machine has been created by the EGI Federated Cloud using a minimal Ubuntu 16.04 installation with cloud-init contextualization. In order to log into the image a ssh key must be used default user name is ubuntuSee https//wiki.egi.eu/wiki/FAQ10_EGI_Federated_Cloud_UserHow_can_I_connect_to_a_VM.3F for more informationImage was built using packer with the configuration available at https//github.com/EGI-FCTF/VMI-endorsement/.", "image_id": "template#244", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/3cdac1d5-962a-57d3-a9f9-c494baf6900b:4455/", @@ -627,7 +627,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "2017.01.31", - "other_info": []}, + "other_info": {}}, "245": {"image_description": "Ubuntu 16.04 LTS with minimal installation and small root fs for monitoring purposes", "image_id": "template#245", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/e29454eb-d751-5bf8-9f81-91f5a4aac7ec:4457/", @@ -637,7 +637,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "2017.05.17", - "other_info": []}, + "other_info": {}}, "248": {"image_description": "This is for CF14", "image_id": "template#248", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/0999e2e7-36a1-5dbb-a92a-1675e120bb5f:4465/", @@ -647,7 +647,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "2.0.2", - "other_info": []}, + "other_info": {}}, "249": {"image_description": null, "image_id": "template#249", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/1106b359-295b-55b8-b5b8-6c3c2d5f680e:4466/", @@ -657,7 +657,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "20141029", - "other_info": []}, + "other_info": {}}, "64": {"image_description": null, "image_id": "template#64", "image_marketplace_id": null, @@ -667,7 +667,7 @@ "image_os_version": null, "image_platform": null, "image_version": null, - "other_info": []}, + "other_info": {}}, "999": {"image_description": "This VA contains the Cloud support for WS-PGRADE/gUSE/DCI-Bridge needed by the VisIVO Science Demonstrator and the applications needed to run it.", "image_id": "template#999", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/e5707bce-2a6f-5788-a97d-21d863f1ea83:6649/", @@ -677,7 +677,7 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "0.0.1", - "other_info": ["base_mpuri=https://appdb.egi.eu/store/vm/image/bfb017c9-7d6b-4760-ac7d-e312015e63cb:7701/"]}, + "other_info": {"base_mpuri": "https://appdb.egi.eu/store/vm/image/bfb017c9-7d6b-4760-ac7d-e312015e63cb:7701/"}}, "666": {"image_description": "This VA contains the Cloud support for WS-PGRADE/gUSE/DCI-Bridge needed by the VisIVO Science Demonstrator and the applications needed to run it.", "image_id": "template#666", "image_marketplace_id": "https://appdb.egi.eu/store/vo/image/e5707bce-2a6f-5788-a97d-21d863f1ea83:6649/", @@ -687,4 +687,4 @@ "image_os_version": null, "image_platform": "x86_64", "image_version": "0.0.1", - "other_info": ["base_mpuri=https://appdb.egi.eu/store/vo/image/1FDD3B64-9F6E-48C9-9DBE-1AFE304055A8:4321/"]}} + "other_info": {"base_mpuri": "https://appdb.egi.eu/store/vo/image/1FDD3B64-9F6E-48C9-9DBE-1AFE304055A8:4321/"}}} diff --git a/cloud_info_provider/tests/test_openstack.py b/cloud_info_provider/tests/test_openstack.py index 82a91feb..de4fefc0 100644 --- a/cloud_info_provider/tests/test_openstack.py +++ b/cloud_info_provider/tests/test_openstack.py @@ -505,7 +505,7 @@ def test_get_images(self): "image_traffic_out": [], "image_context_format": None, "os_distro": None, - "other_info": [], + "other_info": {}, } expected_images = { "bar id": defaults.copy(), @@ -544,7 +544,7 @@ def test_get_images(self): "image_id": "http://schemas.openstack.org/template/%s" % self.occify("os#foo.id"), "image_native_id": "foo.id", - "other_info": ["base_mpuri=foobar"], + "other_info": {"base_mpuri": "foobar"}, "APPLIANCE_ATTRIBUTES": '{"ad:base_mpuri": "foobar"}', } ) From f07b4141fe2b1cdcaeb7d0aff1e461fc017ab360 Mon Sep 17 00:00:00 2001 From: Enol Fernandez Date: Mon, 20 May 2024 10:02:33 +0100 Subject: [PATCH 08/11] Fix variables --- cloud_info_provider/formatters/glue.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/cloud_info_provider/formatters/glue.py b/cloud_info_provider/formatters/glue.py index 5784acc0..a0ecbfd5 100644 --- a/cloud_info_provider/formatters/glue.py +++ b/cloud_info_provider/formatters/glue.py @@ -280,7 +280,9 @@ def glue_templates(self, share, share_id): "ID": gpu_tpl_id, "Name": gpu_tpl_name, "Associations": { - "CloudComputingVirtualAcceleratorCloudComputingInstanceType": tpl_id, + "CloudComputingVirtualAcceleratorCloudComputingInstanceType": template[ + id_field + ], }, "Type": "GPU", "Number": gpu_number, @@ -358,7 +360,7 @@ def glue_images(self, share, share_id): network_obj = { "ID": network_conf_id, "Associations": { - "CloudComputingImage": [img_id], + "CloudComputingImage": image[id_field], }, "Direction": network_type, "Protocol": network_conf["ad:net_protocol"], From 84f2b1ef0fb85baffe31993826fb8476456ea43a Mon Sep 17 00:00:00 2001 From: Enol Fernandez Date: Mon, 20 May 2024 10:24:06 +0100 Subject: [PATCH 09/11] Try to force older pytest versions See https://github.com/pytest-dev/pytest/issues/12275 --- test-requirements.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/test-requirements.txt b/test-requirements.txt index 966ef849..34b31f91 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -10,3 +10,4 @@ python-glanceclient testtools python-dateutil boto3 +pytest<8.1 From 82576525542f07d3cba7478c8fd54b92d274a7f3 Mon Sep 17 00:00:00 2001 From: Enol Fernandez Date: Mon, 20 May 2024 10:34:33 +0100 Subject: [PATCH 10/11] CentOS 7 is long gone --- .github/workflows/packages.yml | 73 ---------------------------------- .github/workflows/release.yml | 38 +----------------- 2 files changed, 1 insertion(+), 110 deletions(-) diff --git a/.github/workflows/packages.yml b/.github/workflows/packages.yml index e4f61bec..6702208c 100644 --- a/.github/workflows/packages.yml +++ b/.github/workflows/packages.yml @@ -31,49 +31,6 @@ jobs: name: sdist path: dist/*tar.gz - centos7: - name: build centos 7 rpms - needs: sdist - runs-on: ubuntu-latest - container: centos:7 - steps: - - uses: actions/download-artifact@v3 - with: - name: sdist - - name: install build requisites - run: | - yum install -y rpm-build rpmlint - yum install -y centos-release-openstack-queens - yum install -y python-pbr python-setuptools - - name: build rpm - run: | - tar -xzf cloud_info_provider-${{ needs.sdist.outputs.version }}.tar.gz \ - --strip-components 1 \ - cloud_info_provider-${{ needs.sdist.outputs.version }}/rpm - sed -i "s/^\(Version.\).*/\\1 ${{ needs.sdist.outputs.version }}/" \ - rpm/cloud-info-provider.spec - sed -i "s/^\(Version.\).*/\\1 ${{ needs.sdist.outputs.version }}/" \ - rpm/cloud-info-provider-opennebula.spec - sed -i "s/^\(Version.\).*/\\1 ${{ needs.sdist.outputs.version }}/" \ - rpm/cloud-info-provider-openstack.spec - mkdir -p {BUILD,RPMS,SOURCES,SPECS,SRPMS} - cp -v cloud_info_provider-${{ needs.sdist.outputs.version }}.tar.gz \ - SOURCES - for rpm in rpm/cloud-info-provider.spec \ - rpm/cloud-info-provider-openstack.spec \ - rpm/cloud-info-provider-opennebula.spec; do - rpmbuild --define "_topdir $PWD" -ba "$rpm" - done - rpmlint RPMS/noarch/*.rpm - - name: Upload rpms - uses: actions/upload-artifact@v3 - with: - name: rpms - path: | - RPMS/noarch/cloud-info-provider-${{ needs.sdist.outputs.version }}-1.el7.noarch.rpm - RPMS/noarch/cloud-info-provider-opennebula-${{ needs.sdist.outputs.version }}-1.el7.noarch.rpm - RPMS/noarch/cloud-info-provider-openstack-${{ needs.sdist.outputs.version }}-1.el7.noarch.rpm - ubuntu: name: build debs needs: sdist @@ -115,36 +72,6 @@ jobs: python-cloud-info-provider-opennebula_${{ needs.sdist.outputs.version }}-1_all.deb python-cloud-info-provider-openstack_${{ needs.sdist.outputs.version }}-1_all.deb - centos7-install-openstack: - name: install centos 7 rpms (openstack) - needs: centos7 - runs-on: ubuntu-latest - container: centos:7 - steps: - - uses: actions/download-artifact@v3 - with: - name: rpms - - name: install generated rpms - run: | - yum install -y centos-release-openstack-queens - yum localinstall -y cloud-info-provider-openstack-*.rpm \ - cloud-info-provider-[^o]*.rpm - - centos7-install-opennebula: - name: install centos 7 rpms (opennebula) - needs: centos7 - runs-on: ubuntu-latest - container: centos:7 - steps: - - uses: actions/download-artifact@v3 - with: - name: rpms - - name: install generated rpms - run: | - yum install -y epel-release - yum localinstall -y cloud-info-provider-opennebula-*.rpm \ - cloud-info-provider-[^o]*.rpm - ubuntu-install-openstack: name: install debs (openstack) needs: ubuntu diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 22a3527b..b3ae16fb 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -59,42 +59,6 @@ jobs: name: sdist path: dist/*tar.gz - centos7: - name: build centos 7 rpms - needs: sdist - runs-on: ubuntu-latest - container: centos:7 - steps: - - uses: actions/download-artifact@v3 - with: - name: sdist - - name: install build requisites - run: | - yum install -y rpm-build rpmlint - yum install -y centos-release-openstack-queens - yum install -y python-pbr python-setuptools - - name: build rpm - run: | - tar -xzf cloud_info_provider-${{ needs.sdist.outputs.version }}.tar.gz \ - --strip-components 1 cloud_info_provider-${{ needs.sdist.outputs.version }}/rpm - sed -i "s/^\(Version.\).*/\\1 ${{ needs.sdist.outputs.version }}/" rpm/cloud-info-provider.spec - sed -i "s/^\(Version.\).*/\\1 ${{ needs.sdist.outputs.version }}/" rpm/cloud-info-provider-opennebula.spec - sed -i "s/^\(Version.\).*/\\1 ${{ needs.sdist.outputs.version }}/" rpm/cloud-info-provider-openstack.spec - mkdir -p {BUILD,RPMS,SOURCES,SPECS,SRPMS} - cp -v cloud_info_provider-${{ needs.sdist.outputs.version }}.tar.gz SOURCES - rpmbuild --define "_topdir $PWD" -ba rpm/cloud-info-provider.spec - rpmbuild --define "_topdir $PWD" -ba rpm/cloud-info-provider-openstack.spec - rpmbuild --define "_topdir $PWD" -ba rpm/cloud-info-provider-opennebula.spec - rpmlint RPMS/noarch/*.rpm - - name: Upload rpms - uses: actions/upload-artifact@v3 - with: - name: rpms - path: | - RPMS/noarch/cloud-info-provider-${{ needs.sdist.outputs.version }}-1.el7.noarch.rpm - RPMS/noarch/cloud-info-provider-opennebula-${{ needs.sdist.outputs.version }}-1.el7.noarch.rpm - RPMS/noarch/cloud-info-provider-openstack-${{ needs.sdist.outputs.version }}-1.el7.noarch.rpm - ubuntu: name: build debs needs: sdist @@ -134,7 +98,7 @@ jobs: python-cloud-info-provider-openstack_${{ needs.sdist.outputs.version }}-1_all.deb release: - needs: [sdist, ubuntu, centos7, prepare-release] + needs: [sdist, ubuntu, prepare-release] name: Upload release artefacts runs-on: ubuntu-latest steps: From 477194bb03889cd28bdde70e45a25a8651ec4165 Mon Sep 17 00:00:00 2001 From: Enol Fernandez Date: Mon, 20 May 2024 10:55:21 +0100 Subject: [PATCH 11/11] Fix the formatter --- cloud_info_provider/formatters/glue.py | 9 +++++---- .../{glue21.json.tpl => compute.glue21.json.tpl} | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) rename cloud_info_provider/formatters/templates/{glue21.json.tpl => compute.glue21.json.tpl} (51%) diff --git a/cloud_info_provider/formatters/glue.py b/cloud_info_provider/formatters/glue.py index a0ecbfd5..5f8bb51f 100644 --- a/cloud_info_provider/formatters/glue.py +++ b/cloud_info_provider/formatters/glue.py @@ -27,9 +27,9 @@ def __init__(self): class GLUE21Json(base.BaseFormatter): def __init__(self): - self.template_extension = ".json.tpl" + self.template_extension = "glue21.json.tpl" self.templates = [ - "glue21", + "compute", ] self.glue_dict = {} self.creation_time = datetime.now().isoformat() @@ -547,5 +547,6 @@ def build_glue(self, info): def _format_template(self, template, info, extra={}): # do not mess with formatting in mako, build here our JSON - json_info = self.build_json(info) - return super()._format_template(template, json_info, extra) + glue_info = self.build_glue(info) + extra.update({"glue": glue_info}) + return super()._format_template(template, info, extra) diff --git a/cloud_info_provider/formatters/templates/glue21.json.tpl b/cloud_info_provider/formatters/templates/compute.glue21.json.tpl similarity index 51% rename from cloud_info_provider/formatters/templates/glue21.json.tpl rename to cloud_info_provider/formatters/templates/compute.glue21.json.tpl index 287d48d1..0af44f7a 100644 --- a/cloud_info_provider/formatters/templates/glue21.json.tpl +++ b/cloud_info_provider/formatters/templates/compute.glue21.json.tpl @@ -2,4 +2,4 @@ import json %>\ ## This got simple :) -${json.dumps(info)} +${json.dumps(attributes.get("glue", {}))}