[WIP] Set different number of instances for same delta and aspectId.
As per SOL001(*1) "A.6.1 ScalingAspect and InstantiationLevels policies with uniform delta",number_of_instance of deltas in `VduScalingAspectDeltas`is able to have different value even if aspect_id and delta_id.This patch fixes the code which was earlier overwriting the value for same aspect and delta id. Closes-Bug: 1906779 Change-Id: Ic28b5748c8d63d943218d0ac524dcbcfdc06366a
This commit is contained in:
parent
433d9b3425
commit
35509e35e0
|
@ -863,8 +863,22 @@ def _extract_policy_info(tosca_policies, inst_level_dict,
|
||||||
delta_id_dict = {}
|
delta_id_dict = {}
|
||||||
for delta_id, delta_val in deltas.items():
|
for delta_id, delta_val in deltas.items():
|
||||||
delta_num = delta_val['number_of_instances']
|
delta_num = delta_val['number_of_instances']
|
||||||
delta_id_dict[delta_id] = delta_num
|
vdu_delta_dict = {vdu_list[0]: delta_num}
|
||||||
aspect_delta_dict[aspect_id] = delta_id_dict
|
delta_id_dict[delta_id] = vdu_delta_dict
|
||||||
|
|
||||||
|
if aspect_id in aspect_delta_dict:
|
||||||
|
existing_delta_id_dict = aspect_delta_dict[aspect_id]
|
||||||
|
if delta_id in existing_delta_id_dict:
|
||||||
|
existing_delta_id_dict[delta_id].update(
|
||||||
|
delta_id_dict[delta_id])
|
||||||
|
else:
|
||||||
|
aspect_delta_dict[aspect_id].update(delta_id_dict)
|
||||||
|
else:
|
||||||
|
aspect_delta_dict[aspect_id] = delta_id_dict
|
||||||
|
|
||||||
|
if aspect_id in aspect_vdu_dict:
|
||||||
|
existing_vdu_list = aspect_vdu_dict[aspect_id]
|
||||||
|
vdu_list.extend(existing_vdu_list)
|
||||||
aspect_vdu_dict[aspect_id] = vdu_list
|
aspect_vdu_dict[aspect_id] = vdu_list
|
||||||
|
|
||||||
elif p.type == ETSI_INST_LEVEL:
|
elif p.type == ETSI_INST_LEVEL:
|
||||||
|
@ -910,16 +924,15 @@ def _convert_desired_capacity(inst_level_id, inst_level_dict,
|
||||||
for aspect_id, level_num in al_dict.items():
|
for aspect_id, level_num in al_dict.items():
|
||||||
delta_id = aspect_id_dict.get(aspect_id)
|
delta_id = aspect_id_dict.get(aspect_id)
|
||||||
|
|
||||||
# Get delta_num.
|
|
||||||
if delta_id is not None:
|
|
||||||
delta_num = \
|
|
||||||
aspect_delta_dict.get(aspect_id).get(delta_id)
|
|
||||||
|
|
||||||
# Get initial_delta.
|
# Get initial_delta.
|
||||||
vdus = aspect_vdu_dict.get(aspect_id)
|
vdus = aspect_vdu_dict.get(aspect_id)
|
||||||
initial_delta = None
|
initial_delta = None
|
||||||
for vdu in vdus:
|
for vdu in vdus:
|
||||||
initial_delta = vdu_delta_dict.get(vdu)
|
initial_delta = vdu_delta_dict.get(vdu)
|
||||||
|
# Get delta_num.
|
||||||
|
if delta_id is not None:
|
||||||
|
delta_num = \
|
||||||
|
aspect_delta_dict.get(aspect_id).get(delta_id).get(vdu)
|
||||||
|
|
||||||
if initial_delta is not None:
|
if initial_delta is not None:
|
||||||
# Calculate desired_capacity.
|
# Calculate desired_capacity.
|
||||||
|
|
|
@ -1148,7 +1148,7 @@ def _convert_desired_capacity(inst_level_id, vnfd_dict, vdu):
|
||||||
|
|
||||||
if delta_id is not None:
|
if delta_id is not None:
|
||||||
delta_num = \
|
delta_num = \
|
||||||
aspect_delta_dict.get(aspect_id).get(delta_id)
|
aspect_delta_dict.get(aspect_id).get(delta_id).get(vdu)
|
||||||
|
|
||||||
vdus = aspect_vdu_dict.get(aspect_id)
|
vdus = aspect_vdu_dict.get(aspect_id)
|
||||||
initial_delta = None
|
initial_delta = None
|
||||||
|
|
|
@ -1212,6 +1212,7 @@ class Kubernetes(abstract_driver.VnfAbstractDriver,
|
||||||
auth=auth_cred)
|
auth=auth_cred)
|
||||||
aspect_id = policy['name']
|
aspect_id = policy['name']
|
||||||
vdu_defs = policy['vdu_defs']
|
vdu_defs = policy['vdu_defs']
|
||||||
|
vdu_name = None
|
||||||
is_found = False
|
is_found = False
|
||||||
error_reason = None
|
error_reason = None
|
||||||
target_kinds = ["Deployment", "ReplicaSet", "StatefulSet"]
|
target_kinds = ["Deployment", "ReplicaSet", "StatefulSet"]
|
||||||
|
@ -1227,6 +1228,7 @@ class Kubernetes(abstract_driver.VnfAbstractDriver,
|
||||||
for vdu_id, vdu_def in vdu_defs.items():
|
for vdu_id, vdu_def in vdu_defs.items():
|
||||||
vdu_properties = vdu_def.get('properties')
|
vdu_properties = vdu_def.get('properties')
|
||||||
if name == vdu_properties.get('name'):
|
if name == vdu_properties.get('name'):
|
||||||
|
vdu_name = vdu_properties.get('name')
|
||||||
namespace = vnf_resource.resource_name.\
|
namespace = vnf_resource.resource_name.\
|
||||||
split(COMMA_CHARACTER)[0]
|
split(COMMA_CHARACTER)[0]
|
||||||
if not namespace:
|
if not namespace:
|
||||||
|
@ -1253,10 +1255,20 @@ class Kubernetes(abstract_driver.VnfAbstractDriver,
|
||||||
|
|
||||||
current_replicas = scale_info.status.replicas
|
current_replicas = scale_info.status.replicas
|
||||||
vdu_profile = vdu_properties.get('vdu_profile')
|
vdu_profile = vdu_properties.get('vdu_profile')
|
||||||
|
|
||||||
|
delta_num = 1
|
||||||
|
if isinstance(policy['delta_num'], dict):
|
||||||
|
delta_num = policy['delta_num'].get(vdu_name)
|
||||||
|
else:
|
||||||
|
delta_num = policy['delta_num']
|
||||||
|
|
||||||
|
if delta_num is None or not isinstance(delta_num,int):
|
||||||
|
delta_num = 1
|
||||||
|
|
||||||
if policy['action'] == 'out':
|
if policy['action'] == 'out':
|
||||||
scale_replicas = current_replicas + policy['delta_num']
|
scale_replicas = current_replicas + delta_num
|
||||||
elif policy['action'] == 'in':
|
elif policy['action'] == 'in':
|
||||||
scale_replicas = current_replicas - policy['delta_num']
|
scale_replicas = current_replicas - delta_num
|
||||||
|
|
||||||
max_replicas = vdu_profile.get('max_number_of_instances')
|
max_replicas = vdu_profile.get('max_number_of_instances')
|
||||||
min_replicas = vdu_profile.get('min_number_of_instances')
|
min_replicas = vdu_profile.get('min_number_of_instances')
|
||||||
|
|
Loading…
Reference in New Issue