diff --git a/operatorcourier/api.py b/operatorcourier/api.py index 7057f1e..205b040 100644 --- a/operatorcourier/api.py +++ b/operatorcourier/api.py @@ -60,7 +60,8 @@ def build_and_verify(source_dir=None, yamls=None, ui_validate_io=False, def build_verify_and_push(namespace, repository, revision, token, source_dir=None, yamls=None, - validation_output=None): + validation_output=None, + quay_host='quay.io', verify_host=True): """Build verify and push constructs the operator bundle, verifies it, and pushes it to an external app registry. Currently the only supported app registry is the one @@ -74,6 +75,10 @@ def build_verify_and_push(namespace, repository, revision, token, :param source_dir: Path to local directory of yaml files to be read :param yamls: List of yaml strings to create bundle with :param validation_output: Path to optional output file for validation logs + :param quay_host: (optional) Supply this parameter if you use private quay instance. + Defaults to 'quay.io' + :param verify_host: (optional) ``quay_host`` TLS/CA verification. + Either a boolean or a string. Defaults to ``True`` :raises TypeError: When called with both source_dir and yamls specified diff --git a/operatorcourier/push.py b/operatorcourier/push.py index 068b065..ad652ab 100644 --- a/operatorcourier/push.py +++ b/operatorcourier/push.py @@ -21,7 +21,8 @@ class PushCmd(): def __init__(self): pass - def push(self, bundle_dir, namespace, repository, release, auth_token): + def push(self, bundle_dir, namespace, repository, release, auth_token, + quay_host, verify_host): """Push takes a bundle and pushes it to the specified app registry repository. :param bundle_dir: Path to generated local directory that contains the bundle. @@ -29,6 +30,9 @@ def push(self, bundle_dir, namespace, repository, release, auth_token): :param repository: Repository name of the application described by the bundle. :param release: Release version of the bundle. :param auth_token: Authentication token used to push to Quay.io. + :param quay_host: (optional) quay instance host. Defaults to 'quay.io' + :param verify_host: (optional) ``quay_host`` TLS/CA verification. + Either a boolean or a string. Defaults to ``True`` """ logger.info('Generating 64 bit bundle and pushing to app registry.') filterOutFiles(bundle_dir, BLACK_LIST) @@ -45,14 +49,16 @@ def _create_base64_bundle(self, bundle_dir, repository): result64 = base64.b64encode(result).decode("utf-8") return result64 - def _push_to_registry(self, namespace, repository, release, bundle, auth_token): - push_uri = 'https://quay.io/cnr/api/v1/packages/%s/%s' % (namespace, repository) + def _push_to_registry(self, namespace, repository, release, bundle, auth_token, + quay_host, verify_host): + push_uri = 'https://%s/cnr/api/v1/packages/%s/%s' % (quay_host, namespace, + repository) logger.info('Pushing bundle to %s' % push_uri) headers = {'Content-Type': 'application/json', 'Authorization': auth_token} json = {'blob': bundle, 'release': release, "media_type": "helm"} try: - r = requests.post(push_uri, json=json, headers=headers) + r = requests.post(push_uri, json=json, headers=headers, verify=verify_host) except requests.RequestException as e: msg = str(e) logger.error(msg)