heat-translator/translator/hot/tosca/tosca_policies_reservation.py
nirajsingh 30f4d2ff83 Support reservation policy in heat-translator
Implementation of reservation policy in heat-translator

Tacker Blueprint: https://blueprints.launchpad.net/tacker/+spec/reservation-vnfm
Tacker Spec: https://review.openstack.org/#/c/561840/
Depends-On: Ic5d790df938b40d75bc50252e1e688e9c09eb568
Change-Id: I2b989a49ac3447995a82ddb7193bf478bb847b73
2019-01-09 06:28:27 +00:00

65 lines
2.5 KiB
Python

# Copyright (C) 2018 NTT DATA
# All Rights Reserved.
#
# 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
from translator.hot.syntax.hot_resource import HotResource
# Name used to dynamically load appropriate map class.
TARGET_CLASS_NAME = 'ToscaReservation'
log = logging.getLogger('heat-translator')
class ToscaReservation(HotResource):
'''Translate TOSCA node type tosca.policies.Reservation'''
toscatype = 'tosca.policies.Reservation'
def __init__(self, policy, csar_dir=None):
hot_type = "OS::Aodh::EventAlarm"
super(ToscaReservation, self).__init__(policy,
type=hot_type,
csar_dir=csar_dir)
self.policy = policy
self.filter = list()
def handle_expansion(self):
extra_resources = list()
hot_type = 'OS::Aodh::EventAlarm'
for action_name in self.filter:
prop = self._get_event_type(action_name)
resrv_resources = HotResource(self.nodetemplate,
type=hot_type,
name=action_name,
properties=prop)
extra_resources.append(resrv_resources)
return extra_resources
def handle_properties(self):
if self.policy.entity_tpl.get('reservation'):
reservation_prop = self.policy.entity_tpl["reservation"].items()
for action_name, action_dict in reservation_prop:
if action_name != 'properties':
self.filter.append(action_name)
self.name = self.filter[0]
def _get_event_type(self, action):
if action == 'start_actions':
return {'event_type': 'lease.event.start_lease'}
if action == 'before_end_actions':
return {'event_type': 'lease.event.before_end_lease'}
if action == 'end_actions':
return {'event_type': 'lease.event.end_lease'}