VNF scaling: TOSCA definitions and sample template
implements blueprint: #vnf-scaling Change-Id: I315e5d4df9217b499c537ae31ca80cfe212a55b5
This commit is contained in:
parent
e575760d3c
commit
a5eb10b2f2
63
samples/tosca-templates/vnfd/tosca-vnfd-scale.yaml
Normal file
63
samples/tosca-templates/vnfd/tosca-vnfd-scale.yaml
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0
|
||||||
|
|
||||||
|
description: sample-tosca-vnfd-scaling
|
||||||
|
|
||||||
|
metadata:
|
||||||
|
template_name: sample-tosca-vnfd-scaling
|
||||||
|
|
||||||
|
topology_template:
|
||||||
|
node_templates:
|
||||||
|
VDU1:
|
||||||
|
type: tosca.nodes.nfv.VDU.Tacker
|
||||||
|
properties:
|
||||||
|
image: cirros-0.3.4-x86_64-uec
|
||||||
|
mgmt_driver: noop
|
||||||
|
availability_zone: nova
|
||||||
|
flavor: m1.tiny
|
||||||
|
|
||||||
|
CP1:
|
||||||
|
type: tosca.nodes.nfv.CP.Tacker
|
||||||
|
properties:
|
||||||
|
management: true
|
||||||
|
anti_spoofing_protection: false
|
||||||
|
requirements:
|
||||||
|
- virtualLink:
|
||||||
|
node: VL1
|
||||||
|
- virtualBinding:
|
||||||
|
node: VDU1
|
||||||
|
|
||||||
|
VDU2:
|
||||||
|
type: tosca.nodes.nfv.VDU.Tacker
|
||||||
|
properties:
|
||||||
|
image: cirros-0.3.4-x86_64-uec
|
||||||
|
mgmt_driver: noop
|
||||||
|
availability_zone: nova
|
||||||
|
flavor: m1.tiny
|
||||||
|
|
||||||
|
CP2:
|
||||||
|
type: tosca.nodes.nfv.CP.Tacker
|
||||||
|
properties:
|
||||||
|
management: true
|
||||||
|
anti_spoofing_protection: false
|
||||||
|
requirements:
|
||||||
|
- virtualLink:
|
||||||
|
node: VL1
|
||||||
|
- virtualBinding:
|
||||||
|
node: VDU2
|
||||||
|
|
||||||
|
VL1:
|
||||||
|
type: tosca.nodes.nfv.VL
|
||||||
|
properties:
|
||||||
|
network_name: private
|
||||||
|
vendor: Tacker
|
||||||
|
|
||||||
|
policies:
|
||||||
|
- SP1:
|
||||||
|
type: tosca.policy.tacker.Scaling
|
||||||
|
properties:
|
||||||
|
increment: 1
|
||||||
|
cooldown: 120
|
||||||
|
min_instances: 1
|
||||||
|
max_instances: 3
|
||||||
|
default_instances: 2
|
||||||
|
targets: [VDU1, VDU2]
|
76
tacker/tests/unit/vm/test_tosca_templates_under_samples.py
Normal file
76
tacker/tests/unit/vm/test_tosca_templates_under_samples.py
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
# 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 os
|
||||||
|
import testtools
|
||||||
|
|
||||||
|
from toscaparser import tosca_template
|
||||||
|
from toscaparser.utils import yamlparser
|
||||||
|
|
||||||
|
from tacker.vm.tosca import utils
|
||||||
|
from translator.hot import tosca_translator
|
||||||
|
|
||||||
|
|
||||||
|
# TODO(kanagaraj-manickam) Update it for including other samples also
|
||||||
|
def get_list_of_samples():
|
||||||
|
base_path = (os.path.dirname(os.path.abspath(__file__)) +
|
||||||
|
'/../../../../samples/tosca-templates/vnfd/')
|
||||||
|
return [base_path + 'tosca-vnfd-scale.yaml']
|
||||||
|
|
||||||
|
|
||||||
|
class TestSamples(testtools.TestCase):
|
||||||
|
"""Sample tosca validation.
|
||||||
|
|
||||||
|
Helps to validate the tosca templates provided in the samples folder
|
||||||
|
to make sure whether its valid YAML, valid TOSCA and
|
||||||
|
possible to translate into HOT template.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def test_samples(self):
|
||||||
|
for f in get_list_of_samples():
|
||||||
|
with open(f, 'r') as _f:
|
||||||
|
yaml_dict = None
|
||||||
|
try:
|
||||||
|
yaml_dict = yamlparser.simple_ordered_parse(_f.read())
|
||||||
|
except: # noqa
|
||||||
|
pass
|
||||||
|
|
||||||
|
self.assertIsNotNone(
|
||||||
|
yaml_dict,
|
||||||
|
"Yaml parser failed to parse %s" % f)
|
||||||
|
|
||||||
|
utils.updateimports(yaml_dict)
|
||||||
|
|
||||||
|
tosca = None
|
||||||
|
try:
|
||||||
|
tosca = tosca_template.ToscaTemplate(
|
||||||
|
a_file=False,
|
||||||
|
yaml_dict_tpl=yaml_dict)
|
||||||
|
except: # noqa
|
||||||
|
pass
|
||||||
|
|
||||||
|
self.assertIsNotNone(
|
||||||
|
tosca,
|
||||||
|
"Tosca parser failed to parse %s" % f)
|
||||||
|
|
||||||
|
hot = None
|
||||||
|
try:
|
||||||
|
hot = tosca_translator.TOSCATranslator(tosca,
|
||||||
|
{}).translate()
|
||||||
|
except: # noqa
|
||||||
|
pass
|
||||||
|
|
||||||
|
self.assertIsNotNone(
|
||||||
|
hot,
|
||||||
|
"Heat-translator failed to translate %s" % f)
|
@ -125,6 +125,34 @@ policy_types:
|
|||||||
properties:
|
properties:
|
||||||
name: http-ping
|
name: http-ping
|
||||||
|
|
||||||
group_types:
|
tosca.policies.tacker.Scaling:
|
||||||
tosca.groups.tacker.VDU:
|
derived_from: tosca.policies.Scaling
|
||||||
derived_from: tosca.groups.Root
|
description: Defines policy for scaling the given targets.
|
||||||
|
properties:
|
||||||
|
increment:
|
||||||
|
type: integer
|
||||||
|
required: true
|
||||||
|
description: Number of nodes to add or remove during the scale out/in.
|
||||||
|
targets:
|
||||||
|
type: list
|
||||||
|
entry_schema:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
description: List of Scaling nodes.
|
||||||
|
min_instances:
|
||||||
|
type: integer
|
||||||
|
required: true
|
||||||
|
description: Minimum number of instances to scale in.
|
||||||
|
max_instances:
|
||||||
|
type: integer
|
||||||
|
required: true
|
||||||
|
description: Maximum number of instances to scale out.
|
||||||
|
default_instances:
|
||||||
|
type: integer
|
||||||
|
required: true
|
||||||
|
description: Initial number of instances.
|
||||||
|
cooldown:
|
||||||
|
type: integer
|
||||||
|
required: false
|
||||||
|
default: 120
|
||||||
|
description: Wait time (in seconds) between consecutive scaling operations. During the cooldown period, scaling action will be ignored
|
||||||
|
Loading…
Reference in New Issue
Block a user