From: beierl Date: Mon, 18 Nov 2019 16:26:59 +0000 (-0500) Subject: Update vCD 10 Compatibility X-Git-Tag: v7.0.0rc1~34^2 X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2Fdevops.git;a=commitdiff_plain;h=90a9ab8ce4392804baab02499bdb11ff4a872b88 Update vCD 10 Compatibility Updates API version to 32.0 Minor API changes to how catalog is searched Bug: 891 Change-Id: Ide150396621986fab84e0240076e126730757b66 Signed-off-by: beierl --- diff --git a/tools/OVF_converter/ovf_converter_cli.py b/tools/OVF_converter/ovf_converter_cli.py index afc70379..6caba889 100644 --- a/tools/OVF_converter/ovf_converter_cli.py +++ b/tools/OVF_converter/ovf_converter_cli.py @@ -81,7 +81,7 @@ def execute_cli(): "(default controller SCSI with lsilogicsas) " "(SATA, IDE, Paravirtual, Buslogic, Lsilogic, Lsilogicsas) (optional)") - parser.add_argument("--cdrom", action="store_true", default=True, + parser.add_argument("--cdrom", action="store_true", default=False, help="whether to include a cd/dvd device (optional)") parser.add_argument("-hw", "--hwversion", action="store", default=14, diff --git a/tools/OVF_converter/uploader.py b/tools/OVF_converter/uploader.py index 3702d382..7cb168fc 100644 --- a/tools/OVF_converter/uploader.py +++ b/tools/OVF_converter/uploader.py @@ -22,7 +22,7 @@ import logging from lxml import etree import os -from pyvcloud.vcd.client import BasicLoginCredentials, Client, QueryResultFormat, ResourceType, TaskStatus +from pyvcloud.vcd.client import BasicLoginCredentials, Client, QueryResultFormat, ResourceType, TaskStatus, ApiVersion from pyvcloud.vcd.exceptions import EntityNotFoundException, InternalServerException from pyvcloud.vcd.org import Org import sys @@ -71,8 +71,12 @@ class OVFUploader(object): self.password = password self.orgname = orgname try: - client = Client(self.vcd_url, verify_ssl_certs=False) - client.set_highest_supported_version() + client = Client(self.vcd_url, verify_ssl_certs=False, api_version=ApiVersion.VERSION_32.value, + log_requests=True, + log_headers=True, + log_bodies=True, + log_file=LOG_FILE) + # sclient.set_highest_supported_version() client.set_credentials(BasicLoginCredentials(self.username, self.orgname, self.password)) logger.info("Logged into {} using version {}".format(self.vcd_url, client.get_api_version())) @@ -112,11 +116,12 @@ class OVFUploader(object): raise problem def make_catalog(self): + self.catalog_id = None try: - try: - catalog = self.org.get_catalog(self.image_name) - self.catalog_id = catalog.attrib['id'].split(':')[-1] - except EntityNotFoundException: + for catalog in self.org.list_catalogs(): + if catalog['name'] == self.image_name: + self.catalog_id = catalog['id'] + if self.catalog_id is None: logger.info("Creating a new catalog entry {} in vCD".format(self.image_name)) result = self.org.create_catalog(self.image_name, self.image_description) if result is None: @@ -133,11 +138,17 @@ class OVFUploader(object): def upload_ovf(self): + ova_tarfilename, _ = os.path.splitext(self.ovf_file) + ova_tarfilename += '.ova' try: # Check if the content already exists: - items = self.org.list_catalog_items(self.image_name) - for item in items: - if item['name'] == self.image_name: + resource_type = ResourceType.CATALOG_ITEM.value + q = self.client.get_typed_query( + resource_type, + query_result_format=QueryResultFormat.ID_RECORDS, + equality_filter=('catalogName', self.image_name)) + for item in list(q.execute()): + if item.get('name') == self.image_name: logger.info("Removing old version from catalog") try: self.org.delete_catalog_item(self.image_name, self.image_name) @@ -149,8 +160,6 @@ class OVFUploader(object): raise problem # Create a single OVA bundle - ova_tarfilename, _ = os.path.splitext(self.ovf_file) - ova_tarfilename += '.ova' ova = tarfile.open(name=ova_tarfilename, mode='w') ova.add(self.ovf_file, arcname=os.path.basename(self.ovf_file))