fix 1040 report error on failing delete_namespace 29/8729/8
authortierno <alfonso.tiernosepulveda@telefonica.com>
Thu, 26 Mar 2020 09:51:11 +0000 (09:51 +0000)
committertierno <alfonso.tiernosepulveda@telefonica.com>
Wed, 15 Apr 2020 16:27:41 +0000 (16:27 +0000)
Do not capture asyncio.CancelledError
remove unneeded loging. e.g. certificates

Change-Id: Ia4f8c19bf693b689aeaaaeb76b006cd25c7295e1
Signed-off-by: tierno <alfonso.tiernosepulveda@telefonica.com>
n2vc/k8s_conn.py
n2vc/k8s_helm_conn.py
n2vc/n2vc_conn.py
n2vc/n2vc_juju_conn.py

index e49e497..a82919a 100644 (file)
@@ -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(
index ff1f331..1efacc4 100644 (file)
@@ -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)
 
 
index 8811d71..6819335 100644 (file)
@@ -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
index bac0f2c..40f46f1 100644 (file)
@@ -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)