You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ariatosca.apache.org by em...@apache.org on 2017/06/02 19:20:56 UTC

incubator-ariatosca git commit: ARIA-199 Add "services outputs" CLI command

Repository: incubator-ariatosca
Updated Branches:
  refs/heads/ARIA-199-cli-service-output [created] 79b94e1f9


ARIA-199 Add "services outputs" CLI command


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

Branch: refs/heads/ARIA-199-cli-service-output
Commit: 79b94e1f9aed3be3176b96870f7ea472146032c3
Parents: 9174f94
Author: Tal Liron <ta...@gmail.com>
Authored: Fri Jun 2 14:20:28 2017 -0500
Committer: Tal Liron <ta...@gmail.com>
Committed: Fri Jun 2 14:20:28 2017 -0500

----------------------------------------------------------------------
 aria/cli/commands/services.py                   | 22 ++++++++---------
 tests/cli/test_services.py                      | 26 ++++++++++++++++++--
 tests/mock/models.py                            |  4 +++
 .../node-cellar/node-cellar.yaml                | 12 +++++++++
 4 files changed, 51 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/79b94e1f/aria/cli/commands/services.py
----------------------------------------------------------------------
diff --git a/aria/cli/commands/services.py b/aria/cli/commands/services.py
index 476387c..712b6af 100644
--- a/aria/cli/commands/services.py
+++ b/aria/cli/commands/services.py
@@ -192,17 +192,17 @@ def outputs(service_name, model_storage, logger):
     """
     logger.info('Showing outputs for service {0}...'.format(service_name))
     service = model_storage.service.get_by_name(service_name)
-    #TODO fix this section..
-    outputs_def = service.outputs
-    response = model_storage.service.outputs.get(service_name)
-    outputs_ = StringIO()
-    for output_name, output in response.outputs.iteritems():
-        outputs_.write(' - "{0}":{1}'.format(output_name, os.linesep))
-        description = outputs_def[output_name].get('description', '')
-        outputs_.write('     Description: {0}{1}'.format(description,
-                                                         os.linesep))
-        outputs_.write('     Value: {0}{1}'.format(output, os.linesep))
-    logger.info(outputs_.getvalue())
+
+    if service.outputs:
+        outputs_ = StringIO()
+        for output_name, output in service.outputs.iteritems():
+            outputs_.write(' - "{0}":{1}'.format(output_name, os.linesep))
+            outputs_.write('     Description: {0}{1}'.format(output.description,
+                                                             os.linesep))
+            outputs_.write('     Value: {0}{1}'.format(output.value, os.linesep))
+        logger.info(outputs_.getvalue())
+    else:
+        logger.info('\tNo outputs')
 
 
 @services.command(name='inputs',

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/79b94e1f/tests/cli/test_services.py
----------------------------------------------------------------------
diff --git a/tests/cli/test_services.py b/tests/cli/test_services.py
index e5717cc..e514f12 100644
--- a/tests/cli/test_services.py
+++ b/tests/cli/test_services.py
@@ -174,7 +174,30 @@ class TestServicesDelete(TestCliBase):
 
 
 class TestServicesOutputs(TestCliBase):
-    pass
+
+    def test_header_string(self, monkeypatch, mock_storage):
+        monkeypatch.setattr(_Environment, 'model_storage', mock_storage)
+        self.invoke('services outputs test_s')
+        assert 'Showing outputs for service test_s...' in self.logger_output_string
+
+    def test_outputs_no_outputs(self, monkeypatch, mock_storage):
+        monkeypatch.setattr(_Environment, 'model_storage', mock_storage)
+        self.invoke('services outputs service_with_no_outputs')
+
+        assert 'No outputs' in self.logger_output_string
+        assert 'output1' not in self.logger_output_string
+        assert 'value1' not in self.logger_output_string
+
+    def test_outputs_one_output(self, monkeypatch, mock_storage):
+        monkeypatch.setattr(_Environment, 'model_storage', mock_storage)
+        s = mock_models.create_service_with_dependencies(include_output=True)
+        monkeypatch.setattr(mock_storage.service, 'get_by_name', mock.MagicMock(return_value=s))
+
+        self.invoke('services outputs test_s')
+
+        assert 'output1' in self.logger_output_string
+        assert 'value1' in self.logger_output_string
+        assert 'No inputs' not in self.logger_output_string
 
 
 class TestServicesInputs(TestCliBase):
@@ -193,7 +216,6 @@ class TestServicesInputs(TestCliBase):
         assert 'value1' not in self.logger_output_string
 
     def test_inputs_one_input(self, monkeypatch, mock_storage):
-
         monkeypatch.setattr(_Environment, 'model_storage', mock_storage)
         s = mock_models.create_service_with_dependencies(include_input=True)
         monkeypatch.setattr(mock_storage.service, 'get_by_name', mock.MagicMock(return_value=s))

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/79b94e1f/tests/mock/models.py
----------------------------------------------------------------------
diff --git a/tests/mock/models.py b/tests/mock/models.py
index 50aa340..725475f 100644
--- a/tests/mock/models.py
+++ b/tests/mock/models.py
@@ -86,6 +86,7 @@ def create_service(service_template, name=SERVICE_NAME, inputs=None):
 
 def create_service_with_dependencies(include_execution=False,
                                      include_input=False,
+                                     include_output=False,
                                      include_node=False):
     service_template = create_service_template()
     service = create_service(service_template=service_template)
@@ -96,6 +97,9 @@ def create_service_with_dependencies(include_execution=False,
     if include_input:
         input = create_parameter(name='input1', value='value1')
         service.inputs = {'input1': input}
+    if include_output:
+        output = create_parameter(name='output1', value='value1')
+        service.outputs = {'output1': output}
     if include_node:
         node_template = create_node_template(service_template=service_template)
         node = create_node(node_template, service, state=models.Node.STARTED)

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/79b94e1f/tests/resources/service-templates/tosca-simple-1.0/node-cellar/node-cellar.yaml
----------------------------------------------------------------------
diff --git a/tests/resources/service-templates/tosca-simple-1.0/node-cellar/node-cellar.yaml b/tests/resources/service-templates/tosca-simple-1.0/node-cellar/node-cellar.yaml
index 4d53f9b..a34301c 100644
--- a/tests/resources/service-templates/tosca-simple-1.0/node-cellar/node-cellar.yaml
+++ b/tests/resources/service-templates/tosca-simple-1.0/node-cellar/node-cellar.yaml
@@ -144,6 +144,10 @@ topology_template:
       type: nodejs.Server
       requirements:
         - host: application_host
+      capabilities:
+        data_endpoint:
+          properties:
+            url_path: /app
       node_filter: # cannot be validated
         properties:
           #- flavor_name: { valid_values: [ {concat:[m1,.,small]} ] } # won't work because not validated :/
@@ -302,6 +306,14 @@ topology_template:
     capabilities:
       app_endpoint: [ loadbalancer, client ]
 
+  outputs:
+
+    endpoint:
+      description: >-
+        The application endpoint.
+      type: string
+      value: { get_property: [ nodejs, data_endpoint, url_path ] }
+
 policy_types:
 
   MaintenanceWorkflow: