Synchronize upstream version of 0.9
[parser.git] / tosca2heat / heat-translator / translator / hot / tosca / tosca_floating.py
1 #
2 # Licensed under the Apache License, Version 2.0 (the "License"); you may
3 # not use this file except in compliance with the License. You may obtain
4 # a copy of the License at
5 #
6 # http://www.apache.org/licenses/LICENSE-2.0
7 #
8 # Unless required by applicable law or agreed to in writing, software
9 # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
10 # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
11 # License for the specific language governing permissions and limitations
12 # under the License.
13
14 from translator.hot.syntax.hot_resource import HotResource
15
16 # Name used to dynamically load appropriate map class.
17 TARGET_CLASS_NAME = 'ToscaFloatingIP'
18 TOSCA_LINKS_TO = 'tosca.relationships.network.LinksTo'
19
20
21 class ToscaFloatingIP(HotResource):
22     '''Translate TOSCA node type tosca.nodes.network.FloatingIP'''
23
24     toscatype = 'tosca.nodes.network.FloatingIP'
25
26     def __init__(self, nodetemplate, csar_dir=None):
27         super(ToscaFloatingIP, self).__init__(nodetemplate,
28                                               type='OS::Neutron::FloatingIP',
29                                               csar_dir=csar_dir)
30
31     def handle_properties(self):
32         tosca_props = self.get_tosca_props()
33         fip_props = {}
34         for key, value in tosca_props.items():
35             fip_props[key] = value
36
37         links_to = None
38         for rel, node in self.nodetemplate.relationships.items():
39             if not links_to and rel.is_derived_from(TOSCA_LINKS_TO):
40                 links_to = node
41                 for hot_resource in self.depends_on_nodes:
42                     if links_to.name == hot_resource.name:
43                         self.depends_on.remove(hot_resource)
44                         break
45                 fip_props['port_id'] =\
46                     '{ get_resource: %s }' % (links_to.name)
47
48         self.properties = fip_props