subprocess.call para stdout=PIPE is risky 11/26111/4
authorRyan.RCS <lihainong@huawei.com>
Tue, 20 Dec 2016 08:36:24 +0000 (08:36 +0000)
committerRyan.RCS <lihainong@huawei.com>
Wed, 21 Dec 2016 02:03:48 +0000 (02:03 +0000)
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
yardstick/benchmark/scenarios/parser/parser.py

index 4472f7e..21c7891 100644 (file)
@@ -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
index 006258d..bb16e7c 100644 (file)
@@ -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 '''