From 8ff11999e2208889498a88be5db07b2861541cbd Mon Sep 17 00:00:00 2001 From: tierno Date: Thu, 26 Mar 2020 09:51:11 +0000 Subject: [PATCH] fix 1040 report error on failing delete_namespace Do not capture asyncio.CancelledError remove unneeded loging. e.g. certificates Change-Id: Ia4f8c19bf693b689aeaaaeb76b006cd25c7295e1 Signed-off-by: tierno --- n2vc/k8s_conn.py | 4 ++-- n2vc/k8s_helm_conn.py | 4 ++-- n2vc/n2vc_conn.py | 4 +++- n2vc/n2vc_juju_conn.py | 34 ++++++++++++++++++++++------------ 4 files changed, 29 insertions(+), 17 deletions(-) diff --git a/n2vc/k8s_conn.py b/n2vc/k8s_conn.py index e49e497..a82919a 100644 --- a/n2vc/k8s_conn.py +++ b/n2vc/k8s_conn.py @@ -50,13 +50,13 @@ class K8sConnector(abc.ABC, Loggable): # parent class Loggable.__init__(self, log=log, log_to_console=True, prefix='\nK8S') - self.log.info('Initializing generic K8S connector') + # self.log.info('Initializing generic K8S connector') # the database and update callback self.db = db self.on_update_db = on_update_db - self.log.info('K8S generic connector initialized') + # self.log.info('K8S generic connector initialized') @abc.abstractmethod async def init_env( diff --git a/n2vc/k8s_helm_conn.py b/n2vc/k8s_helm_conn.py index ff1f331..1efacc4 100644 --- a/n2vc/k8s_helm_conn.py +++ b/n2vc/k8s_helm_conn.py @@ -1200,13 +1200,13 @@ class K8sHelmConnector(K8sConnector): return '', -1 def _check_file_exists(self, filename: str, exception_if_not_exists: bool = False): - self.log.debug('Checking if file {} exists...'.format(filename)) + # self.log.debug('Checking if file {} exists...'.format(filename)) if os.path.exists(filename): return True else: msg = 'File {} does not exist'.format(filename) if exception_if_not_exists: - self.log.error(msg) + # self.log.error(msg) raise K8sException(msg) diff --git a/n2vc/n2vc_conn.py b/n2vc/n2vc_conn.py index 8811d71..6819335 100644 --- a/n2vc/n2vc_conn.py +++ b/n2vc/n2vc_conn.py @@ -95,7 +95,9 @@ class N2VCConnector(abc.ABC, Loggable): if fs is None: raise N2VCBadArgumentsException('Argument fs is mandatory', ['fs']) - self.log.info('url={}, username={}, vca_config={}'.format(url, username, vca_config)) + self.log.info('url={}, username={}, vca_config={}'.format( + url, username, {k: v for k, v in vca_config.items() if k not in ("host", "port", "user", "secret", + "public_key", "ca_cert")})) # store arguments into self self.db = db diff --git a/n2vc/n2vc_juju_conn.py b/n2vc/n2vc_juju_conn.py index bac0f2c..40f46f1 100644 --- a/n2vc/n2vc_juju_conn.py +++ b/n2vc/n2vc_juju_conn.py @@ -169,7 +169,7 @@ class N2VCJujuConnector(N2VCConnector): self.apt_mirror = None self.cloud = vca_config.get('cloud') - self.log.debug('Arguments have been checked') + # self.log.debug('Arguments have been checked') # juju data self.controller = None # it will be filled when connect to juju @@ -440,7 +440,7 @@ class N2VCJujuConnector(N2VCConnector): total_timeout=total_timeout ) except Exception as e: - self.log.info('Cannot execute action generate-ssh-key: {}\nContinuing...'.format(e)) + self.log.info('Skipping exception while executing action generate-ssh-key: {}'.format(e)) # execute action: get-ssh-public-key try: @@ -455,7 +455,7 @@ class N2VCJujuConnector(N2VCConnector): except Exception as e: msg = 'Cannot execute action get-ssh-public-key: {}\n'.format(e) self.log.info(msg) - raise e + raise N2VCException(msg) # return public key if exists return output["pubkey"] if "pubkey" in output else output @@ -469,7 +469,7 @@ class N2VCJujuConnector(N2VCConnector): ): self.log.debug('adding new relation between {} and {}, endpoints: {}, {}' - .format(ee_id_1, ee_id_2, endpoint_1, endpoint_2)) + .format(ee_id_1, ee_id_2, endpoint_1, endpoint_2)) # check arguments if not ee_id_1: @@ -512,7 +512,7 @@ class N2VCJujuConnector(N2VCConnector): relation_2=endpoint_2 ) except Exception as e: - message = 'Error adding relation between {} and {}'.format(ee_id_1, ee_id_2) + message = 'Error adding relation between {} and {}: {}'.format(ee_id_1, ee_id_2, e) self.log.error(message) raise N2VCException(message=message) @@ -704,6 +704,8 @@ class N2VCJujuConnector(N2VCConnector): update_dict=update_dict, fail_on_empty=True ) + except asyncio.CancelledError: + raise except Exception as e: self.log.error('Error writing ee_id to database: {}'.format(e)) @@ -1113,6 +1115,8 @@ class N2VCJujuConnector(N2VCConnector): ) self.log.debug('Result: {}, output: {}'.format(ok, output)) return True + except asyncio.CancelledError: + raise except Exception as e: self.log.debug('Error executing verify-ssh-credentials: {}. Retrying...'.format(e)) await asyncio.sleep(retry_timeout) @@ -1292,6 +1296,7 @@ class N2VCJujuConnector(N2VCConnector): if total_timeout is None: total_timeout = 3600 + end = time.time() + total_timeout model = await self._juju_get_model(model_name=model_name) @@ -1320,6 +1325,8 @@ class N2VCJujuConnector(N2VCConnector): for machine_id in machines: try: await self._juju_destroy_machine(model_name=model_name, machine_id=machine_id) + except asyncio.CancelledError: + raise except Exception as e: # ignore exceptions destroying machine pass @@ -1328,21 +1335,24 @@ class N2VCJujuConnector(N2VCConnector): self.log.debug('destroying model {}...'.format(model_name)) await self.controller.destroy_model(uuid) - self.log.debug('model destroy requested {}'.format(model_name)) + # self.log.debug('model destroy requested {}'.format(model_name)) # wait for model is completely destroyed - end = time.time() + total_timeout + self.log.debug('Waiting for model {} to be destroyed...'.format(model_name)) + last_exception = '' while time.time() < end: - self.log.debug('Waiting for model is destroyed...') try: # await self.controller.get_model(uuid) models = await self.controller.list_models() if model_name not in models: self.log.debug('The model {} ({}) was destroyed'.format(model_name, uuid)) return + except asyncio.CancelledError: + raise except Exception as e: - pass - await asyncio.sleep(1.0) + last_exception = e + await asyncio.sleep(5) + raise N2VCException("Timeout waiting for model {} to be destroyed {}".format(model_name, last_exception)) async def _juju_login(self): """Connect to juju controller @@ -1365,8 +1375,8 @@ class N2VCJujuConnector(N2VCConnector): try: self._connecting = True self.log.info( - 'connecting to juju controller: {} {}:{} ca_cert: {}' - .format(self.url, self.username, self.secret, '\n'+self.ca_cert if self.ca_cert else 'None')) + 'connecting to juju controller: {} {}:{}{}' + .format(self.url, self.username, self.secret[:8] + '...', ' with ca_cert' if self.ca_cert else '')) # Create controller object self.controller = Controller(loop=self.loop) -- 2.17.1