policy2tosca patch set-6 41/20041/1
authorshiva-charan.m-s <shiva-charan.m-s@hpe.com>
Wed, 27 Jul 2016 03:34:23 +0000 (22:34 -0500)
committerjulien zhang <zhang.jun3g@zte.com.cn>
Wed, 31 Aug 2016 15:17:52 +0000 (15:17 +0000)
Change-Id: Id93490753ba93e4c3aa00cd487855e3d2970ae9a
Signed-off-by: shiva-charan <shiva-charan.m-s@hpe.com>
(cherry picked from commit d93490753ba93e4c3aa00cd487855e3d2970ae9a)

23 files changed:
policy2tosca/README.rst [new file with mode: 0644]
policy2tosca/build/lib.linux-x86_64-2.7/policy2tosca/__init__.py [new file with mode: 0644]
policy2tosca/build/lib.linux-x86_64-2.7/policy2tosca/add_definition.py [new file with mode: 0644]
policy2tosca/build/lib.linux-x86_64-2.7/policy2tosca/add_type.py [new file with mode: 0644]
policy2tosca/build/lib.linux-x86_64-2.7/policy2tosca/del_definition.py [new file with mode: 0644]
policy2tosca/build/lib.linux-x86_64-2.7/policy2tosca/del_type.py [new file with mode: 0644]
policy2tosca/build/lib.linux-x86_64-2.7/policy2tosca/main.py [new file with mode: 0644]
policy2tosca/dist/policy2tosca-0.1-py2.7.egg [new file with mode: 0644]
policy2tosca/policy2tosca.egg-info/PKG-INFO [new file with mode: 0644]
policy2tosca/policy2tosca.egg-info/SOURCES.txt [new file with mode: 0644]
policy2tosca/policy2tosca.egg-info/dependency_links.txt [new file with mode: 0644]
policy2tosca/policy2tosca.egg-info/entry_points.txt [new file with mode: 0644]
policy2tosca/policy2tosca.egg-info/namespace_packages.txt [new file with mode: 0644]
policy2tosca/policy2tosca.egg-info/not-zip-safe [new file with mode: 0644]
policy2tosca/policy2tosca.egg-info/requires.txt [new file with mode: 0644]
policy2tosca/policy2tosca.egg-info/top_level.txt [new file with mode: 0644]
policy2tosca/policy2tosca/__init__.py [new file with mode: 0644]
policy2tosca/policy2tosca/add_definition.py [new file with mode: 0644]
policy2tosca/policy2tosca/add_type.py [new file with mode: 0644]
policy2tosca/policy2tosca/del_definition.py [new file with mode: 0644]
policy2tosca/policy2tosca/del_type.py [new file with mode: 0644]
policy2tosca/policy2tosca/main.py [new file with mode: 0644]
policy2tosca/setup.py [new file with mode: 0644]

diff --git a/policy2tosca/README.rst b/policy2tosca/README.rst
new file mode 100644 (file)
index 0000000..9877499
--- /dev/null
@@ -0,0 +1,37 @@
+=================
+ Running demoapp
+=================
+
+Pre-requisite
+-------------
+
+Install cliff with the following links.
+::
+
+- `install <http://docs.openstack.org/developer/cliff/install.html>`
+                   or
+- `demoapp <http://docs.openstack.org/developer/cliff/demoapp.html>`
+
+Setup
+-----
+
+Now, install the policy2tosca module.
+::
+
+  $ cd policy2tosca
+  $ python setup.py install
+
+Usage
+-----
+
+To see a list of commands available, run
+::
+
+  $ policy2tosca --help
+
+
+To see help for an individual command, include the command name on the command line
+::
+
+  $ policy2tosca help add_type
+
diff --git a/policy2tosca/build/lib.linux-x86_64-2.7/policy2tosca/__init__.py b/policy2tosca/build/lib.linux-x86_64-2.7/policy2tosca/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/policy2tosca/build/lib.linux-x86_64-2.7/policy2tosca/add_definition.py b/policy2tosca/build/lib.linux-x86_64-2.7/policy2tosca/add_definition.py
new file mode 100644 (file)
index 0000000..953c377
--- /dev/null
@@ -0,0 +1,93 @@
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import logging
+import os
+import re
+from cliff.command import Command
+from cliff.show import ShowOne
+
+
+class add_definition(Command):
+    "Add policy definition in a tosca file"
+
+    log = logging.getLogger(__name__)
+
+    def get_parser(self, prog_name):
+        parser = super(add_definition, self).get_parser(prog_name)
+        parser.add_argument('--policy_name', dest='policy_name', required=True,
+                            help='add policy name')
+        parser.add_argument('--policy_type', dest='policy_type', required=True,
+                            help='belongs to policy type')
+        parser.add_argument('--targets', dest='targets', nargs='+',
+                            help='specify N number of targets')
+        parser.add_argument('--metadata', dest='metadata', nargs='?',
+                            help='metadata')
+        parser.add_argument('--description', dest='description', nargs='?',
+                            help='description')
+        parser.add_argument('--properties', dest='properties', nargs='+',
+                            help='properties')
+        parser.add_argument('--triggers', dest='triggers', nargs='+',
+                            help='triggers')
+        parser.add_argument('--source', dest='source', nargs='?',
+                            help='source tosca yaml file')
+        return parser
+
+    def take_action(self, parsed_args):
+        inputfile = open(parsed_args.source, 'r').readlines()
+        policy_def = 0
+        policy_type = 0
+        policy_type = self.check_policy_type(parsed_args)
+        policy_def = self.check_definition(parsed_args)
+        if policy_def == 0 and policy_type == 0:
+            self.insert_policy_def(parsed_args)
+
+    def check_definition(self, parsed_args):
+        filename = parsed_args.source
+        filehandler = open(filename, "r")
+        lines = filehandler.readlines()
+        policy_def = 0
+        policy_name = "    - " + str(parsed_args.policy_name) + ":"
+        for line in lines:
+            if policy_name in line:
+                print "policy definition exists"
+                policy_def = 1
+        return policy_def
+
+    def insert_policy_def(self, parsed_args):
+        filename = parsed_args.source
+        filehandle = open(filename, "a")
+        print "Adding Definition"
+        filehandle.write("    - " + str(parsed_args.policy_name) + ":\n")
+        filehandle.write("        type: " + str(parsed_args.policy_type)
+                         + "\n")
+        filehandle.write("        description: " + str(parsed_args.description)
+                         + "\n")
+        filehandle.write("        metadata: \n          "
+                         + str(parsed_args.metadata) + "\n")
+        filehandle.write("        properties: \n          "
+                         + str(parsed_args.properties) + "\n")
+        filehandle.write("        targets:\n          "
+                         + str(parsed_args.targets) + "\n")
+        filehandle.write("        triggers: \n          "
+                         + str(parsed_args.triggers) + "\n")
+
+    def check_policy_type(self, parsed_args):
+        policy_name = parsed_args.policy_type + ":$"
+        inputfile = open(parsed_args.source, 'r').readlines()
+        policy_exists = 0
+        for line in inputfile:
+            if re.search(policy_name, line):
+                print "policy type exists"
+                policy_exists = 1
+        return policy_exists
diff --git a/policy2tosca/build/lib.linux-x86_64-2.7/policy2tosca/add_type.py b/policy2tosca/build/lib.linux-x86_64-2.7/policy2tosca/add_type.py
new file mode 100644 (file)
index 0000000..0afa0e8
--- /dev/null
@@ -0,0 +1,121 @@
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import logging
+import os
+from cliff.command import Command
+from cliff.show import ShowOne
+import re
+
+
+class add_type(Command):
+
+    "Add policy type in a tosca file"
+    log = logging.getLogger(__name__)
+
+    def get_parser(self, prog_name):
+        parser = super(add_type, self).get_parser(prog_name)
+        parser.add_argument('--policy_type', dest='policy_type', nargs='?',
+                            help='add policy type')
+        parser.add_argument('--derived_from', dest='derived_from', nargs='?',
+                            help='policy dervied from')
+        parser.add_argument('--version_number', dest='version_number',
+                            nargs='?', help='version number of the policy')
+        parser.add_argument('--targets', dest='targets', nargs='+',
+                            help='specify N number of targets')
+        parser.add_argument('--metadata', dest='metadata', nargs='?',
+                            help='metadata')
+        parser.add_argument('--description', dest='description', nargs='?',
+                            help='metadata')
+        parser.add_argument('--properties', dest='properties', nargs='+',
+                            help='properties')
+        parser.add_argument('--triggers', dest='triggers', nargs='+',
+                            help='triggers')
+        parser.add_argument('--source', dest='source', nargs='?',
+                            help='source tosca yaml file')
+        return parser
+
+    def take_action(self, parsed_args):
+        inputfile = open(parsed_args.source, 'r').readlines()
+        policy_block = 0
+        for line in inputfile:
+            if re.search('policy_types:', line):
+                print "policy block exists"
+                policy_block = 1
+        if policy_block == 0:
+            self.insert_policy_block(parsed_args)
+            policy_block = 1
+        policy_exists = self.check_policy(parsed_args)
+        if policy_exists == 0:
+            self.insert_policy(parsed_args)
+
+    def insert_policy_block(self, parsed_args):
+        inputfile = open(parsed_args.source, 'r').readlines()
+        filename = parsed_args.source + "_temp"
+        filehandle = open(filename, 'w')
+        for line in inputfile:
+            filehandle.write(line)
+            if re.search('topology_template:', line):
+                print "Inserting policy block"
+                filehandle.write("\tpolicy_types:\n")
+
+        filehandle.close()
+        filehandles = open(parsed_args.source, "w")
+        filename = parsed_args.source + "_temp"
+        filehandle = open(filename, 'r')
+        lines = filehandle.readlines()
+        for line in lines:
+            filehandles.write(line)
+        os.system('rm '+filename)
+
+    def check_policy(self, parsed_args):
+        policy_name = parsed_args.policy_type + ":$"
+        inputfile = open(parsed_args.source, 'r').readlines()
+        policy_exists = 0
+        for line in inputfile:
+            if re.search(policy_name, line):
+                print "policy type exists"
+                policy_exists = 1
+        return policy_exists
+
+    def insert_policy(self, parsed_args):
+        inputfile = open(parsed_args.source, 'r').readlines()
+        filename = parsed_args.source + "_temp"
+        filehandle = open(filename, 'w')
+        for line in inputfile:
+            filehandle.write(line)
+            if re.search('policy_types:', line):
+                print "Inserting policy type"
+                filehandle.write("\t  "+str(parsed_args.policy_type) + ":\n")
+                filehandle.write("\t    derived_from: "
+                                 + str(parsed_args.derived_from) + "\n")
+                filehandle.write("\t    version: " +
+                                 str(parsed_args.version_number) + "\n")
+                filehandle.write("\t    description: " +
+                                 str(parsed_args.description) + "\n")
+                filehandle.write("\t    metadata: \n\t        " +
+                                 str(parsed_args.metadata) + "\n")
+                filehandle.write("\t    properties: \n\t        " +
+                                 str(parsed_args.properties) + "\n")
+                filehandle.write("\t    targets:\n\t        " +
+                                 str(parsed_args.targets) + "\n")
+                filehandle.write("\t    triggers: \n\t        " +
+                                 str(parsed_args.triggers) + "\n")
+        filehandle.close()
+        filehandles = open(parsed_args.source, "w")
+        filename = parsed_args.source + "_temp"
+        filehandle = open(filename, 'r')
+        lines = filehandle.readlines()
+        for line in lines:
+            filehandles.write(line)
+        os.system('rm ' + filename)
diff --git a/policy2tosca/build/lib.linux-x86_64-2.7/policy2tosca/del_definition.py b/policy2tosca/build/lib.linux-x86_64-2.7/policy2tosca/del_definition.py
new file mode 100644 (file)
index 0000000..f1b9132
--- /dev/null
@@ -0,0 +1,45 @@
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import logging
+import os
+from cliff.command import Command
+from cliff.show import ShowOne
+import yaml
+import json
+
+
+class delete_definition(Command):
+    "Delete policy in a tosca file"
+
+    log = logging.getLogger(__name__)
+
+    def get_parser(self, prog_name):
+        parser = super(delete_definition, self).get_parser(prog_name)
+        parser.add_argument('--policy_name', dest='policy_name', nargs='?',
+                            help='delete policy')
+        parser.add_argument('--source', dest='source', nargs='?',
+                            help='source tosca yaml file')
+        return parser
+
+    def take_action(self, parsed_args):
+        yml = open(parsed_args.source, "r")
+        data = yaml.load(yml)
+        json_dump = json.dumps(data)
+        tosca_json = json.loads(json_dump)
+        del tosca_json['topology_template']['policies'][parsed_args.policy_name]
+        tosca = json.dumps(tosca_json)
+        data2 = json.loads(tosca)
+        yml2 = yaml.safe_dump(data2, default_flow_style=False)
+        tosca_file = open(parsed_args.source, "w")
+        tosca_file.write(yml2)
diff --git a/policy2tosca/build/lib.linux-x86_64-2.7/policy2tosca/del_type.py b/policy2tosca/build/lib.linux-x86_64-2.7/policy2tosca/del_type.py
new file mode 100644 (file)
index 0000000..70adc0e
--- /dev/null
@@ -0,0 +1,47 @@
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import logging
+import os
+from cliff.command import Command
+from cliff.show import ShowOne
+import yaml
+import json
+
+
+class delete_type(Command):
+    "Delete policy type in a tosca file"
+
+    log = logging.getLogger(__name__)
+
+    def get_parser(self, prog_name):
+        parser = super(delete_type, self).get_parser(prog_name)
+        parser.add_argument('--policy_type', dest='policy_type', nargs='?',
+                            help='delete policy type')
+        parser.add_argument('--source', dest='source', nargs='?',
+                            help='source tosca yaml file')
+        return parser
+
+    def take_action(self, parsed_args):
+        yml = open(parsed_args.source, "r")
+        #lines=filehandle.readlines()
+        data = yaml.load(yml)
+        json_dump = json.dumps(data)
+        #print json_dump
+        tosca_json = json.loads(json_dump)
+        del tosca_json['topology_template']['policy_types'][parsed_args.policy_type]
+        tosca = json.dumps(tosca_json)
+        data2 = json.loads(tosca)
+        yml2 = yaml.safe_dump(data2, default_flow_style=False)
+        tosca_file = open(parsed_args.source, "w")
+        tosca_file.write(yml2)
diff --git a/policy2tosca/build/lib.linux-x86_64-2.7/policy2tosca/main.py b/policy2tosca/build/lib.linux-x86_64-2.7/policy2tosca/main.py
new file mode 100644 (file)
index 0000000..39aabfa
--- /dev/null
@@ -0,0 +1,37 @@
+import logging
+import sys
+
+from cliff.app import App
+from cliff.commandmanager import CommandManager
+
+
+class policy2tosca(App):
+
+    log = logging.getLogger(__name__)
+
+    def __init__(self):
+        super(policy2tosca, self).__init__(
+            description='Parser Policy2Tosca',
+            version='0.1',
+            command_manager=CommandManager('cliff.demo'),
+            )
+
+    def initialize_app(self, argv):
+        self.log.debug('initialize_app')
+
+    def prepare_to_run_command(self, cmd):
+        self.log.debug('prepare_to_run_command %s', cmd.__class__.__name__)
+
+    def clean_up(self, cmd, result, err):
+        self.log.debug('clean_up %s', cmd.__class__.__name__)
+        if err:
+            self.log.debug('got an error: %s', err)
+
+
+def main(argv=sys.argv[1:]):
+    myapp = policy2tosca()
+    return myapp.run(argv)
+
+
+if __name__ == '__main__':
+    sys.exit(main(sys.argv[1:]))
diff --git a/policy2tosca/dist/policy2tosca-0.1-py2.7.egg b/policy2tosca/dist/policy2tosca-0.1-py2.7.egg
new file mode 100644 (file)
index 0000000..cf512ae
Binary files /dev/null and b/policy2tosca/dist/policy2tosca-0.1-py2.7.egg differ
diff --git a/policy2tosca/policy2tosca.egg-info/PKG-INFO b/policy2tosca/policy2tosca.egg-info/PKG-INFO
new file mode 100644 (file)
index 0000000..897fcca
--- /dev/null
@@ -0,0 +1,54 @@
+Metadata-Version: 1.1
+Name: policy2tosca
+Version: 0.1
+Summary: Parser policy2tosca
+Home-page: UNKNOWN
+Author: Shiva Charan M S
+Author-email: shiva-charan.m-s@hpe.com
+License: UNKNOWN
+Description: =================
+         Running demoapp
+        =================
+        
+        Pre-requisite
+        -------------
+        
+        Install cliff with the following links.
+        
+        http://docs.openstack.org/developer/cliff/install.html
+                           or
+        http://docs.openstack.org/developer/cliff/demoapp.html
+        
+        Setup
+        -----
+        
+        Now, install the policy2tosca module.
+        
+        ::
+        
+          $ cd policy2tosca
+          $ python setup.py install
+        
+        Usage
+        -----
+        
+        To see a list of commands available, run::
+        
+          $ policy2tosca --help
+        
+        
+        To see help for an individual command, include the command name on the
+        command line::
+        
+          $ policy2tosca help add_type
+        
+        
+Platform: Any
+Classifier: License :: OSI Approved :: Apache Software License
+Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 2
+Classifier: Programming Language :: Python :: 2.7
+Classifier: Programming Language :: Python :: 3
+Classifier: Programming Language :: Python :: 3.2
+Classifier: Intended Audience :: Developers
+Classifier: Environment :: Console
diff --git a/policy2tosca/policy2tosca.egg-info/SOURCES.txt b/policy2tosca/policy2tosca.egg-info/SOURCES.txt
new file mode 100644 (file)
index 0000000..8efd66c
--- /dev/null
@@ -0,0 +1,16 @@
+README.rst
+setup.py
+policy2tosca/__init__.py
+policy2tosca/add_definition.py
+policy2tosca/add_type.py
+policy2tosca/del_definition.py
+policy2tosca/del_type.py
+policy2tosca/main.py
+policy2tosca.egg-info/PKG-INFO
+policy2tosca.egg-info/SOURCES.txt
+policy2tosca.egg-info/dependency_links.txt
+policy2tosca.egg-info/entry_points.txt
+policy2tosca.egg-info/namespace_packages.txt
+policy2tosca.egg-info/not-zip-safe
+policy2tosca.egg-info/requires.txt
+policy2tosca.egg-info/top_level.txt
\ No newline at end of file
diff --git a/policy2tosca/policy2tosca.egg-info/dependency_links.txt b/policy2tosca/policy2tosca.egg-info/dependency_links.txt
new file mode 100644 (file)
index 0000000..8b13789
--- /dev/null
@@ -0,0 +1 @@
+
diff --git a/policy2tosca/policy2tosca.egg-info/entry_points.txt b/policy2tosca/policy2tosca.egg-info/entry_points.txt
new file mode 100644 (file)
index 0000000..ad58b44
--- /dev/null
@@ -0,0 +1,9 @@
+[console_scripts]
+policy2tosca = policy2tosca.main:main
+
+[cliff.demo]
+delete-definition = policy2tosca.del_definition:delete_definition
+delete-type = policy2tosca.del_type:delete_type
+add-type = policy2tosca.add_type:add_type
+add-definition = policy2tosca.add_definition:add_definition
+
diff --git a/policy2tosca/policy2tosca.egg-info/namespace_packages.txt b/policy2tosca/policy2tosca.egg-info/namespace_packages.txt
new file mode 100644 (file)
index 0000000..8b13789
--- /dev/null
@@ -0,0 +1 @@
+
diff --git a/policy2tosca/policy2tosca.egg-info/not-zip-safe b/policy2tosca/policy2tosca.egg-info/not-zip-safe
new file mode 100644 (file)
index 0000000..8b13789
--- /dev/null
@@ -0,0 +1 @@
+
diff --git a/policy2tosca/policy2tosca.egg-info/requires.txt b/policy2tosca/policy2tosca.egg-info/requires.txt
new file mode 100644 (file)
index 0000000..4ba1219
--- /dev/null
@@ -0,0 +1 @@
+cliff
\ No newline at end of file
diff --git a/policy2tosca/policy2tosca.egg-info/top_level.txt b/policy2tosca/policy2tosca.egg-info/top_level.txt
new file mode 100644 (file)
index 0000000..87ec9fd
--- /dev/null
@@ -0,0 +1 @@
+policy2tosca
diff --git a/policy2tosca/policy2tosca/__init__.py b/policy2tosca/policy2tosca/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/policy2tosca/policy2tosca/add_definition.py b/policy2tosca/policy2tosca/add_definition.py
new file mode 100644 (file)
index 0000000..cb534f4
--- /dev/null
@@ -0,0 +1,157 @@
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import logging
+import os
+import re
+from cliff.command import Command
+from cliff.show import ShowOne
+import yaml
+import json
+
+
+class Add_definition(Command):
+    "Add policy definition in a tosca file"
+
+    log = logging.getLogger(__name__)
+
+    def get_parser(self, prog_name):
+        parser = super(Add_definition, self).get_parser(prog_name)
+        parser.add_argument('--policy_name', dest='policy_name', required=True,
+                            help='add policy name')
+        parser.add_argument('--policy_type', dest='policy_type', required=True,
+                            help='belongs to policy type')
+        parser.add_argument('--targets', dest='targets', nargs='*',
+                            help='specify N number of targets')
+        parser.add_argument('--metadata', dest='metadata', nargs='?',
+                            help='metadata')
+        parser.add_argument('--description', dest='description', nargs='?',
+                            help='description')
+        parser.add_argument('--properties', dest='properties', nargs='+',
+                            help='properties')
+        parser.add_argument('--triggers', dest='triggers', nargs='*',
+                            help='triggers')
+        parser.add_argument('--source', dest='source', nargs='?',
+                            help='source tosca yaml file')
+        return parser
+
+    def take_action(self, parsed_args):
+        inputfile = open(parsed_args.source, 'r').readlines()
+        policy_def = 0
+        policy_type = 0
+        policy_type = self.check_policy_type(parsed_args)
+        policy_def = self.check_definition(parsed_args)
+        if policy_def == 0 and policy_type == 0:
+            self.insert_policy_def(parsed_args)
+
+    def check_definition(self, parsed_args):
+        filename = parsed_args.source
+        filehandler = open(filename, "r")
+        lines = filehandler.readlines()
+        policy_def = 0
+        policy_name = "    - " + str(parsed_args.policy_name) + ":"
+        for line in lines:
+            if policy_name in line:
+                print "policy definition exists"
+                policy_def = 1
+        return policy_def
+
+    def insert_policy_def(self, parsed_args):
+        searchline = '  policies:\n'
+        f = open(parsed_args.source, "r")
+        lines = f.readlines()
+        num = lines.index(searchline)
+        string = lines[num + 1]
+        leading_spaces = len(string) - len(string.lstrip())
+        policy_name = "- " + str(parsed_args.policy_name) + ":"
+        properties = parsed_args.properties[0]
+        prop_str = self.make_list(properties,leading_spaces)
+        if (parsed_args.triggers and parsed_args.targets):
+            policy = "".join((leading_spaces * " ") + policy_name  + "\n"
+            + "".join((leading_spaces * " ")) + "  type: "
+            + str(parsed_args.policy_type) + "\n"  + "".join((leading_spaces * " "))
+            + "  description: " + str(parsed_args.description) + "\n"
+            + "".join((leading_spaces * " ")) + "  metadata: " + str(parsed_args.metadata) + "\n"
+            + "".join((leading_spaces * " ")) + "  properties: \n" + "".join((leading_spaces * 2 * " ")) + prop_str
+            + "targets: " + str(parsed_args.targets) + "\n"
+            + "".join((leading_spaces * " ")) + "  triggers: " + str(parsed_args.triggers) + "\n"
+            )
+        elif (parsed_args.triggers):
+            policy = "".join((leading_spaces * " ") + policy_name  + "\n"
+            + "".join((leading_spaces * " ")) + "  type: "
+            + str(parsed_args.policy_type) + "\n"  + "".join((leading_spaces * " "))
+            + "  description: " + str(parsed_args.description) + "\n"
+            + "".join((leading_spaces * " ")) + "  metadata: " + str(parsed_args.metadata) + "\n"
+            + "".join((leading_spaces * " ")) + "  properties: \n" + "".join((leading_spaces * 2 * " ")) + prop_str
+            + "".join((leading_spaces * " ")) + "  triggers: " + str(parsed_args.triggers) + "\n"
+            )
+        elif (parsed_args.targets):
+            policy = "".join((leading_spaces * " ") + policy_name  + "\n"
+            + "".join((leading_spaces * " ")) + "  type: "
+            + str(parsed_args.policy_type) + "\n"  + "".join((leading_spaces * " "))
+            + "  description: " + str(parsed_args.description) + "\n"
+            + "".join((leading_spaces * " ")) + "  metadata: " + str(parsed_args.metadata) + "\n"
+            + "".join((leading_spaces * " ")) + "  properties: \n" + "".join((leading_spaces * 2 * " ")) + prop_str
+            + "targets: " + str(parsed_args.targets) + "\n"
+            )
+
+        lines.insert(num+1,policy)
+
+        f2 = open(parsed_args.source, "w")
+        for line in lines:
+            f2.write(line)
+
+    def make_list(self, properties, leading_spaces):
+        props = properties.split(",")
+        lists = []
+        i = 0
+        for p in props:
+            lables = p.split(":")
+
+            lists.insert(i,lables)
+            i = i + 1
+        title_list=[]
+        i =0
+        for l in lists:
+            title_list.insert(i,l[0])
+            i = i + 1
+        prop_title = ""
+        len_list = len(lists)
+        title_list =  set(title_list)
+        final_list = []
+        i = 0
+
+        for t in title_list:
+            final_str = t + ":"
+            for l in lists:
+                if t == l[0]:
+                    final_str = final_str +  " " + l[1] + ","
+            final_str = final_str[:-1]
+            final_list.insert(i,final_str)
+            i =+ 1
+
+        prop_str = ""
+        for f in final_list:
+            prop_str = prop_str + f +"\n" + "".join((leading_spaces * 2 *" "))
+        return prop_str[:-1]
+
+    def check_policy_type(self, parsed_args):
+        policy_type = parsed_args.policy_type + ":$"
+        inputfile = open(parsed_args.source, 'r').readlines()
+        policy_exists = 0
+        for line in inputfile:
+            if re.search(policy_type, line):
+                print "policy type exists"
+                policy_exists = 1
+                break
+        return policy_exists
diff --git a/policy2tosca/policy2tosca/add_type.py b/policy2tosca/policy2tosca/add_type.py
new file mode 100644 (file)
index 0000000..ded3732
--- /dev/null
@@ -0,0 +1,121 @@
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import logging
+import os
+from cliff.command import Command
+from cliff.show import ShowOne
+import re
+
+
+class Add_type(Command):
+
+    "Add policy type in a tosca file"
+    log = logging.getLogger(__name__)
+
+    def get_parser(self, prog_name):
+        parser = super(Add_type, self).get_parser(prog_name)
+        parser.add_argument('--policy_type', dest='policy_type', nargs='?',
+                            help='add policy type')
+        parser.add_argument('--derived_from', dest='derived_from', nargs='?',
+                            help='policy dervied from')
+        parser.add_argument('--version_number', dest='version_number',
+                            nargs='?', help='version number of the policy')
+        parser.add_argument('--targets', dest='targets', nargs='+',
+                            help='specify N number of targets')
+        parser.add_argument('--metadata', dest='metadata', nargs='?',
+                            help='metadata')
+        parser.add_argument('--description', dest='description', nargs='?',
+                            help='metadata')
+        parser.add_argument('--properties', dest='properties', nargs='+',
+                            help='properties')
+        parser.add_argument('--triggers', dest='triggers', nargs='+',
+                            help='triggers')
+        parser.add_argument('--source', dest='source', nargs='?',
+                            help='source tosca yaml file')
+        return parser
+
+    def take_action(self, parsed_args):
+        inputfile = open(parsed_args.source, 'r').readlines()
+        policy_block = 0
+        for line in inputfile:
+            if re.search('policy_types:', line):
+                print "policy block exists"
+                policy_block = 1
+        if policy_block == 0:
+            self.insert_policy_block(parsed_args)
+            policy_block = 1
+        policy_exists = self.check_policy(parsed_args)
+        if policy_exists == 0:
+            self.insert_policy(parsed_args)
+
+    def insert_policy_block(self, parsed_args):
+        inputfile = open(parsed_args.source, 'r').readlines()
+        filename = parsed_args.source + "_temp"
+        filehandle = open(filename, 'w')
+        for line in inputfile:
+            filehandle.write(line)
+            if re.search('topology_template:', line):
+                print "Inserting policy block"
+                filehandle.write("\tpolicy_types:\n")
+
+        filehandle.close()
+        filehandles = open(parsed_args.source, "w")
+        filename = parsed_args.source + "_temp"
+        filehandle = open(filename, 'r')
+        lines = filehandle.readlines()
+        for line in lines:
+            filehandles.write(line)
+        os.system('rm '+filename)
+
+    def check_policy(self, parsed_args):
+        policy_name = parsed_args.policy_type + ":$"
+        inputfile = open(parsed_args.source, 'r').readlines()
+        policy_exists = 0
+        for line in inputfile:
+            if re.search(policy_name, line):
+                print "policy type exists"
+                policy_exists = 1
+                break
+        return policy_exists
+
+    def insert_policy(self, parsed_args):
+        inputfile = open(parsed_args.source, 'r').readlines()
+        filename = parsed_args.source + "_temp"
+        filehandle = open(filename, 'w')
+        for line in inputfile:
+            filehandle.write(line)
+            if re.search('policy_types:', line):
+                print "Inserting policy type"
+                filehandle.write("\t  "+str(parsed_args.policy_type) + ":\n")
+                filehandle.write("\t    derived_from: "
+                                 + str(parsed_args.derived_from) + "\n")
+                filehandle.write("\t    version: " +
+                                 str(parsed_args.version_number) + "\n")
+                filehandle.write("\t    description: " +
+                                 str(parsed_args.description) + "\n")
+                filehandle.write("\t    metadata: \n\t        " +
+                                 str(parsed_args.metadata) + "\n")
+                filehandle.write("\t    properties: \n\t        " +
+                                 str(parsed_args.properties) + "\n")
+                filehandle.write("\t    targets:\n\t        " +
+                                 str(parsed_args.targets) + "\n")
+                filehandle.write("\t    triggers: \n\t        " +
+                                 str(parsed_args.triggers) + "\n")
+        filehandle.close()
+        filehandles = open(parsed_args.source, "w")
+        filehandle = open(filename, 'r')
+        lines = filehandle.readlines()
+        for line in lines:
+            filehandles.write(line)
+        os.system('rm ' + filename)
diff --git a/policy2tosca/policy2tosca/del_definition.py b/policy2tosca/policy2tosca/del_definition.py
new file mode 100644 (file)
index 0000000..d8345cd
--- /dev/null
@@ -0,0 +1,45 @@
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import logging
+import os
+from cliff.command import Command
+from cliff.show import ShowOne
+import yaml
+import json
+
+
+class Delete_definition(Command):
+    "Delete policy in a tosca file"
+
+    log = logging.getLogger(__name__)
+
+    def get_parser(self, prog_name):
+        parser = super(Delete_definition, self).get_parser(prog_name)
+        parser.add_argument('--policy_name', dest='policy_name', nargs='?',
+                            help='delete policy')
+        parser.add_argument('--source', dest='source', nargs='?',
+                            help='source tosca yaml file')
+        return parser
+
+    def take_action(self, parsed_args):
+        yml = open(parsed_args.source, "r")
+        data = yaml.load(yml)
+        json_dump = json.dumps(data)
+        tosca_json = json.loads(json_dump)
+        del tosca_json['topology_template']['policies'][parsed_args.policy_name]
+        tosca = json.dumps(tosca_json)
+        data2 = json.loads(tosca)
+        yml2 = yaml.safe_dump(data2, default_flow_style=False)
+        tosca_file = open(parsed_args.source, "w")
+        tosca_file.write(yml2)
diff --git a/policy2tosca/policy2tosca/del_type.py b/policy2tosca/policy2tosca/del_type.py
new file mode 100644 (file)
index 0000000..144deec
--- /dev/null
@@ -0,0 +1,47 @@
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import logging
+import os
+from cliff.command import Command
+from cliff.show import ShowOne
+import yaml
+import json
+
+
+class Delete_type(Command):
+    "Delete policy type in a tosca file"
+
+    log = logging.getLogger(__name__)
+
+    def get_parser(self, prog_name):
+        parser = super(Delete_type, self).get_parser(prog_name)
+        parser.add_argument('--policy_type', dest='policy_type', nargs='?',
+                            help='delete policy type')
+        parser.add_argument('--source', dest='source', nargs='?',
+                            help='source tosca yaml file')
+        return parser
+
+    def take_action(self, parsed_args):
+        yml = open(parsed_args.source, "r")
+        #lines=filehandle.readlines()
+        data = yaml.load(yml)
+        json_dump = json.dumps(data)
+        #print json_dump
+        tosca_json = json.loads(json_dump)
+        del tosca_json['topology_template']['policy_types'][parsed_args.policy_type]
+        tosca = json.dumps(tosca_json)
+        data2 = json.loads(tosca)
+        yml2 = yaml.safe_dump(data2, default_flow_style=False)
+        tosca_file = open(parsed_args.source, "w")
+        tosca_file.write(yml2)
diff --git a/policy2tosca/policy2tosca/main.py b/policy2tosca/policy2tosca/main.py
new file mode 100644 (file)
index 0000000..39aabfa
--- /dev/null
@@ -0,0 +1,37 @@
+import logging
+import sys
+
+from cliff.app import App
+from cliff.commandmanager import CommandManager
+
+
+class policy2tosca(App):
+
+    log = logging.getLogger(__name__)
+
+    def __init__(self):
+        super(policy2tosca, self).__init__(
+            description='Parser Policy2Tosca',
+            version='0.1',
+            command_manager=CommandManager('cliff.demo'),
+            )
+
+    def initialize_app(self, argv):
+        self.log.debug('initialize_app')
+
+    def prepare_to_run_command(self, cmd):
+        self.log.debug('prepare_to_run_command %s', cmd.__class__.__name__)
+
+    def clean_up(self, cmd, result, err):
+        self.log.debug('clean_up %s', cmd.__class__.__name__)
+        if err:
+            self.log.debug('got an error: %s', err)
+
+
+def main(argv=sys.argv[1:]):
+    myapp = policy2tosca()
+    return myapp.run(argv)
+
+
+if __name__ == '__main__':
+    sys.exit(main(sys.argv[1:]))
diff --git a/policy2tosca/setup.py b/policy2tosca/setup.py
new file mode 100644 (file)
index 0000000..1cd6732
--- /dev/null
@@ -0,0 +1,75 @@
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+#!/usr/bin/env python
+
+PROJECT = 'policy2tosca'
+
+# Change docs/sphinx/conf.py too!
+VERSION = '0.1'
+
+from setuptools import setup, find_packages
+
+try:
+    long_description = open('README.rst', 'rt').read()
+except IOError:
+    long_description = ''
+
+setup(
+    name=PROJECT,
+    version=VERSION,
+
+    description='Parser policy2tosca',
+    long_description=long_description,
+
+    author='Shiva Charan M S',
+    author_email='shiva-charan.m-s@hpe.com',
+
+    url='',
+    download_url='',
+
+    classifiers=['License :: OSI Approved :: Apache Software License',
+                 'Programming Language :: Python',
+                 'Programming Language :: Python :: 2',
+                 'Programming Language :: Python :: 2.7',
+                 'Programming Language :: Python :: 3',
+                 'Programming Language :: Python :: 3.2',
+                 'Intended Audience :: Developers',
+                 'Environment :: Console',
+                 ],
+
+    platforms=['Any'],
+
+    scripts=[],
+
+    provides=[],
+    install_requires=['cliff'],
+
+    namespace_packages=[],
+    packages=find_packages(),
+    include_package_data=True,
+
+    entry_points={
+        'console_scripts': [
+            'policy2tosca = policy2tosca.main:main'
+        ],
+        'cliff.demo': [
+            'delete-type = policy2tosca.del_type:Delete_type',
+            'delete-definition = policy2tosca.del_definition:Delete_definition',
+            'add-type = policy2tosca.Add_type:add_type',
+            'add-definition = policy2tosca.add_definition:Add_definition',
+        ],
+    },
+
+    zip_safe=False,
+)