Commit 8b24430d authored by Konstantinos Poulakakis's avatar Konstantinos Poulakakis
Browse files

refactor: Refactor addPolicyService function on separate sub functions for more clean code.

parent ddf485fe
Loading
Loading
Loading
Loading
+110 −72
Original line number Diff line number Diff line
@@ -38,6 +38,7 @@ import org.etsi.tfs.policy.context.model.Constraint;
import org.etsi.tfs.policy.context.model.ConstraintCustom;
import org.etsi.tfs.policy.context.model.ConstraintTypeCustom;
import org.etsi.tfs.policy.context.model.ServiceConfig;
import org.etsi.tfs.policy.context.model.ServiceId;
import org.etsi.tfs.policy.device.DeviceService;
import org.etsi.tfs.policy.model.BooleanOperator;
import org.etsi.tfs.policy.model.PolicyRule;
@@ -176,12 +177,21 @@ public class PolicyServiceImpl implements PolicyService {
        return isServiceValid
                .onItem()
                .transform(
                        isService -> {
                        isService ->
                                 constructPolicyStateBasedOnCriteria(
                                        isService, serviceId, policyRuleService, policyRuleBasic));
    }

    private PolicyRuleState constructPolicyStateBasedOnCriteria(
            Boolean isService,
            ServiceId serviceId,
            PolicyRuleService policyRuleService,
            PolicyRuleBasic policyRuleBasic) {

        if (!isService) {
            var policyRuleState =
                    new PolicyRuleState(
                                                PolicyRuleStateEnum.POLICY_FAILED,
                                                String.format(INVALID_MESSAGE, serviceId));
                            PolicyRuleStateEnum.POLICY_FAILED, String.format(INVALID_MESSAGE, serviceId));

            return policyRuleState;
        }
@@ -198,48 +208,38 @@ public class PolicyServiceImpl implements PolicyService {
                                    "Invalid PolicyRuleConditions in PolicyRule with ID: %s",
                                    policyRuleBasic.getPolicyRuleId()));
            return policyRuleState;
                            } else {
        }

        return setPolicyRuleOnContextAndReturnState(policyRule, policyRuleService, alarmDescriptorList);
    }

    private PolicyRuleState setPolicyRuleOnContextAndReturnState(
            PolicyRule policyRule,
            PolicyRuleService policyRuleService,
            List<AlarmDescriptor> alarmDescriptorList) {
        contextService
                .setPolicyRule(policyRule)
                .subscribe()
                                        .with(
                                                policyId -> {
                                                    setPolicyRuleServiceToContext(
                                                            policyRuleService, VALIDATED_POLICYRULE_STATE);
                .with(policyId -> startMonitoringBasedOnAlarmDescriptors(policyId, policyRuleService, alarmDescriptorList));
        return VALIDATED_POLICYRULE_STATE;
    }

    private void startMonitoringBasedOnAlarmDescriptors(
            String policyId,
            PolicyRuleService policyRuleService,
            List<AlarmDescriptor> alarmDescriptorList) {
        setPolicyRuleServiceToContext(policyRuleService, VALIDATED_POLICYRULE_STATE);
        noAlarms = 0;

                                                    // Create an alarmIds list that contains the promised ids returned from
                                                    // setKpiAlarm
                                                    List<Uni<String>> alarmIds = new ArrayList<Uni<String>>();
                                                    for (AlarmDescriptor alarmDescriptor : alarmDescriptorList) {
                                                        LOGGER.infof("alarmDescriptor:");
                                                        LOGGER.infof(alarmDescriptor.toString());
                                                        alarmIds.add(monitoringService.setKpiAlarm(alarmDescriptor));
                                                    }
                                                    // Transform the alarmIds into promised alarms returned from the
                                                    // getAlarmResponseStream
                                                    List<Multi<AlarmResponse>> alarmResponseStreamList = new ArrayList<>();
                                                    for (Uni<String> alarmId : alarmIds) {
                                                        alarmResponseStreamList.add(
                                                                alarmId
                                                                        .onItem()
                                                                        .transformToMulti(
                                                                                id -> {
                                                                                    alarmPolicyRuleServiceMap.put(id, policyRuleService);
        List<Uni<String>> alarmIds =
                createAlarmList(alarmDescriptorList); // setAllarmtomonitoring get back alarmid

                                                                                    // TODO: Create infinite subscription
                                                                                    var alarmSubscription =
                                                                                            new AlarmSubscription(id, 259200, 5000);
                                                                                    return monitoringService.getAlarmResponseStream(
                                                                                            alarmSubscription);
                                                                                }));
                                                    }
        List<Multi<AlarmResponse>> alarmResponseStreamList =
                transformAlarmIds(alarmIds, policyRuleService);

        // Merge the promised alarms into one stream (Multi Object)
                                                    final var multi =
                                                            Multi.createBy().merging().streams(alarmResponseStreamList);
                                                    setPolicyRuleServiceToContext(
                                                            policyRuleService, PROVISIONED_POLICYRULE_STATE);
        final var multi = Multi.createBy().merging().streams(alarmResponseStreamList);
        setPolicyRuleServiceToContext(policyRuleService, PROVISIONED_POLICYRULE_STATE);

        subscriptionList.put(policyId, monitorAlarmResponseForService(multi));

@@ -247,10 +247,48 @@ public class PolicyServiceImpl implements PolicyService {

        // TODO: Redesign evaluation of action
        // evaluateAction(policyRule, alarmDescriptorList, multi);
                                                });
                                return VALIDATED_POLICYRULE_STATE;
    }
                        });

    /**
    * Transform the alarmIds into promised alarms returned from the getAlarmResponseStream
    *
    * @param alarmIds the list of alarm ids
    * @param policyRuleService the policy rule service
    * @return
    */
    private List<Multi<AlarmResponse>> transformAlarmIds(List<Uni<String>> alarmIds, PolicyRuleService policyRuleService) {
        List<Multi<AlarmResponse>> alarmResponseStreamList = new ArrayList<>();
        for (Uni<String> alarmId : alarmIds) {
            Multi<AlarmResponse> alarmResponseStream =
                    alarmId.onItem().transformToMulti(id -> setPolicyMonitor(policyRuleService, id));

            alarmResponseStreamList.add(alarmResponseStream);
        }
        return alarmResponseStreamList;
    }

    private Multi<AlarmResponse> setPolicyMonitor(PolicyRuleService policyRuleService, String id) {
        alarmPolicyRuleServiceMap.put(id, policyRuleService);

        // TODO: Create infinite subscription
        var alarmSubscription = new AlarmSubscription(id, 259200, 5000);
        return monitoringService.getAlarmResponseStream(alarmSubscription);
    }

    /**
    * Create an alarmIds list that contains the promised ids returned from setKpiAlarm
    *
    * @param alarmDescriptorList the list of alarm descriptors
    * @return the list of alarm descriptors
    */
    public List<Uni<String>> createAlarmList(List<AlarmDescriptor> alarmDescriptorList) {
        List<Uni<String>> alarmIds = new ArrayList<Uni<String>>();
        for (AlarmDescriptor alarmDescriptor : alarmDescriptorList) {
            LOGGER.infof("alarmDescriptor:");
            LOGGER.infof(alarmDescriptor.toString());
            alarmIds.add(monitoringService.setKpiAlarm(alarmDescriptor));
        }
        return alarmIds;
    }

    @Override
+122 −102
Original line number Diff line number Diff line
@@ -185,6 +185,10 @@ public final class ContextOuterClass {
     * <code>DEVICEDRIVER_GNMI_OPENCONFIG = 8;</code>
     */
    DEVICEDRIVER_GNMI_OPENCONFIG(8),
    /**
     * <code>DEVICEDRIVER_FLEXSCALE = 9;</code>
     */
    DEVICEDRIVER_FLEXSCALE(9),
    UNRECOGNIZED(-1),
    ;
@@ -228,6 +232,10 @@ public final class ContextOuterClass {
     * <code>DEVICEDRIVER_GNMI_OPENCONFIG = 8;</code>
     */
    public static final int DEVICEDRIVER_GNMI_OPENCONFIG_VALUE = 8;
    /**
     * <code>DEVICEDRIVER_FLEXSCALE = 9;</code>
     */
    public static final int DEVICEDRIVER_FLEXSCALE_VALUE = 9;
    public final int getNumber() {
@@ -263,6 +271,7 @@ public final class ContextOuterClass {
        case 6: return DEVICEDRIVER_XR;
        case 7: return DEVICEDRIVER_IETF_L2VPN;
        case 8: return DEVICEDRIVER_GNMI_OPENCONFIG;
        case 9: return DEVICEDRIVER_FLEXSCALE;
        default: return null;
      }
    }
@@ -461,6 +470,10 @@ public final class ContextOuterClass {
     * <code>SERVICETYPE_TE = 4;</code>
     */
    SERVICETYPE_TE(4),
    /**
     * <code>SERVICETYPE_E2E = 5;</code>
     */
    SERVICETYPE_E2E(5),
    UNRECOGNIZED(-1),
    ;
@@ -484,6 +497,10 @@ public final class ContextOuterClass {
     * <code>SERVICETYPE_TE = 4;</code>
     */
    public static final int SERVICETYPE_TE_VALUE = 4;
    /**
     * <code>SERVICETYPE_E2E = 5;</code>
     */
    public static final int SERVICETYPE_E2E_VALUE = 5;
    public final int getNumber() {
@@ -515,6 +532,7 @@ public final class ContextOuterClass {
        case 2: return SERVICETYPE_L2NM;
        case 3: return SERVICETYPE_TAPI_CONNECTIVITY_SERVICE;
        case 4: return SERVICETYPE_TE;
        case 5: return SERVICETYPE_E2E;
        default: return null;
      }
    }
@@ -75826,114 +75844,116 @@ public final class ContextOuterClass {
      "\0132\022.context.ContextId\022\025\n\rauthenticated\030\002" +
      " \001(\010*j\n\rEventTypeEnum\022\027\n\023EVENTTYPE_UNDEF" +
      "INED\020\000\022\024\n\020EVENTTYPE_CREATE\020\001\022\024\n\020EVENTTYP" +
      "E_UPDATE\020\002\022\024\n\020EVENTTYPE_REMOVE\020\003*\231\002\n\020Dev" +
      "E_UPDATE\020\002\022\024\n\020EVENTTYPE_REMOVE\020\003*\265\002\n\020Dev" +
      "iceDriverEnum\022\032\n\026DEVICEDRIVER_UNDEFINED\020" +
      "\000\022\033\n\027DEVICEDRIVER_OPENCONFIG\020\001\022\036\n\032DEVICE" +
      "DRIVER_TRANSPORT_API\020\002\022\023\n\017DEVICEDRIVER_P" +
      "4\020\003\022&\n\"DEVICEDRIVER_IETF_NETWORK_TOPOLOG" +
      "Y\020\004\022\033\n\027DEVICEDRIVER_ONF_TR_532\020\005\022\023\n\017DEVI" +
      "CEDRIVER_XR\020\006\022\033\n\027DEVICEDRIVER_IETF_L2VPN" +
      "\020\007\022 \n\034DEVICEDRIVER_GNMI_OPENCONFIG\020\010*\217\001\n" +
      "\033DeviceOperationalStatusEnum\022%\n!DEVICEOP" +
      "ERATIONALSTATUS_UNDEFINED\020\000\022$\n DEVICEOPE" +
      "RATIONALSTATUS_DISABLED\020\001\022#\n\037DEVICEOPERA" +
      "TIONALSTATUS_ENABLED\020\002*\225\001\n\017ServiceTypeEn" +
      "um\022\027\n\023SERVICETYPE_UNKNOWN\020\000\022\024\n\020SERVICETY" +
      "PE_L3NM\020\001\022\024\n\020SERVICETYPE_L2NM\020\002\022)\n%SERVI" +
      "CETYPE_TAPI_CONNECTIVITY_SERVICE\020\003\022\022\n\016SE" +
      "RVICETYPE_TE\020\004*\304\001\n\021ServiceStatusEnum\022\033\n\027" +
      "SERVICESTATUS_UNDEFINED\020\000\022\031\n\025SERVICESTAT" +
      "US_PLANNED\020\001\022\030\n\024SERVICESTATUS_ACTIVE\020\002\022\032" +
      "\n\026SERVICESTATUS_UPDATING\020\003\022!\n\035SERVICESTA" +
      "TUS_PENDING_REMOVAL\020\004\022\036\n\032SERVICESTATUS_S" +
      "LA_VIOLATED\020\005*\251\001\n\017SliceStatusEnum\022\031\n\025SLI" +
      "CESTATUS_UNDEFINED\020\000\022\027\n\023SLICESTATUS_PLAN" +
      "NED\020\001\022\024\n\020SLICESTATUS_INIT\020\002\022\026\n\022SLICESTAT" +
      "US_ACTIVE\020\003\022\026\n\022SLICESTATUS_DEINIT\020\004\022\034\n\030S" +
      "LICESTATUS_SLA_VIOLATED\020\005*]\n\020ConfigActio" +
      "nEnum\022\032\n\026CONFIGACTION_UNDEFINED\020\000\022\024\n\020CON" +
      "FIGACTION_SET\020\001\022\027\n\023CONFIGACTION_DELETE\020\002" +
      "*m\n\024ConstraintActionEnum\022\036\n\032CONSTRAINTAC" +
      "TION_UNDEFINED\020\000\022\030\n\024CONSTRAINTACTION_SET" +
      "\020\001\022\033\n\027CONSTRAINTACTION_DELETE\020\002*\203\002\n\022Isol" +
      "ationLevelEnum\022\020\n\014NO_ISOLATION\020\000\022\026\n\022PHYS" +
      "ICAL_ISOLATION\020\001\022\025\n\021LOGICAL_ISOLATION\020\002\022" +
      "\025\n\021PROCESS_ISOLATION\020\003\022\035\n\031PHYSICAL_MEMOR" +
      "Y_ISOLATION\020\004\022\036\n\032PHYSICAL_NETWORK_ISOLAT" +
      "ION\020\005\022\036\n\032VIRTUAL_RESOURCE_ISOLATION\020\006\022\037\n" +
      "\033NETWORK_FUNCTIONS_ISOLATION\020\007\022\025\n\021SERVIC" +
      "E_ISOLATION\020\0102\245\026\n\016ContextService\022:\n\016List" +
      "ContextIds\022\016.context.Empty\032\026.context.Con" +
      "textIdList\"\000\0226\n\014ListContexts\022\016.context.E" +
      "mpty\032\024.context.ContextList\"\000\0224\n\nGetConte" +
      "xt\022\022.context.ContextId\032\020.context.Context" +
      "\"\000\0224\n\nSetContext\022\020.context.Context\032\022.con" +
      "text.ContextId\"\000\0225\n\rRemoveContext\022\022.cont" +
      "ext.ContextId\032\016.context.Empty\"\000\022=\n\020GetCo" +
      "ntextEvents\022\016.context.Empty\032\025.context.Co" +
      "ntextEvent\"\0000\001\022@\n\017ListTopologyIds\022\022.cont" +
      "ext.ContextId\032\027.context.TopologyIdList\"\000" +
      "\022=\n\016ListTopologies\022\022.context.ContextId\032\025" +
      ".context.TopologyList\"\000\0227\n\013GetTopology\022\023" +
      ".context.TopologyId\032\021.context.Topology\"\000" +
      "\022E\n\022GetTopologyDetails\022\023.context.Topolog" +
      "yId\032\030.context.TopologyDetails\"\000\0227\n\013SetTo" +
      "pology\022\021.context.Topology\032\023.context.Topo" +
      "logyId\"\000\0227\n\016RemoveTopology\022\023.context.Top" +
      "ologyId\032\016.context.Empty\"\000\022?\n\021GetTopology" +
      "Events\022\016.context.Empty\032\026.context.Topolog" +
      "yEvent\"\0000\001\0228\n\rListDeviceIds\022\016.context.Em" +
      "pty\032\025.context.DeviceIdList\"\000\0224\n\013ListDevi" +
      "ces\022\016.context.Empty\032\023.context.DeviceList" +
      "\"\000\0221\n\tGetDevice\022\021.context.DeviceId\032\017.con" +
      "text.Device\"\000\0221\n\tSetDevice\022\017.context.Dev" +
      "ice\032\021.context.DeviceId\"\000\0223\n\014RemoveDevice" +
      "\022\021.context.DeviceId\032\016.context.Empty\"\000\022;\n" +
      "\017GetDeviceEvents\022\016.context.Empty\032\024.conte" +
      "xt.DeviceEvent\"\0000\001\022<\n\014SelectDevice\022\025.con" +
      "text.DeviceFilter\032\023.context.DeviceList\"\000" +
      "\022I\n\021ListEndPointNames\022\027.context.EndPoint" +
      "IdList\032\031.context.EndPointNameList\"\000\0224\n\013L" +
      "istLinkIds\022\016.context.Empty\032\023.context.Lin" +
      "kIdList\"\000\0220\n\tListLinks\022\016.context.Empty\032\021" +
      ".context.LinkList\"\000\022+\n\007GetLink\022\017.context" +
      ".LinkId\032\r.context.Link\"\000\022+\n\007SetLink\022\r.co" +
      "ntext.Link\032\017.context.LinkId\"\000\022/\n\nRemoveL" +
      "ink\022\017.context.LinkId\032\016.context.Empty\"\000\0227" +
      "\n\rGetLinkEvents\022\016.context.Empty\032\022.contex" +
      "t.LinkEvent\"\0000\001\022>\n\016ListServiceIds\022\022.cont" +
      "ext.ContextId\032\026.context.ServiceIdList\"\000\022" +
      ":\n\014ListServices\022\022.context.ContextId\032\024.co" +
      "ntext.ServiceList\"\000\0224\n\nGetService\022\022.cont" +
      "ext.ServiceId\032\020.context.Service\"\000\0224\n\nSet" +
      "Service\022\020.context.Service\032\022.context.Serv" +
      "iceId\"\000\0226\n\014UnsetService\022\020.context.Servic" +
      "e\032\022.context.ServiceId\"\000\0225\n\rRemoveService" +
      "\022\022.context.ServiceId\032\016.context.Empty\"\000\022=" +
      "\n\020GetServiceEvents\022\016.context.Empty\032\025.con" +
      "text.ServiceEvent\"\0000\001\022?\n\rSelectService\022\026" +
      ".context.ServiceFilter\032\024.context.Service" +
      "List\"\000\022:\n\014ListSliceIds\022\022.context.Context" +
      "Id\032\024.context.SliceIdList\"\000\0226\n\nListSlices" +
      "\022\022.context.ContextId\032\022.context.SliceList" +
      "\"\000\022.\n\010GetSlice\022\020.context.SliceId\032\016.conte" +
      "xt.Slice\"\000\022.\n\010SetSlice\022\016.context.Slice\032\020" +
      ".context.SliceId\"\000\0220\n\nUnsetSlice\022\016.conte" +
      "xt.Slice\032\020.context.SliceId\"\000\0221\n\013RemoveSl" +
      "ice\022\020.context.SliceId\032\016.context.Empty\"\000\022" +
      "9\n\016GetSliceEvents\022\016.context.Empty\032\023.cont" +
      "ext.SliceEvent\"\0000\001\0229\n\013SelectSlice\022\024.cont" +
      "ext.SliceFilter\032\022.context.SliceList\"\000\022D\n" +
      "\021ListConnectionIds\022\022.context.ServiceId\032\031" +
      ".context.ConnectionIdList\"\000\022@\n\017ListConne" +
      "ctions\022\022.context.ServiceId\032\027.context.Con" +
      "nectionList\"\000\022=\n\rGetConnection\022\025.context" +
      ".ConnectionId\032\023.context.Connection\"\000\022=\n\r" +
      "SetConnection\022\023.context.Connection\032\025.con" +
      "text.ConnectionId\"\000\022;\n\020RemoveConnection\022" +
      "\025.context.ConnectionId\032\016.context.Empty\"\000" +
      "\022C\n\023GetConnectionEvents\022\016.context.Empty\032" +
      "\030.context.ConnectionEvent\"\0000\001b\006proto3"
      "\020\007\022 \n\034DEVICEDRIVER_GNMI_OPENCONFIG\020\010\022\032\n\026" +
      "DEVICEDRIVER_FLEXSCALE\020\t*\217\001\n\033DeviceOpera" +
      "tionalStatusEnum\022%\n!DEVICEOPERATIONALSTA" +
      "TUS_UNDEFINED\020\000\022$\n DEVICEOPERATIONALSTAT" +
      "US_DISABLED\020\001\022#\n\037DEVICEOPERATIONALSTATUS" +
      "_ENABLED\020\002*\252\001\n\017ServiceTypeEnum\022\027\n\023SERVIC" +
      "ETYPE_UNKNOWN\020\000\022\024\n\020SERVICETYPE_L3NM\020\001\022\024\n" +
      "\020SERVICETYPE_L2NM\020\002\022)\n%SERVICETYPE_TAPI_" +
      "CONNECTIVITY_SERVICE\020\003\022\022\n\016SERVICETYPE_TE" +
      "\020\004\022\023\n\017SERVICETYPE_E2E\020\005*\304\001\n\021ServiceStatu" +
      "sEnum\022\033\n\027SERVICESTATUS_UNDEFINED\020\000\022\031\n\025SE" +
      "RVICESTATUS_PLANNED\020\001\022\030\n\024SERVICESTATUS_A" +
      "CTIVE\020\002\022\032\n\026SERVICESTATUS_UPDATING\020\003\022!\n\035S" +
      "ERVICESTATUS_PENDING_REMOVAL\020\004\022\036\n\032SERVIC" +
      "ESTATUS_SLA_VIOLATED\020\005*\251\001\n\017SliceStatusEn" +
      "um\022\031\n\025SLICESTATUS_UNDEFINED\020\000\022\027\n\023SLICEST" +
      "ATUS_PLANNED\020\001\022\024\n\020SLICESTATUS_INIT\020\002\022\026\n\022" +
      "SLICESTATUS_ACTIVE\020\003\022\026\n\022SLICESTATUS_DEIN" +
      "IT\020\004\022\034\n\030SLICESTATUS_SLA_VIOLATED\020\005*]\n\020Co" +
      "nfigActionEnum\022\032\n\026CONFIGACTION_UNDEFINED" +
      "\020\000\022\024\n\020CONFIGACTION_SET\020\001\022\027\n\023CONFIGACTION" +
      "_DELETE\020\002*m\n\024ConstraintActionEnum\022\036\n\032CON" +
      "STRAINTACTION_UNDEFINED\020\000\022\030\n\024CONSTRAINTA" +
      "CTION_SET\020\001\022\033\n\027CONSTRAINTACTION_DELETE\020\002" +
      "*\203\002\n\022IsolationLevelEnum\022\020\n\014NO_ISOLATION\020" +
      "\000\022\026\n\022PHYSICAL_ISOLATION\020\001\022\025\n\021LOGICAL_ISO" +
      "LATION\020\002\022\025\n\021PROCESS_ISOLATION\020\003\022\035\n\031PHYSI" +
      "CAL_MEMORY_ISOLATION\020\004\022\036\n\032PHYSICAL_NETWO" +
      "RK_ISOLATION\020\005\022\036\n\032VIRTUAL_RESOURCE_ISOLA" +
      "TION\020\006\022\037\n\033NETWORK_FUNCTIONS_ISOLATION\020\007\022" +
      "\025\n\021SERVICE_ISOLATION\020\0102\245\026\n\016ContextServic" +
      "e\022:\n\016ListContextIds\022\016.context.Empty\032\026.co" +
      "ntext.ContextIdList\"\000\0226\n\014ListContexts\022\016." +
      "context.Empty\032\024.context.ContextList\"\000\0224\n" +
      "\nGetContext\022\022.context.ContextId\032\020.contex" +
      "t.Context\"\000\0224\n\nSetContext\022\020.context.Cont" +
      "ext\032\022.context.ContextId\"\000\0225\n\rRemoveConte" +
      "xt\022\022.context.ContextId\032\016.context.Empty\"\000" +
      "\022=\n\020GetContextEvents\022\016.context.Empty\032\025.c" +
      "ontext.ContextEvent\"\0000\001\022@\n\017ListTopologyI" +
      "ds\022\022.context.ContextId\032\027.context.Topolog" +
      "yIdList\"\000\022=\n\016ListTopologies\022\022.context.Co" +
      "ntextId\032\025.context.TopologyList\"\000\0227\n\013GetT" +
      "opology\022\023.context.TopologyId\032\021.context.T" +
      "opology\"\000\022E\n\022GetTopologyDetails\022\023.contex" +
      "t.TopologyId\032\030.context.TopologyDetails\"\000" +
      "\0227\n\013SetTopology\022\021.context.Topology\032\023.con" +
      "text.TopologyId\"\000\0227\n\016RemoveTopology\022\023.co" +
      "ntext.TopologyId\032\016.context.Empty\"\000\022?\n\021Ge" +
      "tTopologyEvents\022\016.context.Empty\032\026.contex" +
      "t.TopologyEvent\"\0000\001\0228\n\rListDeviceIds\022\016.c" +
      "ontext.Empty\032\025.context.DeviceIdList\"\000\0224\n" +
      "\013ListDevices\022\016.context.Empty\032\023.context.D" +
      "eviceList\"\000\0221\n\tGetDevice\022\021.context.Devic" +
      "eId\032\017.context.Device\"\000\0221\n\tSetDevice\022\017.co" +
      "ntext.Device\032\021.context.DeviceId\"\000\0223\n\014Rem" +
      "oveDevice\022\021.context.DeviceId\032\016.context.E" +
      "mpty\"\000\022;\n\017GetDeviceEvents\022\016.context.Empt" +
      "y\032\024.context.DeviceEvent\"\0000\001\022<\n\014SelectDev" +
      "ice\022\025.context.DeviceFilter\032\023.context.Dev" +
      "iceList\"\000\022I\n\021ListEndPointNames\022\027.context" +
      ".EndPointIdList\032\031.context.EndPointNameLi" +
      "st\"\000\0224\n\013ListLinkIds\022\016.context.Empty\032\023.co" +
      "ntext.LinkIdList\"\000\0220\n\tListLinks\022\016.contex" +
      "t.Empty\032\021.context.LinkList\"\000\022+\n\007GetLink\022" +
      "\017.context.LinkId\032\r.context.Link\"\000\022+\n\007Set" +
      "Link\022\r.context.Link\032\017.context.LinkId\"\000\022/" +
      "\n\nRemoveLink\022\017.context.LinkId\032\016.context." +
      "Empty\"\000\0227\n\rGetLinkEvents\022\016.context.Empty" +
      "\032\022.context.LinkEvent\"\0000\001\022>\n\016ListServiceI" +
      "ds\022\022.context.ContextId\032\026.context.Service" +
      "IdList\"\000\022:\n\014ListServices\022\022.context.Conte" +
      "xtId\032\024.context.ServiceList\"\000\0224\n\nGetServi" +
      "ce\022\022.context.ServiceId\032\020.context.Service" +
      "\"\000\0224\n\nSetService\022\020.context.Service\032\022.con" +
      "text.ServiceId\"\000\0226\n\014UnsetService\022\020.conte" +
      "xt.Service\032\022.context.ServiceId\"\000\0225\n\rRemo" +
      "veService\022\022.context.ServiceId\032\016.context." +
      "Empty\"\000\022=\n\020GetServiceEvents\022\016.context.Em" +
      "pty\032\025.context.ServiceEvent\"\0000\001\022?\n\rSelect" +
      "Service\022\026.context.ServiceFilter\032\024.contex" +
      "t.ServiceList\"\000\022:\n\014ListSliceIds\022\022.contex" +
      "t.ContextId\032\024.context.SliceIdList\"\000\0226\n\nL" +
      "istSlices\022\022.context.ContextId\032\022.context." +
      "SliceList\"\000\022.\n\010GetSlice\022\020.context.SliceI" +
      "d\032\016.context.Slice\"\000\022.\n\010SetSlice\022\016.contex" +
      "t.Slice\032\020.context.SliceId\"\000\0220\n\nUnsetSlic" +
      "e\022\016.context.Slice\032\020.context.SliceId\"\000\0221\n" +
      "\013RemoveSlice\022\020.context.SliceId\032\016.context" +
      ".Empty\"\000\0229\n\016GetSliceEvents\022\016.context.Emp" +
      "ty\032\023.context.SliceEvent\"\0000\001\0229\n\013SelectSli" +
      "ce\022\024.context.SliceFilter\032\022.context.Slice" +
      "List\"\000\022D\n\021ListConnectionIds\022\022.context.Se" +
      "rviceId\032\031.context.ConnectionIdList\"\000\022@\n\017" +
      "ListConnections\022\022.context.ServiceId\032\027.co" +
      "ntext.ConnectionList\"\000\022=\n\rGetConnection\022" +
      "\025.context.ConnectionId\032\023.context.Connect" +
      "ion\"\000\022=\n\rSetConnection\022\023.context.Connect" +
      "ion\032\025.context.ConnectionId\"\000\022;\n\020RemoveCo" +
      "nnection\022\025.context.ConnectionId\032\016.contex" +
      "t.Empty\"\000\022C\n\023GetConnectionEvents\022\016.conte" +
      "xt.Empty\032\030.context.ConnectionEvent\"\0000\001b\006" +
      "proto3"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
+0 −108

File deleted.

Preview size limit exceeded, changes collapsed.