def divide_by_priority()

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