30f4d2ff83
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
65 lines
2.5 KiB
Python
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'}
|