def divide_by_priority()

in docker/services/resize/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
            _LOG.debug(f'Filtering shape rules for cloud: {cloud}')
            shape_rules = [rule for rule in shape_rules
                           if rule.get(CLOUD_ATTR) == cloud]
            _LOG.debug(f'Rule to apply: {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