You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ariatosca.apache.org by ra...@apache.org on 2017/04/04 10:22:00 UTC

[06/24] incubator-ariatosca git commit: fixed storage exceptions in CLI

fixed storage exceptions in CLI


Project: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/commit/c40f3615
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/tree/c40f3615
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/diff/c40f3615

Branch: refs/heads/ARIA-48-aria-cli
Commit: c40f3615a21ce83fa98fbeec2c1b617959e7bba2
Parents: 349d4d0
Author: Ran Ziv <ra...@gigaspaces.com>
Authored: Mon Apr 3 14:58:17 2017 +0300
Committer: Ran Ziv <ra...@gigaspaces.com>
Committed: Tue Apr 4 13:20:46 2017 +0300

----------------------------------------------------------------------
 aria/cli/commands/executions.py     | 14 +++++---------
 aria/cli/commands/logs.py           | 16 +++++++++++++---
 aria/cli/commands/node_templates.py |  6 +++---
 aria/cli/commands/nodes.py          |  6 +++---
 aria/cli/commands/services.py       | 23 ++++++++++++++---------
 aria/storage/exceptions.py          |  4 ++++
 aria/storage/sql_mapi.py            |  8 ++++----
 7 files changed, 46 insertions(+), 31 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/c40f3615/aria/cli/commands/executions.py
----------------------------------------------------------------------
diff --git a/aria/cli/commands/executions.py b/aria/cli/commands/executions.py
index d767fa1..fd47eb3 100644
--- a/aria/cli/commands/executions.py
+++ b/aria/cli/commands/executions.py
@@ -13,15 +13,12 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-import json
-import time
-
 from .. import utils
 from ..table import print_data
-from ..cli import aria, helptexts
+from ..cli import aria
 from ..exceptions import AriaCliError
 from ...modeling.models import Execution
-from ...storage.exceptions import StorageError
+from ...storage import exceptions as storage_exceptions
 from ...orchestrator.workflow_runner import WorkflowRunner
 from ...utils import formatting
 from ...utils import threading
@@ -52,7 +49,7 @@ def show(execution_id, model_storage, logger):
     try:
         logger.info('Showing execution {0}'.format(execution_id))
         execution = model_storage.execution.get(execution_id)
-    except StorageError:
+    except storage_exceptions.NotFoundError:
         raise AriaCliError('Execution {0} not found'.format(execution_id))
 
     print_data(EXECUTION_COLUMNS, execution.to_dict(), 'Execution:', max_width=50)
@@ -94,9 +91,8 @@ def list(service_name,
         try:
             service = model_storage.service.get_by_name(service_name)
             filters = dict(service=service)
-        except StorageError:
-            raise AriaCliError('Service {0} does not exist'.format(
-                service_name))
+        except storage_exceptions.NotFoundError:
+            raise AriaCliError('Service {0} does not exist'.format(service_name))
     else:
         logger.info('Listing all executions...')
         filters = {}

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/c40f3615/aria/cli/commands/logs.py
----------------------------------------------------------------------
diff --git a/aria/cli/commands/logs.py b/aria/cli/commands/logs.py
index 3662063..6890fb4 100644
--- a/aria/cli/commands/logs.py
+++ b/aria/cli/commands/logs.py
@@ -15,6 +15,8 @@
 
 from .. import utils
 from ..cli import aria
+from ..exceptions import AriaCliError
+from ...storage import exceptions as storage_exceptions
 
 
 @aria.group(name='logs')
@@ -40,8 +42,12 @@ def list(execution_id,
     """
     logger.info('Listing logs for execution id {0}'.format(execution_id))
     # events_logger = get_events_logger(json_output)
-    logs = model_storage.log.list(filters=dict(execution_fk=execution_id),
-                                  sort=utils.storage_sort_param('created_at', False))
+    try:
+        logs = model_storage.log.list(filters=dict(execution_fk=execution_id),
+                                      sort=utils.storage_sort_param('created_at', False))
+    except storage_exceptions.NotFoundError:
+        raise AriaCliError('Execution {0} does not exist'.format(execution_id))
+
     # TODO: print logs nicely
     if logs:
         for log in logs:
@@ -62,7 +68,11 @@ def delete(execution_id, model_storage, logger):
     `EXECUTION_ID` is the execution logs to delete.
     """
     logger.info('Deleting logs for execution id {0}'.format(execution_id))
-    logs = model_storage.log.list(filters=dict(execution_fk=execution_id))
+    try:
+        logs = model_storage.log.list(filters=dict(execution_fk=execution_id))
+    except storage_exceptions.NotFoundError:
+        raise AriaCliError('Execution {0} does not exist'.format(execution_id))
+
     for log in logs:
         model_storage.log.delete(log)
     logger.info('Deleted logs for execution id {0}'.format(execution_id))

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/c40f3615/aria/cli/commands/node_templates.py
----------------------------------------------------------------------
diff --git a/aria/cli/commands/node_templates.py b/aria/cli/commands/node_templates.py
index 7365f0c..0910ded 100644
--- a/aria/cli/commands/node_templates.py
+++ b/aria/cli/commands/node_templates.py
@@ -17,7 +17,7 @@ from ..table import print_data
 from .. import utils
 from ..cli import aria
 from ..exceptions import AriaCliError
-from ...storage.exceptions import StorageError
+from ...storage import exceptions as storage_exceptions
 
 
 NODE_TEMPLATE_COLUMNS = ['id', 'name', 'description', 'service_template_name', 'type_name']
@@ -49,7 +49,7 @@ def show(node_template_id, model_storage, logger):
     try:
         #TODO get node template of a specific service template instead?
         node_template = model_storage.node_template.get(node_template_id)
-    except StorageError:
+    except storage_exceptions.NotFoundError:
         raise AriaCliError('Node template {0} was not found'.format(node_template_id))
 
     print_data(NODE_TEMPLATE_COLUMNS, node_template.to_dict(), 'Node template:', max_width=50)
@@ -91,7 +91,7 @@ def list(service_template_name, sort_by, descending, model_storage, logger):
         try:
             service_template = model_storage.service_template.get_by_name(service_template_name)
             filters = dict(service_template=service_template)
-        except StorageError:
+        except storage_exceptions.NotFoundException:
             raise AriaCliError('Service template {0} does not exist'.format(service_template_name))
     else:
         logger.info('Listing all node templates...')

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/c40f3615/aria/cli/commands/nodes.py
----------------------------------------------------------------------
diff --git a/aria/cli/commands/nodes.py b/aria/cli/commands/nodes.py
index f38c917..8600ff2 100644
--- a/aria/cli/commands/nodes.py
+++ b/aria/cli/commands/nodes.py
@@ -17,7 +17,7 @@ from .. import utils
 from ..cli import aria
 from ..table import print_data
 from ..exceptions import AriaCliError
-from ...storage.exceptions import StorageError
+from ...storage import exceptions as storage_exceptions
 
 
 NODE_COLUMNS = ['id', 'name', 'service_name', 'node_template_name', 'state']
@@ -45,7 +45,7 @@ def show(node_id, model_storage, logger):
     logger.info('Showing node {0}'.format(node_id))
     try:
         node = model_storage.node.get(node_id)
-    except StorageError:
+    except storage_exceptions.NotFoundError:
         raise AriaCliError('Node {0} not found'.format(node_id))
 
     print_data(NODE_COLUMNS, node.to_dict(), 'Node:', 50)
@@ -83,7 +83,7 @@ def list(service_name,
         try:
             service = model_storage.service.get_by_name(service_name)
             filters = dict(service=service)
-        except StorageError:
+        except storage_exceptions.NotFoundError:
             raise AriaCliError('Service {0} does not exist'.format(service_name))
     else:
         logger.info('Listing all nodes...')

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/c40f3615/aria/cli/commands/services.py
----------------------------------------------------------------------
diff --git a/aria/cli/commands/services.py b/aria/cli/commands/services.py
index ae04d7e..00b093c 100644
--- a/aria/cli/commands/services.py
+++ b/aria/cli/commands/services.py
@@ -25,7 +25,7 @@ from ..table import print_data
 from ..utils import storage_sort_param
 from ...core import Core
 from ...exceptions import AriaException
-from ...storage.exceptions import StorageError
+from ...storage import exceptions as storage_exceptions
 
 
 SERVICE_COLUMNS = ['id', 'name', 'service_template_name', 'created_at', 'updated_at']
@@ -40,27 +40,30 @@ def services():
 
 
 @services.command(name='list', short_help='List services')
-@aria.options.service_template_id()
+@aria.options.service_template_name()
 @aria.options.sort_by()
 @aria.options.descending
 @aria.options.verbose()
 @aria.pass_model_storage
 @aria.pass_logger
-def list(service_template_id,
+def list(service_template_name,
          sort_by,
          descending,
          model_storage,
          logger):
     """List services
 
-    If `--service-template-id` is provided, list services for that service template.
+    If `--service-template-name` is provided, list services for that service template.
     Otherwise, list services for all service templates.
     """
-    if service_template_id:
+    if service_template_name:
         logger.info('Listing services for service template {0}...'.format(
-            service_template_id))
-        service_template = model_storage.service_template.get(service_template_id)
-        filters = dict(service_template=service_template)
+            service_template_name))
+        try:
+            service_template = model_storage.service_template.get(service_template_name)
+            filters = dict(service_template=service_template)
+        except storage_exceptions.NotFoundError:
+            raise AriaCliError('Service template {0} does not exist'.format(service_template_name))
     else:
         logger.info('Listing all service...')
         filters = {}
@@ -99,7 +102,9 @@ def create(service_template_name,
     try:
         core = Core(model_storage, resource_storage, plugin_manager)
         service = core.create_service(service_template_name, inputs, service_name)
-    except StorageError:
+    except storage_exceptions.NotFoundError:
+        raise AriaCliError('Service template {0} does not exist'.format(service_template_name))
+    except storage_exceptions.StorageError:
         logger.info(TWO_MODELS_WITH_THE_SAME_NAME_ERROR_TEMPLATE.format(
             model_class='service',
             name=service_name))

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/c40f3615/aria/storage/exceptions.py
----------------------------------------------------------------------
diff --git a/aria/storage/exceptions.py b/aria/storage/exceptions.py
index f982f63..3f0ecec 100644
--- a/aria/storage/exceptions.py
+++ b/aria/storage/exceptions.py
@@ -23,3 +23,7 @@ class StorageError(exceptions.AriaError):
     General storage exception
     """
     pass
+
+
+class NotFoundError(StorageError):
+    pass

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/c40f3615/aria/storage/sql_mapi.py
----------------------------------------------------------------------
diff --git a/aria/storage/sql_mapi.py b/aria/storage/sql_mapi.py
index 59e1896..40c5410 100644
--- a/aria/storage/sql_mapi.py
+++ b/aria/storage/sql_mapi.py
@@ -52,7 +52,7 @@ class SQLAlchemyModelAPI(api.ModelAPI):
         result = query.first()
 
         if not result:
-            raise exceptions.StorageError(
+            raise exceptions.NotFoundError(
                 'Requested `{0}` with ID `{1}` was not found'
                 .format(self.model_cls.__name__, entry_id)
             )
@@ -62,13 +62,13 @@ class SQLAlchemyModelAPI(api.ModelAPI):
         assert hasattr(self.model_cls, 'name')
         result = self.list(include=include, filters={'name': entry_name})
         if not result:
-            raise exceptions.StorageError(
-                'Requested {0} with NAME `{1}` was not found'
+            raise exceptions.NotFoundError(
+                'Requested {0} with name `{1}` was not found'
                 .format(self.model_cls.__name__, entry_name)
             )
         elif len(result) > 1:
             raise exceptions.StorageError(
-                'Requested {0} with NAME `{1}` returned more than 1 value'
+                'Requested {0} with name `{1}` returned more than 1 value'
                 .format(self.model_cls.__name__, entry_name)
             )
         else: