summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--docs/parser_docs/policy2tosca/policy2tosca.rst87
-rw-r--r--tosca2heat/heat-translator/translator/hot/translate_node_templates.py12
-rw-r--r--tosca2heat/heat-translator/translator/tests/data/hot_output/hot_nfv_sample.yaml19
-rw-r--r--tosca2heat/heat-translator/translator/tests/data/test_tosca_nfv_sample.yaml19
4 files changed, 128 insertions, 9 deletions
diff --git a/docs/parser_docs/policy2tosca/policy2tosca.rst b/docs/parser_docs/policy2tosca/policy2tosca.rst
new file mode 100644
index 0000000..fa238b2
--- /dev/null
+++ b/docs/parser_docs/policy2tosca/policy2tosca.rst
@@ -0,0 +1,87 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+
+===================
+Parser POLICY2TOSCA
+===================
+
+Overview
+========
+
+Parser is an open source project and licensed under Apache 2. Parser will help
+to provide a tooling mechanism, by parsing Telecom operators’ VNF descriptors
+(YANG templates) into TOSCA templates and then further translate TOSCA
+templates into certain common templates, which could be used in IaaS orchestration
+projects like OpenStack Heat.
+
+Prerequisites
+=============
+
+Parser - POLICY2TOSCA requires the following to be installed.
+
+1. cliff
+--------
+
+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>`
+
+Installation
+============================
+
+Please follow the below installation steps to install parser - POLICY2TOSCA.
+
+Step 1: Clone the parser project.
+
+.. code-block:: bash
+
+ git clone https://gerrit.opnfv.org/gerrit/parser
+
+Step 2: Install the policy2tosca module.
+
+.. code-block:: bash
+
+ cd parser/policy2tosca
+ python setup.py install
+
+Execution
+===========================
+
+Step 1: To see a list of commands available.
+
+.. code-block:: bash
+
+ policy2tosca --help
+
+Step 2: To see help for an individual command, include the command name on the command line
+
+.. code-block:: bash
+
+ policy2tosca help <service>
+
+Step 3: To inject/remove policy types/policy definitions provide the TOSCA file as input to policy2tosca command line.
+
+.. code-block:: bash
+
+ policy2tosca <service> [arguments]
+
+Example:
+
+.. code-block:: bash
+
+ policy2tosca add-definition --policy_name rule2 --policy_type tosca.policies.Placement.Geolocation --description "test description" --properties region:us-north-1,region:us-north-2,min_inst:2 --targets VNF2,VNF4 --metadata "map of strings" --triggers "1,2,3,4" --source example.yaml
+
+
+Step 4: Verify the TOSCA YAMl updated with the injection/removal executed.
+
+.. code-block:: bash
+
+ cat "<source tosca file>"
+
+Example:
+
+.. code-block:: bash
+
+ cat example_tosca.yaml
diff --git a/tosca2heat/heat-translator/translator/hot/translate_node_templates.py b/tosca2heat/heat-translator/translator/hot/translate_node_templates.py
index f32d42b..4dd9556 100644
--- a/tosca2heat/heat-translator/translator/hot/translate_node_templates.py
+++ b/tosca2heat/heat-translator/translator/hot/translate_node_templates.py
@@ -533,14 +533,20 @@ class TranslateNodeTemplates(object):
def _get_attachment_node(self, node, suffix, volume_name):
attach = False
ntpl = self.nodetemplates
- for key, value in node.relationships.items():
- if key.is_derived_from('tosca.relationships.AttachesTo'):
- if value.is_derived_from('tosca.nodes.BlockStorage'):
+ for key_r, value_n in node.relationships.items():
+ if key_r.is_derived_from('tosca.relationships.AttachesTo'):
+ if value_n.is_derived_from('tosca.nodes.BlockStorage'):
attach = True
if attach:
relationship_tpl = None
for req in node.requirements:
for key, val in req.items():
+ if isinstance(val, dict):
+ if value_n.name != val.get('node'):
+ continue
+ else:
+ if value_n.name != val:
+ continue
attach = val
relship = val.get('relationship')
for rkey, rval in val.items():
diff --git a/tosca2heat/heat-translator/translator/tests/data/hot_output/hot_nfv_sample.yaml b/tosca2heat/heat-translator/translator/tests/data/hot_output/hot_nfv_sample.yaml
index d66569d..79750d4 100644
--- a/tosca2heat/heat-translator/translator/tests/data/hot_output/hot_nfv_sample.yaml
+++ b/tosca2heat/heat-translator/translator/tests/data/hot_output/hot_nfv_sample.yaml
@@ -8,23 +8,38 @@ resources:
VDU1:
type: OS::Nova::Server
properties:
- flavor: m1.medium
+ flavor: m1.tiny
image: rhel-6.5-test-image
networks:
- port: { get_resource: CP1 }
user_data_format: SOFTWARE_CONFIG
depends_on:
- VDU2
+ - BlockStorage
VDU2:
type: OS::Nova::Server
properties:
- flavor: m1.medium
+ flavor: m1.tiny
image: rhel-6.5-test-image
networks:
- port: { get_resource: CP2 }
user_data_format: SOFTWARE_CONFIG
+ BlockStorage:
+ type: OS::Cinder::Volume
+ properties:
+ size: 1
+
+ tosca.relationships.attachesto_1:
+ type: OS::Cinder::VolumeAttachment
+ properties:
+ instance_uuid:
+ get_resource: VDU1
+ mountpoint: /dev/vdb1
+ volume_id:
+ get_resource: BlockStorage
+
CP1:
type: OS::Neutron::Port
properties:
diff --git a/tosca2heat/heat-translator/translator/tests/data/test_tosca_nfv_sample.yaml b/tosca2heat/heat-translator/translator/tests/data/test_tosca_nfv_sample.yaml
index e5c8d3c..5803bd2 100644
--- a/tosca2heat/heat-translator/translator/tests/data/test_tosca_nfv_sample.yaml
+++ b/tosca2heat/heat-translator/translator/tests/data/test_tosca_nfv_sample.yaml
@@ -10,8 +10,8 @@ topology_template:
capabilities:
host:
properties:
- num_cpus: 2
- disk_size: 10 GB
+ num_cpus: 1
+ disk_size: 1 GB
mem_size: 512 MB
# Guest Operating System properties
os:
@@ -23,14 +23,25 @@ topology_template:
version: 6.5
requirements:
- high_availability: VDU2
+ - local_storage:
+ node: BlockStorage
+ relationship:
+ type: tosca.relationships.AttachesTo
+ properties:
+ location: /dev/vdb1
+
+ BlockStorage:
+ type: tosca.nodes.BlockStorage
+ properties:
+ size: 1 GB
VDU2:
type: tosca.nodes.nfv.VDU
capabilities:
host:
properties:
- num_cpus: 2
- disk_size: 10 GB
+ num_cpus: 1
+ disk_size: 1 GB
mem_size: 512 MB
# Guest Operating System properties
os: