Fix processing related to required properties
In the current UT testcase and yaml, there are several cases where the required property of policy is insufficient or the definition part is incorrect. In addition, there is a bug in the code that has the translation logic under 'translator/hot/tosca/'. This patch fixes these translation logic codes, testcase and yaml. Among the fixed yaml files, the following has a line feed code of CRLF, so it has been modified to LF. * translator/tests/data/autoscaling/tosca_cluster_autoscaling.yaml * translator/tests/data/custom_types/senlin_cluster_policies.yaml * translator/tests/data/nfv/test_tosca_nfv_autoscaling_with_params.yaml In addition, NOTE description is added for 'translator/hot/tosca/tosca_policies_monitoring.py', which is one of the translation logic codes. Closes-Bug: #1918360 Change-Id: Ib9dec61007db5d354eaca86000ab3bcf6744a838
This commit is contained in:
parent
7109d4cd52
commit
2c94431c0d
@ -37,8 +37,8 @@ class AutoscalingTest(TestCase):
|
||||
policy_name = list(policies[0].keys())[0]
|
||||
for policy in policies:
|
||||
tpl = policy[policy_name]
|
||||
targets = tpl["targets"]
|
||||
properties = tpl["properties"]
|
||||
targets = properties["targets"]
|
||||
try:
|
||||
nodetemplate = NodeTemplate(name, nodetemplates)
|
||||
toscacompute = ToscaCompute(nodetemplate)
|
||||
@ -82,7 +82,6 @@ class AutoscalingTest(TestCase):
|
||||
- asg:
|
||||
type: tosca.policies.Scaling
|
||||
description: Simple node autoscaling
|
||||
targets: [my_server_1]
|
||||
triggers:
|
||||
resize_compute:
|
||||
description: trigger
|
||||
@ -94,6 +93,7 @@ class AutoscalingTest(TestCase):
|
||||
resource_type: instance
|
||||
comparison_operator: gt
|
||||
properties:
|
||||
targets: [my_server_1]
|
||||
min_instances: 2
|
||||
max_instances: 10
|
||||
default_instances: 3
|
||||
@ -126,8 +126,8 @@ class AutoscalingTest(TestCase):
|
||||
policies:
|
||||
- SP1:
|
||||
type: tosca.policies.Scaling
|
||||
targets: [VDU1]
|
||||
properties:
|
||||
targets: [VDU1]
|
||||
increment: 1
|
||||
cooldown: 120
|
||||
min_instances: 1
|
||||
|
@ -66,7 +66,7 @@ class ToscaClusterAutoscaling(HotResource):
|
||||
hot_resources = []
|
||||
hot_type = 'OS::Aodh::GnocchiAggregationByResourcesAlarm'
|
||||
trigger_receivers = defaultdict(list)
|
||||
for node in self.policy.targets:
|
||||
for node in self.policy.properties['targets']:
|
||||
for trigger in self.policy.entity_tpl['triggers']:
|
||||
for action in self.policy.\
|
||||
entity_tpl['triggers'][trigger]['action']:
|
||||
@ -137,7 +137,7 @@ class ToscaClusterAutoscaling(HotResource):
|
||||
remove_resources.append(resource)
|
||||
elif resource.type == 'OS::Neutron::Net':
|
||||
remove_resources.append(resource)
|
||||
elif resource.name in self.policy.targets and \
|
||||
elif resource.name in self.policy.properties['targets'] and \
|
||||
resource.type != 'OS::Senlin::Policy':
|
||||
props = {}
|
||||
del resource.properties['user_data_format']
|
||||
@ -155,11 +155,11 @@ class ToscaClusterAutoscaling(HotResource):
|
||||
resources.remove(remove_resource)
|
||||
|
||||
for index, resource in enumerate(resources):
|
||||
if resource.name in self.policy.targets:
|
||||
if resource.name in self.policy.properties['targets']:
|
||||
resource.properties['properties']['networks'] = \
|
||||
networks[resource.name]
|
||||
|
||||
for node in self.policy.targets:
|
||||
for node in self.policy.properties['targets']:
|
||||
props = {}
|
||||
props["profile"] = {'get_resource': '%s' % node}
|
||||
temp = self.policy.entity_tpl["properties"]
|
||||
@ -181,7 +181,7 @@ class ToscaClusterAutoscaling(HotResource):
|
||||
entity_tpl['triggers'][trigger]['action']:
|
||||
scale_type = self.policy.\
|
||||
entity_tpl['triggers'][trigger]['action'][action]['type']
|
||||
for node in self.policy.targets:
|
||||
for node in self.policy.properties['targets']:
|
||||
target_cluster_nodes.\
|
||||
append({"get_resource": "%s_cluster" % node})
|
||||
cluster_scale_type = SCALE_TYPE[scale_type]
|
||||
|
@ -28,6 +28,12 @@ ALARM_STATISTIC = {'mean': 'mean', 'median': 'median', 'summary': 'sum',
|
||||
class ToscaMonitoring(HotResource):
|
||||
'''Translate TOSCA node type tosca.policies.Monitoring'''
|
||||
|
||||
# NOTE: This file implements extended conversion logic other than
|
||||
# the section defined at 'tosca.policies.Monitoring' in
|
||||
# TOSCA_definition_1_0.yaml. Therefore, it is necessary to define
|
||||
# and use toscatype that inherits this toscatype with 'derived_from'.
|
||||
# This is because validation fails due to an error that an undefined
|
||||
# key exists when validating using tosca-parser.
|
||||
toscatype = 'tosca.policies.Monitoring'
|
||||
|
||||
def __init__(self, policy, csar_dir=None):
|
||||
|
@ -72,23 +72,23 @@ class ToscaAutoscaling(HotResource):
|
||||
delete_res_names = []
|
||||
scale_res = []
|
||||
for index, resource in enumerate(resources):
|
||||
if resource.name in self.policy.targets and \
|
||||
resource.type != 'OS::Heat::AutoScalingGroup':
|
||||
if resource.type != 'OS::Heat::AutoScalingGroup':
|
||||
temp = self.policy.entity_tpl["properties"]
|
||||
props = {}
|
||||
res = {}
|
||||
res["min_size"] = temp["min_instances"]
|
||||
res["max_size"] = temp["max_instances"]
|
||||
res["desired_capacity"] = temp["default_instances"]
|
||||
res["cooldown"] = temp["cooldown"]
|
||||
props['type'] = resource.type
|
||||
props['properties'] = resource.properties
|
||||
res['resource'] = {'type': self.policy.name + '_res.yaml'}
|
||||
scaling_resources = \
|
||||
HotResource(resource,
|
||||
type='OS::Heat::AutoScalingGroup',
|
||||
name=self.policy.name + '_group',
|
||||
properties=res)
|
||||
if resource.name in temp.get("targets"):
|
||||
props = {}
|
||||
res = {}
|
||||
res["min_size"] = temp["min_instances"]
|
||||
res["max_size"] = temp["max_instances"]
|
||||
res["desired_capacity"] = temp["default_instances"]
|
||||
res["cooldown"] = temp["cooldown"]
|
||||
props['type'] = resource.type
|
||||
props['properties'] = resource.properties
|
||||
res['resource'] = {'type': self.policy.name + '_res.yaml'}
|
||||
scaling_resources = \
|
||||
HotResource(resource,
|
||||
type='OS::Heat::AutoScalingGroup',
|
||||
name=self.policy.name + '_group',
|
||||
properties=res)
|
||||
|
||||
if resource.type not in SCALING_RESOURCES:
|
||||
delete_res_names.append(resource.name)
|
||||
|
@ -3,6 +3,11 @@ tosca_definitions_version: tosca_simple_yaml_1_0
|
||||
description: >
|
||||
Template for deploying servers based on policies.
|
||||
|
||||
imports:
|
||||
- ../custom_types/custom_monitoring.yaml
|
||||
- ../nfv/tacker_defs.yaml
|
||||
- ../nfv/tacker_nfv_defs.yaml
|
||||
|
||||
topology_template:
|
||||
node_templates:
|
||||
my_server_1:
|
||||
@ -22,22 +27,27 @@ topology_template:
|
||||
version: 6.5
|
||||
policies:
|
||||
- asg:
|
||||
type: tosca.policies.Scaling
|
||||
type: tosca.policies.tacker.Scaling
|
||||
description: Simple node autoscaling
|
||||
targets: [my_server_1]
|
||||
triggers:
|
||||
resize_compute:
|
||||
description: trigger
|
||||
condition:
|
||||
constraint: utilization greater_than 50%
|
||||
granularity: 60
|
||||
evaluations: 1
|
||||
aggregation_method: mean
|
||||
resource_type: instance
|
||||
comparison_operator: gt
|
||||
properties:
|
||||
targets: [my_server_1]
|
||||
min_instances: 2
|
||||
max_instances: 10
|
||||
default_instances: 3
|
||||
increment: 1
|
||||
cooldown: 60
|
||||
|
||||
- cpu_monitoring:
|
||||
type: tosca.policies.Monitoring.Custom
|
||||
description: Simple node monitoring
|
||||
triggers:
|
||||
high_cpu_usage:
|
||||
description: trigger
|
||||
metric: cpu_util
|
||||
condition:
|
||||
constraint: utilization greater_than 60%
|
||||
threshold: 60
|
||||
granularity: 600
|
||||
evaluations: 1
|
||||
aggregation_method: mean
|
||||
comparison_operator: gt
|
||||
|
@ -1,64 +1,67 @@
|
||||
tosca_definitions_version: tosca_simple_yaml_1_0
|
||||
|
||||
description: >
|
||||
Template for deploying servers based on policies.
|
||||
|
||||
imports:
|
||||
- ../custom_types/senlin_cluster_policies.yaml
|
||||
|
||||
topology_template:
|
||||
node_templates:
|
||||
my_server_1:
|
||||
type: tosca.nodes.Compute
|
||||
capabilities:
|
||||
host:
|
||||
properties:
|
||||
num_cpus: 2
|
||||
disk_size: 10 GB
|
||||
mem_size: 512 MB
|
||||
os:
|
||||
properties:
|
||||
# host Operating System image properties
|
||||
architecture: x86_64
|
||||
type: Linux
|
||||
distribution: RHEL
|
||||
version: 6.5
|
||||
my_port_1:
|
||||
type: tosca.nodes.network.Port
|
||||
requirements:
|
||||
- link:
|
||||
node: my_network_1
|
||||
- binding:
|
||||
node: my_server_1
|
||||
my_network_1:
|
||||
type: tosca.nodes.network.Network
|
||||
properties:
|
||||
network_name: net0
|
||||
policies:
|
||||
- cluster_scaling:
|
||||
type: tosca.policies.Scaling.Cluster
|
||||
description: Cluster node autoscaling
|
||||
targets: [my_server_1]
|
||||
triggers:
|
||||
scale_out:
|
||||
description: trigger
|
||||
event_type:
|
||||
type: tosca.events.resource.cpu.utilization
|
||||
metric: cpu_util
|
||||
implementation: Ceilometer
|
||||
condition:
|
||||
constraint: utilization greater_than 50%
|
||||
granularity: 60
|
||||
evaluations: 1
|
||||
aggregation_method: mean
|
||||
resource_type: instance
|
||||
comparison_operator: gt
|
||||
action:
|
||||
scale_out:
|
||||
type: SCALE_OUT
|
||||
implementation: Senlin.webhook
|
||||
properties:
|
||||
min_instances: 2
|
||||
max_instances: 10
|
||||
default_instances: 3
|
||||
increment: 1
|
||||
tosca_definitions_version: tosca_simple_yaml_1_0
|
||||
|
||||
description: >
|
||||
Template for deploying servers based on policies.
|
||||
|
||||
imports:
|
||||
- ../custom_types/senlin_cluster_policies.yaml
|
||||
- ../nfv/tacker_defs.yaml
|
||||
- ../nfv/tacker_nfv_defs.yaml
|
||||
|
||||
topology_template:
|
||||
node_templates:
|
||||
my_server_1:
|
||||
type: tosca.nodes.Compute
|
||||
capabilities:
|
||||
host:
|
||||
properties:
|
||||
num_cpus: 2
|
||||
disk_size: 10 GB
|
||||
mem_size: 512 MB
|
||||
os:
|
||||
properties:
|
||||
# host Operating System image properties
|
||||
architecture: x86_64
|
||||
type: Linux
|
||||
distribution: RHEL
|
||||
version: 6.5
|
||||
my_port_1:
|
||||
type: tosca.nodes.network.Port
|
||||
requirements:
|
||||
- link:
|
||||
node: my_network_1
|
||||
- binding:
|
||||
node: my_server_1
|
||||
my_network_1:
|
||||
type: tosca.nodes.network.Network
|
||||
properties:
|
||||
network_name: net0
|
||||
policies:
|
||||
- cluster_scaling:
|
||||
type: tosca.policies.Scaling.Cluster
|
||||
description: Cluster node autoscaling
|
||||
properties:
|
||||
targets: [my_server_1]
|
||||
min_instances: 2
|
||||
max_instances: 10
|
||||
default_instances: 3
|
||||
increment: 1
|
||||
cooldown: 60
|
||||
triggers:
|
||||
scale_out:
|
||||
description: trigger
|
||||
event_type:
|
||||
type: tosca.events.resource.cpu.utilization
|
||||
metric: cpu_util
|
||||
implementation: Ceilometer
|
||||
condition:
|
||||
constraint: utilization greater_than 50%
|
||||
granularity: 60
|
||||
evaluations: 1
|
||||
aggregation_method: mean
|
||||
resource_type: instance
|
||||
comparison_operator: gt
|
||||
action:
|
||||
scale_out:
|
||||
type: SCALE_OUT
|
||||
implementation: Senlin.webhook
|
||||
|
31
translator/tests/data/custom_types/custom_monitoring.yaml
Normal file
31
translator/tests/data/custom_types/custom_monitoring.yaml
Normal file
@ -0,0 +1,31 @@
|
||||
tosca_definitions_version: tosca_simple_yaml_1_0
|
||||
|
||||
description: >
|
||||
The TOSCA Policy Type definition that is used to expand
|
||||
the monitoring policy.
|
||||
|
||||
policy_types:
|
||||
tosca.policies.Monitoring.Custom:
|
||||
derived_from: tosca.policies.Monitoring
|
||||
description: The TOSCA Policy Type definition that is used to expand
|
||||
the monitoring policy.
|
||||
triggers:
|
||||
resize_compute:
|
||||
event_type:
|
||||
type: map
|
||||
entry_schema:
|
||||
type: string
|
||||
required: true
|
||||
metrics:
|
||||
type: string
|
||||
required: true
|
||||
condition:
|
||||
type: map
|
||||
entry_schema:
|
||||
type: string
|
||||
required: false
|
||||
action:
|
||||
type: map
|
||||
entry_schema:
|
||||
type: string
|
||||
required: true
|
@ -1,11 +1,35 @@
|
||||
tosca_definitions_version: tosca_simple_yaml_1_0
|
||||
|
||||
description: >
|
||||
The TOSCA Policy Type definition that is used to govern
|
||||
Senlin Policy of TOSCA nodes or groups of nodes
|
||||
|
||||
policy_types:
|
||||
tosca.policies.Scaling.Cluster:
|
||||
derived_from: tosca.policies.Scaling
|
||||
description: The TOSCA Policy Type definition that is used to govern
|
||||
scaling of TOSCA nodes or groups of nodes.
|
||||
tosca_definitions_version: tosca_simple_yaml_1_0
|
||||
|
||||
description: >
|
||||
The TOSCA Policy Type definition that is used to govern
|
||||
Senlin Policy of TOSCA nodes or groups of nodes
|
||||
|
||||
imports:
|
||||
- ../nfv/tacker_defs.yaml
|
||||
- ../nfv/tacker_nfv_defs.yaml
|
||||
|
||||
policy_types:
|
||||
tosca.policies.Scaling.Cluster:
|
||||
derived_from: tosca.policies.tacker.Scaling
|
||||
description: The TOSCA Policy Type definition that is used to govern
|
||||
scaling of TOSCA nodes or groups of nodes.
|
||||
triggers:
|
||||
resize_compute:
|
||||
event_type:
|
||||
type: map
|
||||
entry_schema:
|
||||
type: string
|
||||
required: true
|
||||
metrics:
|
||||
type: string
|
||||
required: true
|
||||
condition:
|
||||
type: map
|
||||
entry_schema:
|
||||
type: string
|
||||
required: false
|
||||
action:
|
||||
type: map
|
||||
entry_schema:
|
||||
type: string
|
||||
required: true
|
||||
|
@ -30,14 +30,15 @@ resources:
|
||||
adjustment_type: change_in_capacity
|
||||
scaling_adjustment: -1
|
||||
cooldown: 60
|
||||
asg_alarm:
|
||||
high_cpu_usage:
|
||||
type: OS::Aodh::GnocchiAggregationByResourcesAlarm
|
||||
properties:
|
||||
metric: cpu_util
|
||||
description: Simple node autoscaling
|
||||
granularity: 60
|
||||
description: utilization greater_than 60%
|
||||
evaluation_periods: 1
|
||||
granularity: 600
|
||||
aggregation_method: mean
|
||||
threshold: 1
|
||||
threshold: 60
|
||||
resource_type: instance
|
||||
comparison_operator: gt
|
||||
outputs: {}
|
||||
|
@ -3,6 +3,11 @@ tosca_definitions_version: tosca_simple_yaml_1_0
|
||||
description: >
|
||||
Template for deploying servers based on policies.
|
||||
|
||||
imports:
|
||||
- ../custom_types/custom_monitoring.yaml
|
||||
- ../nfv/tacker_defs.yaml
|
||||
- ../nfv/tacker_nfv_defs.yaml
|
||||
|
||||
topology_template:
|
||||
node_templates:
|
||||
my_server_1:
|
||||
@ -22,10 +27,10 @@ topology_template:
|
||||
version: 6.5
|
||||
policies:
|
||||
- asg:
|
||||
type: tosca.policies.Scaling
|
||||
type: tosca.policies.tacker.Scaling
|
||||
description: Simple node autoscaling
|
||||
targets: [my_server_1]
|
||||
properties:
|
||||
targets: [my_server_1]
|
||||
min_instances: 2
|
||||
max_instances: 10
|
||||
default_instances: 3
|
||||
@ -33,9 +38,8 @@ topology_template:
|
||||
cooldown: 60
|
||||
|
||||
- cpu_monitoring:
|
||||
type: tosca.policies.Monitoring
|
||||
type: tosca.policies.Monitoring.Custom
|
||||
description: Simple node monitoring
|
||||
targets: [my_server_1]
|
||||
triggers:
|
||||
high_cpu_usage:
|
||||
description: trigger
|
||||
|
@ -58,8 +58,8 @@ topology_template:
|
||||
policies:
|
||||
- SP1:
|
||||
type: tosca.policies.tacker.Scaling
|
||||
targets: [VDU1, VDU2]
|
||||
properties:
|
||||
targets: [VDU1, VDU2]
|
||||
increment: 1
|
||||
cooldown: 120
|
||||
min_instances: 1
|
||||
|
@ -1,94 +1,94 @@
|
||||
tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0
|
||||
|
||||
description: Demo example
|
||||
|
||||
imports:
|
||||
- tacker_defs.yaml
|
||||
- tacker_nfv_defs.yaml
|
||||
|
||||
metadata:
|
||||
template_name: sample-tosca-vnfd
|
||||
|
||||
topology_template:
|
||||
inputs:
|
||||
image_name:
|
||||
type: string
|
||||
description: Image Name
|
||||
|
||||
flavor:
|
||||
type: string
|
||||
description: Flavor Information
|
||||
|
||||
node_templates:
|
||||
VDU1:
|
||||
type: tosca.nodes.nfv.VDU.Tacker
|
||||
properties:
|
||||
image: { get_input: image_name }
|
||||
flavor: { get_input: flavor }
|
||||
mgmt_driver: noop
|
||||
availability_zone: nova
|
||||
metadata: {metering.server_group: SG1}
|
||||
|
||||
CP1:
|
||||
type: tosca.nodes.nfv.CP.Tacker
|
||||
properties:
|
||||
management: true
|
||||
anti_spoofing_protection: false
|
||||
requirements:
|
||||
- virtualLink:
|
||||
node: VL1
|
||||
- virtualBinding:
|
||||
node: VDU1
|
||||
|
||||
VL1:
|
||||
type: tosca.nodes.nfv.VL
|
||||
properties:
|
||||
network_name: net_mgmt
|
||||
vendor: Tacker
|
||||
|
||||
policies:
|
||||
- SP:
|
||||
type: tosca.policies.tacker.Scaling
|
||||
targets: [VDU1]
|
||||
properties:
|
||||
increment: 1
|
||||
cooldown: 120
|
||||
min_instances: 1
|
||||
max_instances: 3
|
||||
default_instances: 1
|
||||
|
||||
- vdu_cpu_usage_monitoring_policy:
|
||||
type: tosca.policies.tacker.Alarming
|
||||
triggers:
|
||||
vdu_hcpu_usage_scaling_out:
|
||||
event_type:
|
||||
type: tosca.events.resource.utilization
|
||||
implementation: ceilometer
|
||||
metric: cpu_util
|
||||
condition:
|
||||
threshold: 80
|
||||
constraint: utilization greater_than 80%
|
||||
granularity: 60
|
||||
evaluations: 1
|
||||
aggregation_method: mean
|
||||
resource_type: instance
|
||||
comparison_operator: gt
|
||||
metadata: SG1
|
||||
action: [SP]
|
||||
|
||||
vdu_lcpu_usage_scaling_in:
|
||||
event_type:
|
||||
type: tosca.events.resource.utilization
|
||||
implementation: ceilometer
|
||||
metric: cpu_util
|
||||
condition:
|
||||
threshold: 10
|
||||
constraint: utilization less_than 10%
|
||||
granularity: 60
|
||||
evaluations: 1
|
||||
aggregation_method: mean
|
||||
resource_type: instance
|
||||
comparison_operator: lt
|
||||
metadata: SG1
|
||||
action: [SP]
|
||||
|
||||
tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0
|
||||
|
||||
description: Demo example
|
||||
|
||||
imports:
|
||||
- tacker_defs.yaml
|
||||
- tacker_nfv_defs.yaml
|
||||
|
||||
metadata:
|
||||
template_name: sample-tosca-vnfd
|
||||
|
||||
topology_template:
|
||||
inputs:
|
||||
image_name:
|
||||
type: string
|
||||
description: Image Name
|
||||
|
||||
flavor:
|
||||
type: string
|
||||
description: Flavor Information
|
||||
|
||||
node_templates:
|
||||
VDU1:
|
||||
type: tosca.nodes.nfv.VDU.Tacker
|
||||
properties:
|
||||
image: { get_input: image_name }
|
||||
flavor: { get_input: flavor }
|
||||
mgmt_driver: noop
|
||||
availability_zone: nova
|
||||
metadata: {metering.server_group: SG1}
|
||||
|
||||
CP1:
|
||||
type: tosca.nodes.nfv.CP.Tacker
|
||||
properties:
|
||||
management: true
|
||||
anti_spoofing_protection: false
|
||||
requirements:
|
||||
- virtualLink:
|
||||
node: VL1
|
||||
- virtualBinding:
|
||||
node: VDU1
|
||||
|
||||
VL1:
|
||||
type: tosca.nodes.nfv.VL
|
||||
properties:
|
||||
network_name: net_mgmt
|
||||
vendor: Tacker
|
||||
|
||||
policies:
|
||||
- SP:
|
||||
type: tosca.policies.tacker.Scaling
|
||||
properties:
|
||||
targets: [VDU1]
|
||||
increment: 1
|
||||
cooldown: 120
|
||||
min_instances: 1
|
||||
max_instances: 3
|
||||
default_instances: 1
|
||||
|
||||
- vdu_cpu_usage_monitoring_policy:
|
||||
type: tosca.policies.tacker.Alarming
|
||||
triggers:
|
||||
vdu_hcpu_usage_scaling_out:
|
||||
event_type:
|
||||
type: tosca.events.resource.utilization
|
||||
implementation: ceilometer
|
||||
metric: cpu_util
|
||||
condition:
|
||||
threshold: 80
|
||||
constraint: utilization greater_than 80%
|
||||
granularity: 60
|
||||
evaluations: 1
|
||||
aggregation_method: mean
|
||||
resource_type: instance
|
||||
comparison_operator: gt
|
||||
metadata: SG1
|
||||
action: [SP]
|
||||
|
||||
vdu_lcpu_usage_scaling_in:
|
||||
event_type:
|
||||
type: tosca.events.resource.utilization
|
||||
implementation: ceilometer
|
||||
metric: cpu_util
|
||||
condition:
|
||||
threshold: 10
|
||||
constraint: utilization less_than 10%
|
||||
granularity: 60
|
||||
evaluations: 1
|
||||
aggregation_method: mean
|
||||
resource_type: instance
|
||||
comparison_operator: lt
|
||||
metadata: SG1
|
||||
action: [SP]
|
||||
|
||||
|
@ -57,4 +57,4 @@ topology_template:
|
||||
min_instances: 0
|
||||
max_instances: 3
|
||||
default_instances: 0
|
||||
targets: [VDU1]
|
||||
targets: [VDU1]
|
||||
|
Loading…
Reference in New Issue
Block a user