summaryrefslogtreecommitdiffstats
path: root/tosca2heat/heat-translator/translator/hot/tosca
diff options
context:
space:
mode:
authorjulien zhang <zhang.jun3g@zte.com.cn>2016-07-08 06:06:45 +0000
committerGerrit Code Review <gerrit@172.30.200.206>2016-07-08 06:06:46 +0000
commit870d910efa510e768b19785ec677ddb731c49bb0 (patch)
treea82cc076d744875b2631e61aeed1c4f9c37196fb /tosca2heat/heat-translator/translator/hot/tosca
parenteac8aa9137c62d3f1a8fe20ef7bde7560b6d4aca (diff)
parent35292c4c212962cff59c2c35420435d77804375b (diff)
Merge "Affinity and anti-affinity translate to heat resource type"
Diffstat (limited to 'tosca2heat/heat-translator/translator/hot/tosca')
-rw-r--r--tosca2heat/heat-translator/translator/hot/tosca/tosca_policies_antilocate.py36
-rw-r--r--tosca2heat/heat-translator/translator/hot/tosca/tosca_policies_colocate.py36
2 files changed, 72 insertions, 0 deletions
diff --git a/tosca2heat/heat-translator/translator/hot/tosca/tosca_policies_antilocate.py b/tosca2heat/heat-translator/translator/hot/tosca/tosca_policies_antilocate.py
new file mode 100644
index 0000000..b7aca4a
--- /dev/null
+++ b/tosca2heat/heat-translator/translator/hot/tosca/tosca_policies_antilocate.py
@@ -0,0 +1,36 @@
+#
+# 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.
+
+from translator.hot.syntax.hot_resource import HotResource
+
+# Name used to dynamically load appropriate map class.
+TARGET_CLASS_NAME = 'ToscaPoliciesAntilocate'
+
+
+class ToscaPoliciesAntilocate(HotResource):
+ '''Translate TOSCA policy type tosca.poicies.Placement.Antilocate'''
+
+ toscatype = 'tosca.policies.Placement.Antilocate'
+
+ def __init__(self, policy):
+ super(ToscaPoliciesAntilocate, self).__init__(
+ policy, type='OS::Nova::ServerGroup')
+ self.policy = policy
+
+ def handle_properties(self, resources):
+ self.properties["name"] = self.name
+ self.properties["policies"] = ["anti-affinity"]
+ for resource in resources:
+ if resource.name in self.policy.targets:
+ resource.properties["scheduler_hints"] = {
+ "group": {"get_resource": self.name}}
diff --git a/tosca2heat/heat-translator/translator/hot/tosca/tosca_policies_colocate.py b/tosca2heat/heat-translator/translator/hot/tosca/tosca_policies_colocate.py
new file mode 100644
index 0000000..1a108bf
--- /dev/null
+++ b/tosca2heat/heat-translator/translator/hot/tosca/tosca_policies_colocate.py
@@ -0,0 +1,36 @@
+#
+# 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.
+
+from translator.hot.syntax.hot_resource import HotResource
+
+# Name used to dynamically load appropriate map class.
+TARGET_CLASS_NAME = 'ToscaPoliciesColocate'
+
+
+class ToscaPoliciesColocate(HotResource):
+ '''Translate TOSCA policy type tosca.poicies.Placement.Colocate'''
+
+ toscatype = 'tosca.policies.Placement.Colocate'
+
+ def __init__(self, policy):
+ super(ToscaPoliciesColocate, self).__init__(
+ policy, type='OS::Nova::ServerGroup')
+ self.policy = policy
+
+ def handle_properties(self, resources):
+ self.properties["name"] = self.name
+ self.properties["policies"] = ["affinity"]
+ for resource in resources:
+ if resource.name in self.policy.targets:
+ resource.properties["scheduler_hints"] = {
+ "group": {"get_resource": self.name}}