Commit f6315c3c authored by Lluis Gifre Renom's avatar Lluis Gifre Renom
Browse files

Slice Component:

- Added logic to manage endpoints, constraints and config rules in Slice Grouping
parent d34a33b9
Loading
Loading
Loading
Loading
+35 −11
Original line number Diff line number Diff line
@@ -115,11 +115,25 @@ def add_slice_to_group(slice_obj : Slice, selected_group : Tuple[str, float, flo
    if slice_group_obj is None:
        raise NotFoundException('Slice', group_name, extra_details='while adding to group')

    for subslice_id in slice_group_obj.slice_subslice_ids:
        if subslice_id == slice_obj.slice_id: break # already added
    else:
    del slice_group_obj.slice_endpoint_ids[:]
    for endpoint_id in slice_obj.slice_endpoint_ids:
        slice_group_obj.slice_endpoint_ids.add().CopyFrom(endpoint_id)

    del slice_group_obj.slice_constraints[:]
    del slice_group_obj.slice_service_ids[:]

    del slice_group_obj.slice_subslice_ids[:]
    slice_group_obj.slice_subslice_ids.add().CopyFrom(slice_obj.slice_id)
        # TODO: add other logic, such as re-configure parent slice

    del slice_group_obj.slice_config.config_rules[:]
    for config_rule in slice_obj.slice_config.config_rules:
        group_config_rule = slice_group_obj.slice_config.config_rules.add()
        group_config_rule.CopyFrom(config_rule)
        if config_rule.WhichOneof('config_rule') != 'custom': continue
        TEMPLATE = '/subslice[{:s}]{:s}'
        slice_resource_key = config_rule.custom.resource_key
        group_resource_key = TEMPLATE.format(slice_uuid, slice_resource_key)
        group_config_rule.custom.resource_key = group_resource_key

    context_client.SetSlice(slice_group_obj)

@@ -139,13 +153,23 @@ def remove_slice_from_group(slice_obj : Slice, selected_group : Tuple[str, float
        raise NotFoundException('Slice', group_name, extra_details='while removing from group')

    if slice_obj.slice_id in slice_group_obj.slice_subslice_ids:
        slice_group_obj.slice_subslice_ids.remove(slice_obj.slice_id)
        # TODO: other logic, such as deconfigure parent slice

        tmp_slice_group_obj = Slice()
        tmp_slice_group_obj.slice_id.CopyFrom(slice_group_obj.slice_id)             # pylint: disable=no-member
        slice_subslice_id = tmp_slice_group_obj.slice_subslice_ids.add() # pylint: disable=no-member
        slice_subslice_id.CopyFrom(slice_obj.slice_id)

        tmp_slice_group_obj.slice_subslice_ids.add().CopyFrom(slice_obj.slice_id)   # pylint: disable=no-member

        for endpoint_id in slice_obj.slice_endpoint_ids:
            tmp_slice_group_obj.slice_endpoint_ids.add().CopyFrom(endpoint_id)      # pylint: disable=no-member

        for config_rule in slice_obj.slice_config.config_rules:
            group_config_rule = tmp_slice_group_obj.slice_config.config_rules.add() # pylint: disable=no-member
            group_config_rule.CopyFrom(config_rule)
            if group_config_rule.WhichOneof('config_rule') != 'custom': continue
            TEMPLATE = '/subslice[{:s}]{:s}'
            slice_resource_key = group_config_rule.custom.resource_key
            group_resource_key = TEMPLATE.format(slice_uuid, slice_resource_key)
            group_config_rule.custom.resource_key = group_resource_key

        context_client.UnsetSlice(tmp_slice_group_obj)

    metrics_exporter = MetricsExporter()