From aad4b7d74f7bfd272fd7ab601a61e7f2c4d0e64c Mon Sep 17 00:00:00 2001
From: "Ryan.RCS" <lihainong@huawei.com>
Date: Tue, 20 Dec 2016 08:36:24 +0000
Subject: subprocess.call para stdout=PIPE is risky

1.In 'def run' function of parser.py file,
  subprocess.call parameter stdout=
  subprocess.PIPE is risky, so I changed
  the function from 'call' to 'popen'
2.updated sample/tosca.ymal because the version of
  that file is old.

JIRA: YARDSTICK-473

Change-Id: Ie242e77eed6fdc2849394a3f170e40a0dd2be632
Signed-off-by: Ryan.RCS <lihainong@huawei.com>
---
 samples/tosca.yaml                             | 260 +++++++++++++------------
 yardstick/benchmark/scenarios/parser/parser.py |   6 +-
 2 files changed, 135 insertions(+), 131 deletions(-)

diff --git a/samples/tosca.yaml b/samples/tosca.yaml
index 4472f7ef8..21c789133 100644
--- a/samples/tosca.yaml
+++ b/samples/tosca.yaml
@@ -5,145 +5,147 @@ import:
 	
 
 metadata:
-	 ID:clearwater
-	 Vendor:HP
+         ID: clearwater
+         Vendor: HP
 dsl_definitions:
-	compute_props_host_ellis:&compute_props_host_ellis
-	 	 num_cpu:4
-		 mem_size:4096
-	compute_props_host_bono:&compute_props_host_bono
-	 	 num_cpu:3
-		 mem_size:2048
+        compute_props_host_ellis: &compute_props_host_ellis
+                 num_cpu: 4
+                 mem_size: 4096
+        compute_props_host_bono: &compute_props_host_bono
+                 num_cpu: 3
+                 mem_size: 2048
 node_types:
-	tosca.nodes.compute.ellis:
-		derived_from:tosca.nodes.compute
+        tosca.nodes.compute.ellis:
+                derived_from: tosca.nodes.compute
 
-	tosca.nodes.compute.bono:
-		derived_from:tosca.nodes.compute
+        tosca.nodes.compute.bono:
+                derived_from: tosca.nodes.compute
 
 topology_template:
-		# a description of the topology template
-		description:>
-			Vdus used in a vnfd
-	inputs:
-		storage_size:
-			type:scalar-unit.size
-			default:2048
-			description:The required storage resource
-		storage_location:
-			type:string
-			description:>
-				Block storage mount point (filesystem path).
-	node_templates:
+                # A description of the topology template
+                description: >
+                        Vdus used in a vnfd
+        inputs:
+                storage_size:
+                        type: scalar-unit.size
+                        default: 2048
+                        description: The required storage resource
+                        default: 3000
+                        description: The required storage resource
+                storage_location:
+                        type: string
+                        description: >
+                                Block storage mount point (filesystem path).
+        node_templates:
 		ellis:
-			type:tosca.nodes.Compute
-			capabilities:
-				os:
-					properties:
-						architecture:
-						type:
-						distribution:
-						version:
-				host:
-					properties:*compute_props_host_ellis
-				scalable:
-					properties:
-						min_instances:1
-						default_instances:1
-			requirements:
-				- local_storage:
-					node:ellis_BlockStorage
-						relationship:
-							type:AttachesTo
-							properties:
-								location:{ get_input:storage_location }
-			interfaces:
-				Standard:
-					start:
-						implementation:start.sh
-					delete:
-						implementaion:stop.sh
-					stop:
-						implementaion:shutdown.sh
+                        type: tosca.nodes.Compute
+                        capabilities:
+                                os:
+                                        properties:
+                                                architecture:
+                                                type:
+                                                distribution:
+                                                version:
+                                host:
+                                        properties: *compute_props_host_ellis
+                                scalable:
+                                        properties:
+                                                min_instances: 1
+                                                default_instances: 1
+                        requirements:
+                                - local_storage:
+                                        node: ellis_BlockStorage
+                                                relationship:
+                                                        type: AttachesTo
+                                                        properties:
+                                                                location: { get_input:storage_location }
+                        interfaces:
+                                Standard:
+                                        start:
+                                                implementation: start.sh
+                                        delete:
+                                                implementaion: stop.sh
+                                        stop:
+                                                implementaion: shutdown.sh
 		ellis_BlockStorage:
-			type:tosca.nodes.BlockStorage
-			properties:
-				size:{ get_input:storage_size }
+                        type: tosca.nodes.BlockStorage
+                        properties:
+                                size: { get_input:storage_size }
 		bono:
-			type:tosca.nodes.Compute
-			capabilities:
-				os:
-					properties:
-						architecture:
-						type:
-						distribution:
-						version:
-				host:
-					properties:*compute_props_host_bono
-				scalable:
-					properties:
-						min_instances:3
-						default_instances:3
-			requirements:
-				- local_storage:
-					node:bono_BlockStorage
-						relationship:
-							type:AttachesTo
-							properties:
-								location:{ get_input:storage_location }
-			interfaces:
-				Standard:
-					start:
-						implementation:start.sh
-					delete:
-						implementaion:stop.sh
-					stop:
-						implementaion:shutdown.sh
+                        type: tosca.nodes.Compute
+                        capabilities:
+                                os:
+                                        properties:
+                                                architecture:
+                                                type:
+                                                distribution:
+                                                version:
+                                host:
+                                        properties: *compute_props_host_bono
+                                scalable:
+                                        properties:
+                                                min_instances: 3
+                                                default_instances: 3
+                        requirements:
+                                - local_storage:
+                                        node: bono_BlockStorage
+                                                relationship:
+                                                        type: AttachesTo
+                                                        properties:
+                                                                location: { get_input:storage_location }
+                        interfaces:
+                                Standard:
+                                        start:
+                                                implementation: start.sh
+                                        delete:
+                                                implementaion: stop.sh
+                                        stop:
+                                                implementaion: shutdown.sh
 		bono_BlockStorage:
-			type:tosca.nodes.BlockStorage
-			properties:
-				size:{ get_input:storage_size }
+                        type: tosca.nodes.BlockStorage
+                        properties:
+                                size: { get_input:storage_size }
 	clearwater_network1:
-			type:tosca.nodes.network.Network
-			properties:
-			ip_version:4
-	ellis_port1:
-			type:tosca.nodes.network.Port
-			requirements:
-				- binding:
-					node:ellis
-				- link:
-					 node:clearwater_network1
+                        type:tosca.nodes.network.Network
+                        properties:
+                        ip_version:4
+        ellis_port1:
+                        type:tosca.nodes.network.Port
+                        requirements:
+                                - binding:
+                                        node:ellis
+                                - link:
+                                         node:clearwater_network1
 	clearwater_network2:
-			type:tosca.nodes.network.Network
-			properties:
-			ip_version:4
-	ellis_port2:
-			type:tosca.nodes.network.Port
-			requirements:
-				- binding:
-					node:ellis
-				- link:
-					 node:clearwater_network2
+                        type:tosca.nodes.network.Network
+                        properties:
+                        ip_version:4
+        ellis_port2:
+                        type:tosca.nodes.network.Port
+                        requirements:
+                                - binding:
+                                        node:ellis
+                                - link:
+                                         node:clearwater_network2
 	clearwater_network1:
-			type:tosca.nodes.network.Network
-			properties:
-			ip_version:4
-	bono_port1:
-			type:tosca.nodes.network.Port
-			requirements:
-				- binding:
-					node:bono
-				- link:
-					 node:clearwater_network1
+                        type:tosca.nodes.network.Network
+                        properties:
+                        ip_version:4
+        bono_port1:
+                        type:tosca.nodes.network.Port
+                        requirements:
+                                - binding:
+                                        node:bono
+                                - link:
+                                         node:clearwater_network1
 	clearwater_network2:
-			type:tosca.nodes.network.Network
-			properties:
-			ip_version:4
-	bono_port2:
-			type:tosca.nodes.network.Port
-			requirements:
-				- binding:
-					node:bono
-				- link:
-					 node:clearwater_network2
\ No newline at end of file
+                        type:tosca.nodes.network.Network
+                        properties:
+                        ip_version:4
+        bono_port2:
+                        type:tosca.nodes.network.Port
+                        requirements:
+                                - binding:
+                                        node:bono
+                                - link:
+                                         node:clearwater_network2
\ No newline at end of file
diff --git a/yardstick/benchmark/scenarios/parser/parser.py b/yardstick/benchmark/scenarios/parser/parser.py
index 006258d05..bb16e7c89 100644
--- a/yardstick/benchmark/scenarios/parser/parser.py
+++ b/yardstick/benchmark/scenarios/parser/parser.py
@@ -58,10 +58,12 @@ class Parser(base.Scenario):
         cmd1 = "%s %s %s" % (self.parser_script, yangfile, toscafile)
         cmd2 = "chmod 777 %s" % (self.parser_script)
         subprocess.call(cmd2, shell=True)
-        output = subprocess.call(cmd1, shell=True, stdout=subprocess.PIPE)
+        p = subprocess.Popen(cmd1, shell=True, stdout=subprocess.PIPE,
+                             stderr=subprocess.PIPE)
+        p.communicate()
         print "yangtotosca finished"
 
-        result['yangtotosca'] = "success" if output == 0 else "fail"
+        result['yangtotosca'] = "success" if p.returncode == 0 else "fail"
 
     def teardown(self):
         ''' for scenario teardown remove parser and pyang '''
-- 
cgit