in src/services/resize_service.py [0:0]
def divide_by_priority(self, sizes, cloud, current_shape: Shape,
resize_action,
parent_meta: ParentMeta = None,
forbid_change_series=True,
forbid_change_family=True):
current_size_name = current_shape.name
current_series_prefix = self.get_series_prefix(
shape_name=current_size_name, cloud=cloud)
prioritised = []
if parent_meta:
shape_rules = parent_meta.shape_rules
if shape_rules:
prioritised = self.customer_preferences_service. \
process_priority_filters(
instances_data=sizes,
shape_rules=shape_rules
)
if resize_action == ACTION_SPLIT: # if its split action,
# allow to use same shape
same_series = self.get_same_series(
sizes=sizes,
series_prefix=current_series_prefix)
else:
same_series = self.get_same_series(
sizes=sizes,
series_prefix=current_series_prefix,
exclude_shape_names=(current_size_name,))
same_series_shape_names = [i['name'] for i in same_series]
same_family = []
if not forbid_change_series:
same_family = self.get_same_family(
sizes=sizes,
cloud=cloud,
current_shape=current_shape,
exclude_shapes=same_series_shape_names
)
same_family_shape_names = [i['name'] for i in same_family]
other_shapes = []
if not forbid_change_series and not forbid_change_family:
other_shapes = self._get_other_shapes(
sizes=sizes,
exclude_shapes=same_series_shape_names + same_family_shape_names)
return prioritised, same_series, same_family, other_shapes