diff --git a/manifests/bgpls_speakerservice.yaml b/manifests/bgpls_speakerservice.yaml index c36577ba3249371bdc3d9d40f35cad5e2521ce35..9259b6a69f91eddfe4ba2fc554bc24c939e38498 100644 --- a/manifests/bgpls_speakerservice.yaml +++ b/manifests/bgpls_speakerservice.yaml @@ -36,7 +36,7 @@ spec: - containerPort: 9192 env: - name: LOG_LEVEL - value: "INFO" + value: "DEBUG" readinessProbe: exec: command: ["/bin/grpc_health_probe", "-addr=:20030"] diff --git a/manifests/resource_managerservice.yaml b/manifests/resource_managerservice.yaml new file mode 100644 index 0000000000000000000000000000000000000000..964868c07e8d2336122b75229c9544569a5fb7d9 --- /dev/null +++ b/manifests/resource_managerservice.yaml @@ -0,0 +1,51 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: resource-managerservice +spec: + selector: + matchLabels: + app: resource-managerservice + template: + metadata: + labels: + app: resource-managerservice + spec: + containers: + - name: resource-managerservice + image: localhost:32000/tfs/resource_manager:dev + imagePullPolicy: Always + ports: + - containerPort: 40010 + env: + - name: LOG_LEVEL + value: "DEBUG" + readinessProbe: + exec: + command: ["/bin/grpc_health_probe", "-addr=:40010"] + livenessProbe: + exec: + command: ["/bin/grpc_health_probe", "-addr=:40010"] + resources: + requests: + cpu: 250m + memory: 128Mi + limits: + cpu: 500m + memory: 512Mi + +--- +apiVersion: v1 +kind: Service +metadata: + name: resource-managerservice +spec: + type: NodePort + ports: + - name: grpc + protocol: TCP + port: 40010 + targetPort: 40010 + nodePort: 30010 + selector: + app: resource-managerservice \ No newline at end of file diff --git a/my_deploy.sh b/my_deploy.sh index 577fa54963265326849287c0e923b467686c38d6..2571ff5944ee7eac6c9f06dae45f0c0af2a1d9fd 100644 --- a/my_deploy.sh +++ b/my_deploy.sh @@ -22,6 +22,9 @@ export TFS_REGISTRY_IMAGES="http://localhost:32000/tfs/" # Set the list of components, separated by spaces, you want to build images for, and deploy. export TFS_COMPONENTS="context device pathcomp service slice nbi webui" +# Uncomment to activate Monitoring (old) +export TFS_COMPONENTS="${TFS_COMPONENTS} resource_manager" + # Uncomment to activate Monitoring (old) #export TFS_COMPONENTS="${TFS_COMPONENTS} monitoring" @@ -35,7 +38,7 @@ export TFS_COMPONENTS="context device pathcomp service slice nbi webui" # export TFS_COMPONENTS="${TFS_COMPONENTS} pcep" # Uncomment to activate BGP-LS Speaker -#export TFS_COMPONENTS="${TFS_COMPONENTS} bgpls_speaker" +# export TFS_COMPONENTS="${TFS_COMPONENTS} bgpls_speaker" # Uncomment to activate Optical Controller # To manage optical connections, "service" requires "opticalcontroller" to be deployed diff --git a/proto/context.proto b/proto/context.proto index b33750e80b07b0300cf2aa8b526597bfea9a9ee5..9cc75355fe91594acf446aa41a91ca4bcf4beb64 100644 --- a/proto/context.proto +++ b/proto/context.proto @@ -279,6 +279,10 @@ enum LinkTypeEnum { message LinkAttributes { float total_capacity_gbps = 1; float used_capacity_gbps = 2; + float available_bw = 3; + float link_delay = 5; + float min_max_link_delay = 6; + float delay_variation = 7; } message Link { diff --git a/proto/resource_manager.proto b/proto/resource_manager.proto new file mode 100644 index 0000000000000000000000000000000000000000..9e859b446358adb0b5e15899b05a4a8268eb5a68 --- /dev/null +++ b/proto/resource_manager.proto @@ -0,0 +1,52 @@ +// Copyright 2022-2024 ETSI OSG/SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package resource_manager; + +// Define el servicio +service ResourceManager { + rpc VerifyAndAssignL2 (L2Request) returns (L2Response); + rpc VerifyAndAssignL3 (L3Request) returns (L3Response); +} + +// Define las solicitudes y respuestas para los servicios +message L2Request { + string service_uuid = 1; + string connection_uuid = 2; + string device_uuid = 3; + string endpoint_uuid = 4; + string endpoint_name = 5; + int32 vlan_id = 6; +} + +message L2Response { + bool success = 1; + string message = 2; +} + +message L3Request { + string service_uuid = 1; + string connection_uuid = 2; + string device_uuid = 3; + string endpoint_uuid = 4; + string endpoint_name = 5; + string ip_address = 6; +} + +message L3Response { + bool success = 1; + string message = 2; +} \ No newline at end of file diff --git a/scripts/show_logs_bgp.sh b/scripts/show_logs_bgp.sh index dbf8efbf2992b480ffab6599a7a5c3f8638753c7..86a9744c70d671999318c6f84d009a1afacf10b6 100755 --- a/scripts/show_logs_bgp.sh +++ b/scripts/show_logs_bgp.sh @@ -24,4 +24,4 @@ export TFS_K8S_NAMESPACE=${TFS_K8S_NAMESPACE:-"tfs"} # Automated steps start here ######################################################################################################################## -kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/bgpls_speakerservice -c server +kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/bgpls-speakerservice -c server diff --git a/scripts/show_logs_resource_manager.sh b/scripts/show_logs_resource_manager.sh new file mode 100755 index 0000000000000000000000000000000000000000..62b9b096ee4e080294b931d9b64b71b9fc2c6ee8 --- /dev/null +++ b/scripts/show_logs_resource_manager.sh @@ -0,0 +1,27 @@ +#!/bin/bash +# Copyright 2022-2024 ETSI OSG/SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +######################################################################################################################## +# Define your deployment settings here +######################################################################################################################## + +# If not already set, set the name of the Kubernetes namespace to deploy to. +export TFS_K8S_NAMESPACE=${TFS_K8S_NAMESPACE:-"tfs"} + +######################################################################################################################## +# Automated steps start here +######################################################################################################################## + +kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/resource-managerservice diff --git a/src/bgpls_speaker/service/java/BGP4Parameters_3.xml b/src/bgpls_speaker/service/java/BGP4Parameters_3.xml index ec13295652aa4c0985b380ca8910ea8998d4a22a..e9fef07916568d11d80bb79fc690036a3d87ec7d 100644 --- a/src/bgpls_speaker/service/java/BGP4Parameters_3.xml +++ b/src/bgpls_speaker/service/java/BGP4Parameters_3.xml @@ -15,12 +15,12 @@ <config> <!-- TCP port where the BGP is listening for incoming bgp4 connections. Optional Parameter. Default value: 179 (BGP Port) --> <BGP4Port>12179</BGP4Port> - <BGPIdentifier>7.7.7.7</BGPIdentifier> + <BGPIdentifier>1.1.1.1</BGPIdentifier> <!-- TCP port to connect to manage the BGP connection. Default value: 1112 --> <BGP4ManagementPort>1112</BGP4ManagementPort> <!-- Peers to which this Peer is going to establish connection --> <configPeer> - <peer>10.95.90.43</peer> + <peer>10.95.90.46</peer> <export>false</export> <import>true</import> <peerPort>179</peerPort> @@ -45,7 +45,7 @@ <!-- RFC 4271. This 1-octet unsigned integer indicates the protocol version number of the message. The current BGP version number is 4. --> <version>4</version><!-- Optional Parameter. Default value: 4. --> <!-- RFC 4271. This 2-octet unsigned integer indicates the Autonomous System number of the sender.--> - <myAutonomousSystem>65006</myAutonomousSystem> + <myAutonomousSystem>101</myAutonomousSystem> <!-- RFC 4271. This 4-octet unsigned integer indicates the BGP Identifier of the sender. A given BGP speaker sets the value of its BGP Identifier to an IP address that is assigned to that BGP speaker. The value of the BGP Identifier is determined upon startup and is the same for every local interface and BGP peer. --> diff --git a/src/bgpls_speaker/service/java/exec_speakear_java.sh b/src/bgpls_speaker/service/java/exec_speakear_java.sh index 2bef9ed880294591782decb521f3e78cc42c938b..c4bb6c1868db3b43cc8ab8d5a2da1f2fbb1f08bc 100644 --- a/src/bgpls_speaker/service/java/exec_speakear_java.sh +++ b/src/bgpls_speaker/service/java/exec_speakear_java.sh @@ -14,6 +14,6 @@ #!/bin/bash cd netphony-topology/ -"/home/ubuntu/downloads/apache-maven-3.8.8/bin/mvn" clean package -P bgp-ls-speaker assembly:single -DskipTests +"/usr/bin/mvn" clean package -P bgp-ls-speaker assembly:single -DskipTests cd .. sudo java -jar netphony-topology/target/bgp-ls-speaker-jar-with-dependencies.jar BGP4Parameters_3.xml \ No newline at end of file diff --git a/src/bgpls_speaker/service/java/netphony-topology/BGP4Parameters_3.xml b/src/bgpls_speaker/service/java/netphony-topology/BGP4Parameters_3.xml index 2994fc7250922723c05e138a066addff1373f9bf..8420c549d43bdd9dbc8d433cb5f89c154ffb2018 100644 --- a/src/bgpls_speaker/service/java/netphony-topology/BGP4Parameters_3.xml +++ b/src/bgpls_speaker/service/java/netphony-topology/BGP4Parameters_3.xml @@ -15,12 +15,12 @@ limitations under the License. --> <config> <!-- TCP port where the BGP is listening for incoming bgp4 connections. Optional Parameter. Default value: 179 (BGP Port) --> <BGP4Port>12179</BGP4Port> - <BGPIdentifier>7.7.7.7</BGPIdentifier> + <BGPIdentifier>1.1.1.1</BGPIdentifier> <!-- TCP port to connect to manage the BGP connection. Default value: 1112 --> <BGP4ManagementPort>1112</BGP4ManagementPort> <!-- Peers to which this Peer is going to establish connection --> <configPeer> - <peer>10.95.90.43</peer> + <peer>10.95.90.46</peer> <export>false</export> <import>true</import> <peerPort>179</peerPort> @@ -45,7 +45,7 @@ limitations under the License. --> <!-- RFC 4271. This 1-octet unsigned integer indicates the protocol version number of the message. The current BGP version number is 4. --> <version>4</version><!-- Optional Parameter. Default value: 4. --> <!-- RFC 4271. This 2-octet unsigned integer indicates the Autonomous System number of the sender.--> - <myAutonomousSystem>100</myAutonomousSystem> + <myAutonomousSystem>101</myAutonomousSystem> <!-- RFC 4271. This 4-octet unsigned integer indicates the BGP Identifier of the sender. A given BGP speaker sets the value of its BGP Identifier to an IP address that is assigned to that BGP speaker. The value of the BGP Identifier is determined upon startup and is the same for every local interface and BGP peer. --> diff --git a/src/bgpls_speaker/service/java/netphony-topology/log4j2.xml b/src/bgpls_speaker/service/java/netphony-topology/log4j2.xml index a27d702e5bc9a480213d8d31223a320986c60381..727b6c7348b1e56633e681056adc42c266d7f249 100644 --- a/src/bgpls_speaker/service/java/netphony-topology/log4j2.xml +++ b/src/bgpls_speaker/service/java/netphony-topology/log4j2.xml @@ -1,36 +1,14 @@ -<!-- Copyright 2022-2025 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. --> - <?xml version="1.0" encoding="UTF-8"?> - <Configuration status="TRACE"> + <Configuration status="WARN"> <Appenders> - <Console name="trace" target="SYSTEM_OUT"> + <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> </Console> </Appenders> <Loggers> - <Logger name="BGP4Peer" level="trace" additivity="false"> - <AppenderRef ref="Console"/> - </Logger> - <Logger name="BGP4Server" level="trace" additivity="false"> - <AppenderRef ref="Console"/> - </Logger> - <Logger name="BGP4Parser" level="trace" additivity="false"> - <AppenderRef ref="Console"/> - </Logger> - <Root level="trace"> + <Root level="DEBUG"> <AppenderRef ref="Console"/> </Root> </Loggers> </Configuration> + diff --git a/src/bgpls_speaker/service/java/netphony-topology/node.json b/src/bgpls_speaker/service/java/netphony-topology/node.json new file mode 100644 index 0000000000000000000000000000000000000000..d338e514f03554bcb079bb33228f7444200aff12 --- /dev/null +++ b/src/bgpls_speaker/service/java/netphony-topology/node.json @@ -0,0 +1,262 @@ +{ + "nodeList": [ + { + "localBgplsID": "/3.3.3.3", + "as_number": "0.0.0.101", + "nodeName": "/2.2.2.2", + "learntFrom": "10.95.90.46", + "igpid": "2.2.2.2", + "routerID": "/2.2.2.2" + }, + { + "localBgplsID": "/3.3.3.3", + "as_number": "0.0.0.101", + "nodeName": "/1.1.1.1", + "learntFrom": "10.95.90.46", + "igpid": "1.1.1.1", + "routerID": "/1.1.1.1" + }, + { + "localBgplsID": "/3.3.3.3", + "as_number": "0.0.0.101", + "nodeName": "/4.4.4.4", + "learntFrom": "10.95.90.46", + "igpid": "4.4.4.4", + "routerID": "/4.4.4.4" + }, + { + "localBgplsID": "/3.3.3.3", + "as_number": "0.0.0.101", + "nodeName": "/3.3.3.3", + "learntFrom": "10.95.90.46", + "igpid": "3.3.3.3", + "routerID": "/3.3.3.3" + }, + { + "localBgplsID": "/3.3.3.3", + "as_number": "0.0.0.101", + "nodeName": "/5.5.5.5", + "learntFrom": "10.95.90.46", + "igpid": "5.5.5.5", + "routerID": "/5.5.5.5" + } + ], + "linkList": [ + { + "localDomainID": "0.0.0.101", + "remoteDomainID": "0.0.0.101", + "linkDelay": 0, + "linkDelayVar": 0, + "minDelay": 0, + "maxDelay": 0, + "residualBw": 0, + "availableBw": 0, + "utilizedBw": 0, + "iPv4RouterIDLocalNodeLATLV": "/192.168.15.1", + "iPv4RouterIDNeighborNodeLATLV": "/192.168.15.5", + "localBgplsID": "/3.3.3.3", + "remoteBgplsID": "/3.3.3.3", + "learntFrom": "10.95.90.46", + "localNodeIGPId": "1.1.1.1", + "remoteNodeIGPId": "5.5.5.5" + }, + { + "localDomainID": "0.0.0.101", + "remoteDomainID": "0.0.0.101", + "linkDelay": 0, + "linkDelayVar": 0, + "minDelay": 0, + "maxDelay": 0, + "residualBw": 0, + "availableBw": 0, + "utilizedBw": 0, + "iPv4RouterIDLocalNodeLATLV": "/192.168.24.2", + "iPv4RouterIDNeighborNodeLATLV": "/192.168.24.4", + "localBgplsID": "/3.3.3.3", + "remoteBgplsID": "/3.3.3.3", + "learntFrom": "10.95.90.46", + "localNodeIGPId": "2.2.2.2", + "remoteNodeIGPId": "4.4.4.4" + }, + { + "localDomainID": "0.0.0.101", + "remoteDomainID": "0.0.0.101", + "linkDelay": 0, + "linkDelayVar": 0, + "minDelay": 0, + "maxDelay": 0, + "residualBw": 0, + "availableBw": 0, + "utilizedBw": 0, + "iPv4RouterIDLocalNodeLATLV": "/192.168.35.5", + "iPv4RouterIDNeighborNodeLATLV": "/192.168.35.3", + "localBgplsID": "/3.3.3.3", + "remoteBgplsID": "/3.3.3.3", + "learntFrom": "10.95.90.46", + "localNodeIGPId": "5.5.5.5", + "remoteNodeIGPId": "3.3.3.3" + }, + { + "localDomainID": "0.0.0.101", + "remoteDomainID": "0.0.0.101", + "linkDelay": 0, + "linkDelayVar": 0, + "minDelay": 0, + "maxDelay": 0, + "residualBw": 0, + "availableBw": 0, + "utilizedBw": 0, + "iPv4RouterIDLocalNodeLATLV": "/192.168.35.3", + "iPv4RouterIDNeighborNodeLATLV": "/192.168.35.5", + "localBgplsID": "/3.3.3.3", + "remoteBgplsID": "/3.3.3.3", + "learntFrom": "10.95.90.46", + "localNodeIGPId": "3.3.3.3", + "remoteNodeIGPId": "5.5.5.5" + }, + { + "localDomainID": "0.0.0.101", + "remoteDomainID": "0.0.0.101", + "linkDelay": 0, + "linkDelayVar": 0, + "minDelay": 0, + "maxDelay": 0, + "residualBw": 0, + "availableBw": 0, + "utilizedBw": 0, + "iPv4RouterIDLocalNodeLATLV": "/192.168.12.2", + "iPv4RouterIDNeighborNodeLATLV": "/192.168.12.1", + "localBgplsID": "/3.3.3.3", + "remoteBgplsID": "/3.3.3.3", + "learntFrom": "10.95.90.46", + "localNodeIGPId": "2.2.2.2", + "remoteNodeIGPId": "1.1.1.1" + }, + { + "localDomainID": "0.0.0.101", + "remoteDomainID": "0.0.0.101", + "linkDelay": 0, + "linkDelayVar": 0, + "minDelay": 0, + "maxDelay": 0, + "residualBw": 0, + "availableBw": 0, + "utilizedBw": 0, + "iPv4RouterIDLocalNodeLATLV": "/192.168.23.3", + "iPv4RouterIDNeighborNodeLATLV": "/192.168.23.2", + "localBgplsID": "/3.3.3.3", + "remoteBgplsID": "/3.3.3.3", + "learntFrom": "10.95.90.46", + "localNodeIGPId": "3.3.3.3", + "remoteNodeIGPId": "2.2.2.2" + }, + { + "localDomainID": "0.0.0.101", + "remoteDomainID": "0.0.0.101", + "linkDelay": 0, + "linkDelayVar": 0, + "minDelay": 0, + "maxDelay": 0, + "residualBw": 0, + "availableBw": 0, + "utilizedBw": 0, + "iPv4RouterIDLocalNodeLATLV": "/192.168.24.4", + "iPv4RouterIDNeighborNodeLATLV": "/192.168.24.2", + "localBgplsID": "/3.3.3.3", + "remoteBgplsID": "/3.3.3.3", + "learntFrom": "10.95.90.46", + "localNodeIGPId": "4.4.4.4", + "remoteNodeIGPId": "2.2.2.2" + }, + { + "localDomainID": "0.0.0.101", + "remoteDomainID": "0.0.0.101", + "linkDelay": 0, + "linkDelayVar": 0, + "minDelay": 0, + "maxDelay": 0, + "residualBw": 0, + "availableBw": 0, + "utilizedBw": 0, + "iPv4RouterIDLocalNodeLATLV": "/192.168.15.5", + "iPv4RouterIDNeighborNodeLATLV": "/192.168.15.1", + "localBgplsID": "/3.3.3.3", + "remoteBgplsID": "/3.3.3.3", + "learntFrom": "10.95.90.46", + "localNodeIGPId": "5.5.5.5", + "remoteNodeIGPId": "1.1.1.1" + }, + { + "localDomainID": "0.0.0.101", + "remoteDomainID": "0.0.0.101", + "linkDelay": 0, + "linkDelayVar": 0, + "minDelay": 0, + "maxDelay": 0, + "residualBw": 0, + "availableBw": 0, + "utilizedBw": 0, + "iPv4RouterIDLocalNodeLATLV": "/192.168.12.1", + "iPv4RouterIDNeighborNodeLATLV": "/192.168.12.2", + "localBgplsID": "/3.3.3.3", + "remoteBgplsID": "/3.3.3.3", + "learntFrom": "10.95.90.46", + "localNodeIGPId": "1.1.1.1", + "remoteNodeIGPId": "2.2.2.2" + }, + { + "localDomainID": "0.0.0.101", + "remoteDomainID": "0.0.0.101", + "linkDelay": 0, + "linkDelayVar": 0, + "minDelay": 0, + "maxDelay": 0, + "residualBw": 0, + "availableBw": 0, + "utilizedBw": 0, + "iPv4RouterIDLocalNodeLATLV": "/192.168.25.2", + "iPv4RouterIDNeighborNodeLATLV": "/192.168.25.5", + "localBgplsID": "/3.3.3.3", + "remoteBgplsID": "/3.3.3.3", + "learntFrom": "10.95.90.46", + "localNodeIGPId": "2.2.2.2", + "remoteNodeIGPId": "5.5.5.5" + }, + { + "localDomainID": "0.0.0.101", + "remoteDomainID": "0.0.0.101", + "linkDelay": 0, + "linkDelayVar": 0, + "minDelay": 0, + "maxDelay": 0, + "residualBw": 0, + "availableBw": 0, + "utilizedBw": 0, + "iPv4RouterIDLocalNodeLATLV": "/192.168.25.5", + "iPv4RouterIDNeighborNodeLATLV": "/192.168.25.2", + "localBgplsID": "/3.3.3.3", + "remoteBgplsID": "/3.3.3.3", + "learntFrom": "10.95.90.46", + "localNodeIGPId": "5.5.5.5", + "remoteNodeIGPId": "2.2.2.2" + }, + { + "localDomainID": "0.0.0.101", + "remoteDomainID": "0.0.0.101", + "linkDelay": 0, + "linkDelayVar": 0, + "minDelay": 0, + "maxDelay": 0, + "residualBw": 0, + "availableBw": 0, + "utilizedBw": 0, + "iPv4RouterIDLocalNodeLATLV": "/192.168.23.2", + "iPv4RouterIDNeighborNodeLATLV": "/192.168.23.3", + "localBgplsID": "/3.3.3.3", + "remoteBgplsID": "/3.3.3.3", + "learntFrom": "10.95.90.46", + "localNodeIGPId": "2.2.2.2", + "remoteNodeIGPId": "3.3.3.3" + } + ] +} \ No newline at end of file diff --git a/src/bgpls_speaker/service/java/netphony-topology/pom.xml b/src/bgpls_speaker/service/java/netphony-topology/pom.xml index e26e47d69df0f4482e99c2b4c9843c2f19e0c431..2cd04969b2c65501792a49888165d02df34666c8 100644 --- a/src/bgpls_speaker/service/java/netphony-topology/pom.xml +++ b/src/bgpls_speaker/service/java/netphony-topology/pom.xml @@ -36,17 +36,32 @@ <version>${jersey-version}</version> </dependency> - <dependency> + <!-- <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> - <version>${slf4j-version}</version> - </dependency> + <version>1.7.21</version> + </dependency> --> <!-- Error slf4j --> - <dependency> + <!-- <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>${slf4j-version}</version> - </dependency> + </dependency> --> + <dependency> + <groupId>org.apache.logging.log4j</groupId> + <artifactId>log4j-slf4j-impl</artifactId> + <version>2.5</version> + </dependency> + <dependency> + <groupId>org.apache.logging.log4j</groupId> + <artifactId>log4j-api</artifactId> + <version>2.5</version> + </dependency> + <dependency> + <groupId>org.apache.logging.log4j</groupId> + <artifactId>log4j-core</artifactId> + <version>2.5</version> + </dependency> <dependency> <groupId>es.tid.netphony</groupId> <artifactId>network-protocols</artifactId> diff --git a/src/bgpls_speaker/service/java/netphony-topology/src/main/java/eu/teraflow/tid/bgp4Peer/peer/BGPPeerMain.java b/src/bgpls_speaker/service/java/netphony-topology/src/main/java/eu/teraflow/tid/bgp4Peer/peer/BGPPeerMain.java index bd924a7c7cc1df60e96d820d80329c657b4e9262..7d1ed9750f6fee062f957a96e4e816259d1b3f03 100644 --- a/src/bgpls_speaker/service/java/netphony-topology/src/main/java/eu/teraflow/tid/bgp4Peer/peer/BGPPeerMain.java +++ b/src/bgpls_speaker/service/java/netphony-topology/src/main/java/eu/teraflow/tid/bgp4Peer/peer/BGPPeerMain.java @@ -28,7 +28,7 @@ public class BGPPeerMain { //bgpPeer.createTEDB("hola"); //did it in configure bgpPeer.createUpdateDispatcher(); - bgpPeer.startClient(); + // bgpPeer.startClient(); bgpPeer.startServer(); bgpPeer.startSaveTopology(); bgpPeer.startManagementServer(); diff --git a/src/bgpls_speaker/service/java/netphony-topology/src/main/java/eu/teraflow/tid/bgp4Peer/updateTEDB/UpdateProccesorThread.java b/src/bgpls_speaker/service/java/netphony-topology/src/main/java/eu/teraflow/tid/bgp4Peer/updateTEDB/UpdateProccesorThread.java index 13ad046314f1a6cbfd1db9d53cd07ceb0d78d667..17864d8eae89408519a573e6b6246e23104443b5 100644 --- a/src/bgpls_speaker/service/java/netphony-topology/src/main/java/eu/teraflow/tid/bgp4Peer/updateTEDB/UpdateProccesorThread.java +++ b/src/bgpls_speaker/service/java/netphony-topology/src/main/java/eu/teraflow/tid/bgp4Peer/updateTEDB/UpdateProccesorThread.java @@ -243,7 +243,7 @@ public class UpdateProccesorThread extends Thread { //log.info("We don't use ORIGIN"); break; default: - //log.info("Attribute typecode " + typeCode +"unknown"); + log.info("Attribute typecode " + typeCode +"unknown"); break; } @@ -395,6 +395,7 @@ public class UpdateProccesorThread extends Thread { private void processAttributeLinkState(LinkStateAttribute lsAtt){ if (lsAtt.getMaximumLinkBandwidthTLV() != null){ + log.debug("MAXIMUM LINK BANDWIDTH TLV"+ lsAtt.getMaximumLinkBandwidthTLV().toString()); maximumLinkBandwidthTLV = lsAtt.getMaximumLinkBandwidthTLV(); } diff --git a/src/bgpls_speaker/service/java/netphony-topology/src/test/resources/log4j2.xml b/src/bgpls_speaker/service/java/netphony-topology/src/test/resources/log4j2.xml index 0df0599bb1f6065dd9fcb505f9281b0821b5c77a..9acc760c9b0433bf8fb58029dd55bca0666317bc 100644 --- a/src/bgpls_speaker/service/java/netphony-topology/src/test/resources/log4j2.xml +++ b/src/bgpls_speaker/service/java/netphony-topology/src/test/resources/log4j2.xml @@ -11,7 +11,6 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> - <?xml version="1.0" encoding="UTF-8"?> <Configuration status="WARN"> <Appenders> @@ -20,7 +19,7 @@ limitations under the License. --> </Console> </Appenders> <Loggers> - <Root level="error"> + <Root level="DEBUG"> <AppenderRef ref="Console"/> </Root> </Loggers> diff --git a/src/bgpls_speaker/service/java/netphony-topology/target/generated-sources/protobuf/grpc-java/src/main/proto/updateServiceGrpc.java b/src/bgpls_speaker/service/java/netphony-topology/target/generated-sources/protobuf/grpc-java/src/main/proto/updateServiceGrpc.java index f3755419ad1d83a479ec4f6187d2fdf292f4a677..237ff040525df0a56308d5ccb86edcbe02dfeac6 100644 --- a/src/bgpls_speaker/service/java/netphony-topology/target/generated-sources/protobuf/grpc-java/src/main/proto/updateServiceGrpc.java +++ b/src/bgpls_speaker/service/java/netphony-topology/target/generated-sources/protobuf/grpc-java/src/main/proto/updateServiceGrpc.java @@ -1,17 +1,3 @@ -// Copyright 2022-2025 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at - -// http://www.apache.org/licenses/LICENSE-2.0 - -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - package src.main.proto; import static io.grpc.MethodDescriptor.generateFullMethodName; diff --git a/src/bgpls_speaker/service/java/netphony-topology/target/generated-sources/protobuf/java/src/main/proto/GrpcService.java b/src/bgpls_speaker/service/java/netphony-topology/target/generated-sources/protobuf/java/src/main/proto/GrpcService.java new file mode 100644 index 0000000000000000000000000000000000000000..a09f8ded37a455a27520f4e8ba9dc04ad799c0d9 --- /dev/null +++ b/src/bgpls_speaker/service/java/netphony-topology/target/generated-sources/protobuf/java/src/main/proto/GrpcService.java @@ -0,0 +1,6202 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: grpcService.proto + +package src.main.proto; + +public final class GrpcService { + private GrpcService() {} + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistryLite registry) { + } + + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistry registry) { + registerAllExtensions( + (com.google.protobuf.ExtensionRegistryLite) registry); + } + public interface updateRequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:src.main.proto.updateRequest) + com.google.protobuf.MessageOrBuilder { + + /** + * <code>string addressFamilyID = 1;</code> + */ + java.lang.String getAddressFamilyID(); + /** + * <code>string addressFamilyID = 1;</code> + */ + com.google.protobuf.ByteString + getAddressFamilyIDBytes(); + + /** + * <code>string nextHop = 2;</code> + */ + java.lang.String getNextHop(); + /** + * <code>string nextHop = 2;</code> + */ + com.google.protobuf.ByteString + getNextHopBytes(); + + /** + * <code>string asPathSegment = 3;</code> + */ + java.lang.String getAsPathSegment(); + /** + * <code>string asPathSegment = 3;</code> + */ + com.google.protobuf.ByteString + getAsPathSegmentBytes(); + + /** + * <code>repeated .src.main.proto.nodeInfo node = 4;</code> + */ + java.util.List<src.main.proto.GrpcService.nodeInfo> + getNodeList(); + /** + * <code>repeated .src.main.proto.nodeInfo node = 4;</code> + */ + src.main.proto.GrpcService.nodeInfo getNode(int index); + /** + * <code>repeated .src.main.proto.nodeInfo node = 4;</code> + */ + int getNodeCount(); + /** + * <code>repeated .src.main.proto.nodeInfo node = 4;</code> + */ + java.util.List<? extends src.main.proto.GrpcService.nodeInfoOrBuilder> + getNodeOrBuilderList(); + /** + * <code>repeated .src.main.proto.nodeInfo node = 4;</code> + */ + src.main.proto.GrpcService.nodeInfoOrBuilder getNodeOrBuilder( + int index); + + /** + * <pre> + * repeated : se da la posibilidad de mandar 0 o varios + * </pre> + * + * <code>repeated .src.main.proto.linkInfo link = 5;</code> + */ + java.util.List<src.main.proto.GrpcService.linkInfo> + getLinkList(); + /** + * <pre> + * repeated : se da la posibilidad de mandar 0 o varios + * </pre> + * + * <code>repeated .src.main.proto.linkInfo link = 5;</code> + */ + src.main.proto.GrpcService.linkInfo getLink(int index); + /** + * <pre> + * repeated : se da la posibilidad de mandar 0 o varios + * </pre> + * + * <code>repeated .src.main.proto.linkInfo link = 5;</code> + */ + int getLinkCount(); + /** + * <pre> + * repeated : se da la posibilidad de mandar 0 o varios + * </pre> + * + * <code>repeated .src.main.proto.linkInfo link = 5;</code> + */ + java.util.List<? extends src.main.proto.GrpcService.linkInfoOrBuilder> + getLinkOrBuilderList(); + /** + * <pre> + * repeated : se da la posibilidad de mandar 0 o varios + * </pre> + * + * <code>repeated .src.main.proto.linkInfo link = 5;</code> + */ + src.main.proto.GrpcService.linkInfoOrBuilder getLinkOrBuilder( + int index); + } + /** + * Protobuf type {@code src.main.proto.updateRequest} + */ + public static final class updateRequest extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:src.main.proto.updateRequest) + updateRequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use updateRequest.newBuilder() to construct. + private updateRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) { + super(builder); + } + private updateRequest() { + addressFamilyID_ = ""; + nextHop_ = ""; + asPathSegment_ = ""; + node_ = java.util.Collections.emptyList(); + link_ = java.util.Collections.emptyList(); + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new updateRequest(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private updateRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + java.lang.String s = input.readStringRequireUtf8(); + + addressFamilyID_ = s; + break; + } + case 18: { + java.lang.String s = input.readStringRequireUtf8(); + + nextHop_ = s; + break; + } + case 26: { + java.lang.String s = input.readStringRequireUtf8(); + + asPathSegment_ = s; + break; + } + case 34: { + if (!((mutable_bitField0_ & 0x00000001) != 0)) { + node_ = new java.util.ArrayList<src.main.proto.GrpcService.nodeInfo>(); + mutable_bitField0_ |= 0x00000001; + } + node_.add( + input.readMessage(src.main.proto.GrpcService.nodeInfo.parser(), extensionRegistry)); + break; + } + case 42: { + if (!((mutable_bitField0_ & 0x00000002) != 0)) { + link_ = new java.util.ArrayList<src.main.proto.GrpcService.linkInfo>(); + mutable_bitField0_ |= 0x00000002; + } + link_.add( + input.readMessage(src.main.proto.GrpcService.linkInfo.parser(), extensionRegistry)); + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000001) != 0)) { + node_ = java.util.Collections.unmodifiableList(node_); + } + if (((mutable_bitField0_ & 0x00000002) != 0)) { + link_ = java.util.Collections.unmodifiableList(link_); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return src.main.proto.GrpcService.internal_static_src_main_proto_updateRequest_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return src.main.proto.GrpcService.internal_static_src_main_proto_updateRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + src.main.proto.GrpcService.updateRequest.class, src.main.proto.GrpcService.updateRequest.Builder.class); + } + + public static final int ADDRESSFAMILYID_FIELD_NUMBER = 1; + private volatile java.lang.Object addressFamilyID_; + /** + * <code>string addressFamilyID = 1;</code> + */ + public java.lang.String getAddressFamilyID() { + java.lang.Object ref = addressFamilyID_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + addressFamilyID_ = s; + return s; + } + } + /** + * <code>string addressFamilyID = 1;</code> + */ + public com.google.protobuf.ByteString + getAddressFamilyIDBytes() { + java.lang.Object ref = addressFamilyID_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + addressFamilyID_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int NEXTHOP_FIELD_NUMBER = 2; + private volatile java.lang.Object nextHop_; + /** + * <code>string nextHop = 2;</code> + */ + public java.lang.String getNextHop() { + java.lang.Object ref = nextHop_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + nextHop_ = s; + return s; + } + } + /** + * <code>string nextHop = 2;</code> + */ + public com.google.protobuf.ByteString + getNextHopBytes() { + java.lang.Object ref = nextHop_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + nextHop_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int ASPATHSEGMENT_FIELD_NUMBER = 3; + private volatile java.lang.Object asPathSegment_; + /** + * <code>string asPathSegment = 3;</code> + */ + public java.lang.String getAsPathSegment() { + java.lang.Object ref = asPathSegment_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + asPathSegment_ = s; + return s; + } + } + /** + * <code>string asPathSegment = 3;</code> + */ + public com.google.protobuf.ByteString + getAsPathSegmentBytes() { + java.lang.Object ref = asPathSegment_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + asPathSegment_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int NODE_FIELD_NUMBER = 4; + private java.util.List<src.main.proto.GrpcService.nodeInfo> node_; + /** + * <code>repeated .src.main.proto.nodeInfo node = 4;</code> + */ + public java.util.List<src.main.proto.GrpcService.nodeInfo> getNodeList() { + return node_; + } + /** + * <code>repeated .src.main.proto.nodeInfo node = 4;</code> + */ + public java.util.List<? extends src.main.proto.GrpcService.nodeInfoOrBuilder> + getNodeOrBuilderList() { + return node_; + } + /** + * <code>repeated .src.main.proto.nodeInfo node = 4;</code> + */ + public int getNodeCount() { + return node_.size(); + } + /** + * <code>repeated .src.main.proto.nodeInfo node = 4;</code> + */ + public src.main.proto.GrpcService.nodeInfo getNode(int index) { + return node_.get(index); + } + /** + * <code>repeated .src.main.proto.nodeInfo node = 4;</code> + */ + public src.main.proto.GrpcService.nodeInfoOrBuilder getNodeOrBuilder( + int index) { + return node_.get(index); + } + + public static final int LINK_FIELD_NUMBER = 5; + private java.util.List<src.main.proto.GrpcService.linkInfo> link_; + /** + * <pre> + * repeated : se da la posibilidad de mandar 0 o varios + * </pre> + * + * <code>repeated .src.main.proto.linkInfo link = 5;</code> + */ + public java.util.List<src.main.proto.GrpcService.linkInfo> getLinkList() { + return link_; + } + /** + * <pre> + * repeated : se da la posibilidad de mandar 0 o varios + * </pre> + * + * <code>repeated .src.main.proto.linkInfo link = 5;</code> + */ + public java.util.List<? extends src.main.proto.GrpcService.linkInfoOrBuilder> + getLinkOrBuilderList() { + return link_; + } + /** + * <pre> + * repeated : se da la posibilidad de mandar 0 o varios + * </pre> + * + * <code>repeated .src.main.proto.linkInfo link = 5;</code> + */ + public int getLinkCount() { + return link_.size(); + } + /** + * <pre> + * repeated : se da la posibilidad de mandar 0 o varios + * </pre> + * + * <code>repeated .src.main.proto.linkInfo link = 5;</code> + */ + public src.main.proto.GrpcService.linkInfo getLink(int index) { + return link_.get(index); + } + /** + * <pre> + * repeated : se da la posibilidad de mandar 0 o varios + * </pre> + * + * <code>repeated .src.main.proto.linkInfo link = 5;</code> + */ + public src.main.proto.GrpcService.linkInfoOrBuilder getLinkOrBuilder( + int index) { + return link_.get(index); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!getAddressFamilyIDBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, addressFamilyID_); + } + if (!getNextHopBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, nextHop_); + } + if (!getAsPathSegmentBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 3, asPathSegment_); + } + for (int i = 0; i < node_.size(); i++) { + output.writeMessage(4, node_.get(i)); + } + for (int i = 0; i < link_.size(); i++) { + output.writeMessage(5, link_.get(i)); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!getAddressFamilyIDBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, addressFamilyID_); + } + if (!getNextHopBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, nextHop_); + } + if (!getAsPathSegmentBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, asPathSegment_); + } + for (int i = 0; i < node_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(4, node_.get(i)); + } + for (int i = 0; i < link_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(5, link_.get(i)); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof src.main.proto.GrpcService.updateRequest)) { + return super.equals(obj); + } + src.main.proto.GrpcService.updateRequest other = (src.main.proto.GrpcService.updateRequest) obj; + + if (!getAddressFamilyID() + .equals(other.getAddressFamilyID())) return false; + if (!getNextHop() + .equals(other.getNextHop())) return false; + if (!getAsPathSegment() + .equals(other.getAsPathSegment())) return false; + if (!getNodeList() + .equals(other.getNodeList())) return false; + if (!getLinkList() + .equals(other.getLinkList())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + ADDRESSFAMILYID_FIELD_NUMBER; + hash = (53 * hash) + getAddressFamilyID().hashCode(); + hash = (37 * hash) + NEXTHOP_FIELD_NUMBER; + hash = (53 * hash) + getNextHop().hashCode(); + hash = (37 * hash) + ASPATHSEGMENT_FIELD_NUMBER; + hash = (53 * hash) + getAsPathSegment().hashCode(); + if (getNodeCount() > 0) { + hash = (37 * hash) + NODE_FIELD_NUMBER; + hash = (53 * hash) + getNodeList().hashCode(); + } + if (getLinkCount() > 0) { + hash = (37 * hash) + LINK_FIELD_NUMBER; + hash = (53 * hash) + getLinkList().hashCode(); + } + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static src.main.proto.GrpcService.updateRequest parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static src.main.proto.GrpcService.updateRequest parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static src.main.proto.GrpcService.updateRequest parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static src.main.proto.GrpcService.updateRequest parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static src.main.proto.GrpcService.updateRequest parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static src.main.proto.GrpcService.updateRequest parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static src.main.proto.GrpcService.updateRequest parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static src.main.proto.GrpcService.updateRequest parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static src.main.proto.GrpcService.updateRequest parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static src.main.proto.GrpcService.updateRequest parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static src.main.proto.GrpcService.updateRequest parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static src.main.proto.GrpcService.updateRequest parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(src.main.proto.GrpcService.updateRequest prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code src.main.proto.updateRequest} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements + // @@protoc_insertion_point(builder_implements:src.main.proto.updateRequest) + src.main.proto.GrpcService.updateRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return src.main.proto.GrpcService.internal_static_src_main_proto_updateRequest_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return src.main.proto.GrpcService.internal_static_src_main_proto_updateRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + src.main.proto.GrpcService.updateRequest.class, src.main.proto.GrpcService.updateRequest.Builder.class); + } + + // Construct using src.main.proto.GrpcService.updateRequest.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + getNodeFieldBuilder(); + getLinkFieldBuilder(); + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + addressFamilyID_ = ""; + + nextHop_ = ""; + + asPathSegment_ = ""; + + if (nodeBuilder_ == null) { + node_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + } else { + nodeBuilder_.clear(); + } + if (linkBuilder_ == null) { + link_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000002); + } else { + linkBuilder_.clear(); + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return src.main.proto.GrpcService.internal_static_src_main_proto_updateRequest_descriptor; + } + + @java.lang.Override + public src.main.proto.GrpcService.updateRequest getDefaultInstanceForType() { + return src.main.proto.GrpcService.updateRequest.getDefaultInstance(); + } + + @java.lang.Override + public src.main.proto.GrpcService.updateRequest build() { + src.main.proto.GrpcService.updateRequest result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public src.main.proto.GrpcService.updateRequest buildPartial() { + src.main.proto.GrpcService.updateRequest result = new src.main.proto.GrpcService.updateRequest(this); + int from_bitField0_ = bitField0_; + result.addressFamilyID_ = addressFamilyID_; + result.nextHop_ = nextHop_; + result.asPathSegment_ = asPathSegment_; + if (nodeBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0)) { + node_ = java.util.Collections.unmodifiableList(node_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.node_ = node_; + } else { + result.node_ = nodeBuilder_.build(); + } + if (linkBuilder_ == null) { + if (((bitField0_ & 0x00000002) != 0)) { + link_ = java.util.Collections.unmodifiableList(link_); + bitField0_ = (bitField0_ & ~0x00000002); + } + result.link_ = link_; + } else { + result.link_ = linkBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof src.main.proto.GrpcService.updateRequest) { + return mergeFrom((src.main.proto.GrpcService.updateRequest)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(src.main.proto.GrpcService.updateRequest other) { + if (other == src.main.proto.GrpcService.updateRequest.getDefaultInstance()) return this; + if (!other.getAddressFamilyID().isEmpty()) { + addressFamilyID_ = other.addressFamilyID_; + onChanged(); + } + if (!other.getNextHop().isEmpty()) { + nextHop_ = other.nextHop_; + onChanged(); + } + if (!other.getAsPathSegment().isEmpty()) { + asPathSegment_ = other.asPathSegment_; + onChanged(); + } + if (nodeBuilder_ == null) { + if (!other.node_.isEmpty()) { + if (node_.isEmpty()) { + node_ = other.node_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureNodeIsMutable(); + node_.addAll(other.node_); + } + onChanged(); + } + } else { + if (!other.node_.isEmpty()) { + if (nodeBuilder_.isEmpty()) { + nodeBuilder_.dispose(); + nodeBuilder_ = null; + node_ = other.node_; + bitField0_ = (bitField0_ & ~0x00000001); + nodeBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? + getNodeFieldBuilder() : null; + } else { + nodeBuilder_.addAllMessages(other.node_); + } + } + } + if (linkBuilder_ == null) { + if (!other.link_.isEmpty()) { + if (link_.isEmpty()) { + link_ = other.link_; + bitField0_ = (bitField0_ & ~0x00000002); + } else { + ensureLinkIsMutable(); + link_.addAll(other.link_); + } + onChanged(); + } + } else { + if (!other.link_.isEmpty()) { + if (linkBuilder_.isEmpty()) { + linkBuilder_.dispose(); + linkBuilder_ = null; + link_ = other.link_; + bitField0_ = (bitField0_ & ~0x00000002); + linkBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? + getLinkFieldBuilder() : null; + } else { + linkBuilder_.addAllMessages(other.link_); + } + } + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + src.main.proto.GrpcService.updateRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (src.main.proto.GrpcService.updateRequest) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + private java.lang.Object addressFamilyID_ = ""; + /** + * <code>string addressFamilyID = 1;</code> + */ + public java.lang.String getAddressFamilyID() { + java.lang.Object ref = addressFamilyID_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + addressFamilyID_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * <code>string addressFamilyID = 1;</code> + */ + public com.google.protobuf.ByteString + getAddressFamilyIDBytes() { + java.lang.Object ref = addressFamilyID_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + addressFamilyID_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * <code>string addressFamilyID = 1;</code> + */ + public Builder setAddressFamilyID( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + addressFamilyID_ = value; + onChanged(); + return this; + } + /** + * <code>string addressFamilyID = 1;</code> + */ + public Builder clearAddressFamilyID() { + + addressFamilyID_ = getDefaultInstance().getAddressFamilyID(); + onChanged(); + return this; + } + /** + * <code>string addressFamilyID = 1;</code> + */ + public Builder setAddressFamilyIDBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + addressFamilyID_ = value; + onChanged(); + return this; + } + + private java.lang.Object nextHop_ = ""; + /** + * <code>string nextHop = 2;</code> + */ + public java.lang.String getNextHop() { + java.lang.Object ref = nextHop_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + nextHop_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * <code>string nextHop = 2;</code> + */ + public com.google.protobuf.ByteString + getNextHopBytes() { + java.lang.Object ref = nextHop_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + nextHop_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * <code>string nextHop = 2;</code> + */ + public Builder setNextHop( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + nextHop_ = value; + onChanged(); + return this; + } + /** + * <code>string nextHop = 2;</code> + */ + public Builder clearNextHop() { + + nextHop_ = getDefaultInstance().getNextHop(); + onChanged(); + return this; + } + /** + * <code>string nextHop = 2;</code> + */ + public Builder setNextHopBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + nextHop_ = value; + onChanged(); + return this; + } + + private java.lang.Object asPathSegment_ = ""; + /** + * <code>string asPathSegment = 3;</code> + */ + public java.lang.String getAsPathSegment() { + java.lang.Object ref = asPathSegment_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + asPathSegment_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * <code>string asPathSegment = 3;</code> + */ + public com.google.protobuf.ByteString + getAsPathSegmentBytes() { + java.lang.Object ref = asPathSegment_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + asPathSegment_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * <code>string asPathSegment = 3;</code> + */ + public Builder setAsPathSegment( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + asPathSegment_ = value; + onChanged(); + return this; + } + /** + * <code>string asPathSegment = 3;</code> + */ + public Builder clearAsPathSegment() { + + asPathSegment_ = getDefaultInstance().getAsPathSegment(); + onChanged(); + return this; + } + /** + * <code>string asPathSegment = 3;</code> + */ + public Builder setAsPathSegmentBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + asPathSegment_ = value; + onChanged(); + return this; + } + + private java.util.List<src.main.proto.GrpcService.nodeInfo> node_ = + java.util.Collections.emptyList(); + private void ensureNodeIsMutable() { + if (!((bitField0_ & 0x00000001) != 0)) { + node_ = new java.util.ArrayList<src.main.proto.GrpcService.nodeInfo>(node_); + bitField0_ |= 0x00000001; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + src.main.proto.GrpcService.nodeInfo, src.main.proto.GrpcService.nodeInfo.Builder, src.main.proto.GrpcService.nodeInfoOrBuilder> nodeBuilder_; + + /** + * <code>repeated .src.main.proto.nodeInfo node = 4;</code> + */ + public java.util.List<src.main.proto.GrpcService.nodeInfo> getNodeList() { + if (nodeBuilder_ == null) { + return java.util.Collections.unmodifiableList(node_); + } else { + return nodeBuilder_.getMessageList(); + } + } + /** + * <code>repeated .src.main.proto.nodeInfo node = 4;</code> + */ + public int getNodeCount() { + if (nodeBuilder_ == null) { + return node_.size(); + } else { + return nodeBuilder_.getCount(); + } + } + /** + * <code>repeated .src.main.proto.nodeInfo node = 4;</code> + */ + public src.main.proto.GrpcService.nodeInfo getNode(int index) { + if (nodeBuilder_ == null) { + return node_.get(index); + } else { + return nodeBuilder_.getMessage(index); + } + } + /** + * <code>repeated .src.main.proto.nodeInfo node = 4;</code> + */ + public Builder setNode( + int index, src.main.proto.GrpcService.nodeInfo value) { + if (nodeBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureNodeIsMutable(); + node_.set(index, value); + onChanged(); + } else { + nodeBuilder_.setMessage(index, value); + } + return this; + } + /** + * <code>repeated .src.main.proto.nodeInfo node = 4;</code> + */ + public Builder setNode( + int index, src.main.proto.GrpcService.nodeInfo.Builder builderForValue) { + if (nodeBuilder_ == null) { + ensureNodeIsMutable(); + node_.set(index, builderForValue.build()); + onChanged(); + } else { + nodeBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + * <code>repeated .src.main.proto.nodeInfo node = 4;</code> + */ + public Builder addNode(src.main.proto.GrpcService.nodeInfo value) { + if (nodeBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureNodeIsMutable(); + node_.add(value); + onChanged(); + } else { + nodeBuilder_.addMessage(value); + } + return this; + } + /** + * <code>repeated .src.main.proto.nodeInfo node = 4;</code> + */ + public Builder addNode( + int index, src.main.proto.GrpcService.nodeInfo value) { + if (nodeBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureNodeIsMutable(); + node_.add(index, value); + onChanged(); + } else { + nodeBuilder_.addMessage(index, value); + } + return this; + } + /** + * <code>repeated .src.main.proto.nodeInfo node = 4;</code> + */ + public Builder addNode( + src.main.proto.GrpcService.nodeInfo.Builder builderForValue) { + if (nodeBuilder_ == null) { + ensureNodeIsMutable(); + node_.add(builderForValue.build()); + onChanged(); + } else { + nodeBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * <code>repeated .src.main.proto.nodeInfo node = 4;</code> + */ + public Builder addNode( + int index, src.main.proto.GrpcService.nodeInfo.Builder builderForValue) { + if (nodeBuilder_ == null) { + ensureNodeIsMutable(); + node_.add(index, builderForValue.build()); + onChanged(); + } else { + nodeBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + * <code>repeated .src.main.proto.nodeInfo node = 4;</code> + */ + public Builder addAllNode( + java.lang.Iterable<? extends src.main.proto.GrpcService.nodeInfo> values) { + if (nodeBuilder_ == null) { + ensureNodeIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, node_); + onChanged(); + } else { + nodeBuilder_.addAllMessages(values); + } + return this; + } + /** + * <code>repeated .src.main.proto.nodeInfo node = 4;</code> + */ + public Builder clearNode() { + if (nodeBuilder_ == null) { + node_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + } else { + nodeBuilder_.clear(); + } + return this; + } + /** + * <code>repeated .src.main.proto.nodeInfo node = 4;</code> + */ + public Builder removeNode(int index) { + if (nodeBuilder_ == null) { + ensureNodeIsMutable(); + node_.remove(index); + onChanged(); + } else { + nodeBuilder_.remove(index); + } + return this; + } + /** + * <code>repeated .src.main.proto.nodeInfo node = 4;</code> + */ + public src.main.proto.GrpcService.nodeInfo.Builder getNodeBuilder( + int index) { + return getNodeFieldBuilder().getBuilder(index); + } + /** + * <code>repeated .src.main.proto.nodeInfo node = 4;</code> + */ + public src.main.proto.GrpcService.nodeInfoOrBuilder getNodeOrBuilder( + int index) { + if (nodeBuilder_ == null) { + return node_.get(index); } else { + return nodeBuilder_.getMessageOrBuilder(index); + } + } + /** + * <code>repeated .src.main.proto.nodeInfo node = 4;</code> + */ + public java.util.List<? extends src.main.proto.GrpcService.nodeInfoOrBuilder> + getNodeOrBuilderList() { + if (nodeBuilder_ != null) { + return nodeBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(node_); + } + } + /** + * <code>repeated .src.main.proto.nodeInfo node = 4;</code> + */ + public src.main.proto.GrpcService.nodeInfo.Builder addNodeBuilder() { + return getNodeFieldBuilder().addBuilder( + src.main.proto.GrpcService.nodeInfo.getDefaultInstance()); + } + /** + * <code>repeated .src.main.proto.nodeInfo node = 4;</code> + */ + public src.main.proto.GrpcService.nodeInfo.Builder addNodeBuilder( + int index) { + return getNodeFieldBuilder().addBuilder( + index, src.main.proto.GrpcService.nodeInfo.getDefaultInstance()); + } + /** + * <code>repeated .src.main.proto.nodeInfo node = 4;</code> + */ + public java.util.List<src.main.proto.GrpcService.nodeInfo.Builder> + getNodeBuilderList() { + return getNodeFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilderV3< + src.main.proto.GrpcService.nodeInfo, src.main.proto.GrpcService.nodeInfo.Builder, src.main.proto.GrpcService.nodeInfoOrBuilder> + getNodeFieldBuilder() { + if (nodeBuilder_ == null) { + nodeBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< + src.main.proto.GrpcService.nodeInfo, src.main.proto.GrpcService.nodeInfo.Builder, src.main.proto.GrpcService.nodeInfoOrBuilder>( + node_, + ((bitField0_ & 0x00000001) != 0), + getParentForChildren(), + isClean()); + node_ = null; + } + return nodeBuilder_; + } + + private java.util.List<src.main.proto.GrpcService.linkInfo> link_ = + java.util.Collections.emptyList(); + private void ensureLinkIsMutable() { + if (!((bitField0_ & 0x00000002) != 0)) { + link_ = new java.util.ArrayList<src.main.proto.GrpcService.linkInfo>(link_); + bitField0_ |= 0x00000002; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + src.main.proto.GrpcService.linkInfo, src.main.proto.GrpcService.linkInfo.Builder, src.main.proto.GrpcService.linkInfoOrBuilder> linkBuilder_; + + /** + * <pre> + * repeated : se da la posibilidad de mandar 0 o varios + * </pre> + * + * <code>repeated .src.main.proto.linkInfo link = 5;</code> + */ + public java.util.List<src.main.proto.GrpcService.linkInfo> getLinkList() { + if (linkBuilder_ == null) { + return java.util.Collections.unmodifiableList(link_); + } else { + return linkBuilder_.getMessageList(); + } + } + /** + * <pre> + * repeated : se da la posibilidad de mandar 0 o varios + * </pre> + * + * <code>repeated .src.main.proto.linkInfo link = 5;</code> + */ + public int getLinkCount() { + if (linkBuilder_ == null) { + return link_.size(); + } else { + return linkBuilder_.getCount(); + } + } + /** + * <pre> + * repeated : se da la posibilidad de mandar 0 o varios + * </pre> + * + * <code>repeated .src.main.proto.linkInfo link = 5;</code> + */ + public src.main.proto.GrpcService.linkInfo getLink(int index) { + if (linkBuilder_ == null) { + return link_.get(index); + } else { + return linkBuilder_.getMessage(index); + } + } + /** + * <pre> + * repeated : se da la posibilidad de mandar 0 o varios + * </pre> + * + * <code>repeated .src.main.proto.linkInfo link = 5;</code> + */ + public Builder setLink( + int index, src.main.proto.GrpcService.linkInfo value) { + if (linkBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureLinkIsMutable(); + link_.set(index, value); + onChanged(); + } else { + linkBuilder_.setMessage(index, value); + } + return this; + } + /** + * <pre> + * repeated : se da la posibilidad de mandar 0 o varios + * </pre> + * + * <code>repeated .src.main.proto.linkInfo link = 5;</code> + */ + public Builder setLink( + int index, src.main.proto.GrpcService.linkInfo.Builder builderForValue) { + if (linkBuilder_ == null) { + ensureLinkIsMutable(); + link_.set(index, builderForValue.build()); + onChanged(); + } else { + linkBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + * <pre> + * repeated : se da la posibilidad de mandar 0 o varios + * </pre> + * + * <code>repeated .src.main.proto.linkInfo link = 5;</code> + */ + public Builder addLink(src.main.proto.GrpcService.linkInfo value) { + if (linkBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureLinkIsMutable(); + link_.add(value); + onChanged(); + } else { + linkBuilder_.addMessage(value); + } + return this; + } + /** + * <pre> + * repeated : se da la posibilidad de mandar 0 o varios + * </pre> + * + * <code>repeated .src.main.proto.linkInfo link = 5;</code> + */ + public Builder addLink( + int index, src.main.proto.GrpcService.linkInfo value) { + if (linkBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureLinkIsMutable(); + link_.add(index, value); + onChanged(); + } else { + linkBuilder_.addMessage(index, value); + } + return this; + } + /** + * <pre> + * repeated : se da la posibilidad de mandar 0 o varios + * </pre> + * + * <code>repeated .src.main.proto.linkInfo link = 5;</code> + */ + public Builder addLink( + src.main.proto.GrpcService.linkInfo.Builder builderForValue) { + if (linkBuilder_ == null) { + ensureLinkIsMutable(); + link_.add(builderForValue.build()); + onChanged(); + } else { + linkBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * <pre> + * repeated : se da la posibilidad de mandar 0 o varios + * </pre> + * + * <code>repeated .src.main.proto.linkInfo link = 5;</code> + */ + public Builder addLink( + int index, src.main.proto.GrpcService.linkInfo.Builder builderForValue) { + if (linkBuilder_ == null) { + ensureLinkIsMutable(); + link_.add(index, builderForValue.build()); + onChanged(); + } else { + linkBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + * <pre> + * repeated : se da la posibilidad de mandar 0 o varios + * </pre> + * + * <code>repeated .src.main.proto.linkInfo link = 5;</code> + */ + public Builder addAllLink( + java.lang.Iterable<? extends src.main.proto.GrpcService.linkInfo> values) { + if (linkBuilder_ == null) { + ensureLinkIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, link_); + onChanged(); + } else { + linkBuilder_.addAllMessages(values); + } + return this; + } + /** + * <pre> + * repeated : se da la posibilidad de mandar 0 o varios + * </pre> + * + * <code>repeated .src.main.proto.linkInfo link = 5;</code> + */ + public Builder clearLink() { + if (linkBuilder_ == null) { + link_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000002); + onChanged(); + } else { + linkBuilder_.clear(); + } + return this; + } + /** + * <pre> + * repeated : se da la posibilidad de mandar 0 o varios + * </pre> + * + * <code>repeated .src.main.proto.linkInfo link = 5;</code> + */ + public Builder removeLink(int index) { + if (linkBuilder_ == null) { + ensureLinkIsMutable(); + link_.remove(index); + onChanged(); + } else { + linkBuilder_.remove(index); + } + return this; + } + /** + * <pre> + * repeated : se da la posibilidad de mandar 0 o varios + * </pre> + * + * <code>repeated .src.main.proto.linkInfo link = 5;</code> + */ + public src.main.proto.GrpcService.linkInfo.Builder getLinkBuilder( + int index) { + return getLinkFieldBuilder().getBuilder(index); + } + /** + * <pre> + * repeated : se da la posibilidad de mandar 0 o varios + * </pre> + * + * <code>repeated .src.main.proto.linkInfo link = 5;</code> + */ + public src.main.proto.GrpcService.linkInfoOrBuilder getLinkOrBuilder( + int index) { + if (linkBuilder_ == null) { + return link_.get(index); } else { + return linkBuilder_.getMessageOrBuilder(index); + } + } + /** + * <pre> + * repeated : se da la posibilidad de mandar 0 o varios + * </pre> + * + * <code>repeated .src.main.proto.linkInfo link = 5;</code> + */ + public java.util.List<? extends src.main.proto.GrpcService.linkInfoOrBuilder> + getLinkOrBuilderList() { + if (linkBuilder_ != null) { + return linkBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(link_); + } + } + /** + * <pre> + * repeated : se da la posibilidad de mandar 0 o varios + * </pre> + * + * <code>repeated .src.main.proto.linkInfo link = 5;</code> + */ + public src.main.proto.GrpcService.linkInfo.Builder addLinkBuilder() { + return getLinkFieldBuilder().addBuilder( + src.main.proto.GrpcService.linkInfo.getDefaultInstance()); + } + /** + * <pre> + * repeated : se da la posibilidad de mandar 0 o varios + * </pre> + * + * <code>repeated .src.main.proto.linkInfo link = 5;</code> + */ + public src.main.proto.GrpcService.linkInfo.Builder addLinkBuilder( + int index) { + return getLinkFieldBuilder().addBuilder( + index, src.main.proto.GrpcService.linkInfo.getDefaultInstance()); + } + /** + * <pre> + * repeated : se da la posibilidad de mandar 0 o varios + * </pre> + * + * <code>repeated .src.main.proto.linkInfo link = 5;</code> + */ + public java.util.List<src.main.proto.GrpcService.linkInfo.Builder> + getLinkBuilderList() { + return getLinkFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilderV3< + src.main.proto.GrpcService.linkInfo, src.main.proto.GrpcService.linkInfo.Builder, src.main.proto.GrpcService.linkInfoOrBuilder> + getLinkFieldBuilder() { + if (linkBuilder_ == null) { + linkBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< + src.main.proto.GrpcService.linkInfo, src.main.proto.GrpcService.linkInfo.Builder, src.main.proto.GrpcService.linkInfoOrBuilder>( + link_, + ((bitField0_ & 0x00000002) != 0), + getParentForChildren(), + isClean()); + link_ = null; + } + return linkBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:src.main.proto.updateRequest) + } + + // @@protoc_insertion_point(class_scope:src.main.proto.updateRequest) + private static final src.main.proto.GrpcService.updateRequest DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new src.main.proto.GrpcService.updateRequest(); + } + + public static src.main.proto.GrpcService.updateRequest getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser<updateRequest> + PARSER = new com.google.protobuf.AbstractParser<updateRequest>() { + @java.lang.Override + public updateRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new updateRequest(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser<updateRequest> parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser<updateRequest> getParserForType() { + return PARSER; + } + + @java.lang.Override + public src.main.proto.GrpcService.updateRequest getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface nodeInfoOrBuilder extends + // @@protoc_insertion_point(interface_extends:src.main.proto.nodeInfo) + com.google.protobuf.MessageOrBuilder { + + /** + * <code>string nodeName = 1;</code> + */ + java.lang.String getNodeName(); + /** + * <code>string nodeName = 1;</code> + */ + com.google.protobuf.ByteString + getNodeNameBytes(); + + /** + * <code>string igpID = 2;</code> + */ + java.lang.String getIgpID(); + /** + * <code>string igpID = 2;</code> + */ + com.google.protobuf.ByteString + getIgpIDBytes(); + + /** + * <code>string bgplsID = 3;</code> + */ + java.lang.String getBgplsID(); + /** + * <code>string bgplsID = 3;</code> + */ + com.google.protobuf.ByteString + getBgplsIDBytes(); + + /** + * <code>int32 asID = 4;</code> + */ + int getAsID(); + + /** + * <code>string learntFrom = 5;</code> + */ + java.lang.String getLearntFrom(); + /** + * <code>string learntFrom = 5;</code> + */ + com.google.protobuf.ByteString + getLearntFromBytes(); + } + /** + * Protobuf type {@code src.main.proto.nodeInfo} + */ + public static final class nodeInfo extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:src.main.proto.nodeInfo) + nodeInfoOrBuilder { + private static final long serialVersionUID = 0L; + // Use nodeInfo.newBuilder() to construct. + private nodeInfo(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) { + super(builder); + } + private nodeInfo() { + nodeName_ = ""; + igpID_ = ""; + bgplsID_ = ""; + learntFrom_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new nodeInfo(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private nodeInfo( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + java.lang.String s = input.readStringRequireUtf8(); + + nodeName_ = s; + break; + } + case 18: { + java.lang.String s = input.readStringRequireUtf8(); + + igpID_ = s; + break; + } + case 26: { + java.lang.String s = input.readStringRequireUtf8(); + + bgplsID_ = s; + break; + } + case 32: { + + asID_ = input.readInt32(); + break; + } + case 42: { + java.lang.String s = input.readStringRequireUtf8(); + + learntFrom_ = s; + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return src.main.proto.GrpcService.internal_static_src_main_proto_nodeInfo_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return src.main.proto.GrpcService.internal_static_src_main_proto_nodeInfo_fieldAccessorTable + .ensureFieldAccessorsInitialized( + src.main.proto.GrpcService.nodeInfo.class, src.main.proto.GrpcService.nodeInfo.Builder.class); + } + + public static final int NODENAME_FIELD_NUMBER = 1; + private volatile java.lang.Object nodeName_; + /** + * <code>string nodeName = 1;</code> + */ + public java.lang.String getNodeName() { + java.lang.Object ref = nodeName_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + nodeName_ = s; + return s; + } + } + /** + * <code>string nodeName = 1;</code> + */ + public com.google.protobuf.ByteString + getNodeNameBytes() { + java.lang.Object ref = nodeName_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + nodeName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int IGPID_FIELD_NUMBER = 2; + private volatile java.lang.Object igpID_; + /** + * <code>string igpID = 2;</code> + */ + public java.lang.String getIgpID() { + java.lang.Object ref = igpID_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + igpID_ = s; + return s; + } + } + /** + * <code>string igpID = 2;</code> + */ + public com.google.protobuf.ByteString + getIgpIDBytes() { + java.lang.Object ref = igpID_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + igpID_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int BGPLSID_FIELD_NUMBER = 3; + private volatile java.lang.Object bgplsID_; + /** + * <code>string bgplsID = 3;</code> + */ + public java.lang.String getBgplsID() { + java.lang.Object ref = bgplsID_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + bgplsID_ = s; + return s; + } + } + /** + * <code>string bgplsID = 3;</code> + */ + public com.google.protobuf.ByteString + getBgplsIDBytes() { + java.lang.Object ref = bgplsID_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + bgplsID_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int ASID_FIELD_NUMBER = 4; + private int asID_; + /** + * <code>int32 asID = 4;</code> + */ + public int getAsID() { + return asID_; + } + + public static final int LEARNTFROM_FIELD_NUMBER = 5; + private volatile java.lang.Object learntFrom_; + /** + * <code>string learntFrom = 5;</code> + */ + public java.lang.String getLearntFrom() { + java.lang.Object ref = learntFrom_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + learntFrom_ = s; + return s; + } + } + /** + * <code>string learntFrom = 5;</code> + */ + public com.google.protobuf.ByteString + getLearntFromBytes() { + java.lang.Object ref = learntFrom_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + learntFrom_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!getNodeNameBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, nodeName_); + } + if (!getIgpIDBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, igpID_); + } + if (!getBgplsIDBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 3, bgplsID_); + } + if (asID_ != 0) { + output.writeInt32(4, asID_); + } + if (!getLearntFromBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 5, learntFrom_); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!getNodeNameBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, nodeName_); + } + if (!getIgpIDBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, igpID_); + } + if (!getBgplsIDBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, bgplsID_); + } + if (asID_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(4, asID_); + } + if (!getLearntFromBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, learntFrom_); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof src.main.proto.GrpcService.nodeInfo)) { + return super.equals(obj); + } + src.main.proto.GrpcService.nodeInfo other = (src.main.proto.GrpcService.nodeInfo) obj; + + if (!getNodeName() + .equals(other.getNodeName())) return false; + if (!getIgpID() + .equals(other.getIgpID())) return false; + if (!getBgplsID() + .equals(other.getBgplsID())) return false; + if (getAsID() + != other.getAsID()) return false; + if (!getLearntFrom() + .equals(other.getLearntFrom())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + NODENAME_FIELD_NUMBER; + hash = (53 * hash) + getNodeName().hashCode(); + hash = (37 * hash) + IGPID_FIELD_NUMBER; + hash = (53 * hash) + getIgpID().hashCode(); + hash = (37 * hash) + BGPLSID_FIELD_NUMBER; + hash = (53 * hash) + getBgplsID().hashCode(); + hash = (37 * hash) + ASID_FIELD_NUMBER; + hash = (53 * hash) + getAsID(); + hash = (37 * hash) + LEARNTFROM_FIELD_NUMBER; + hash = (53 * hash) + getLearntFrom().hashCode(); + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static src.main.proto.GrpcService.nodeInfo parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static src.main.proto.GrpcService.nodeInfo parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static src.main.proto.GrpcService.nodeInfo parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static src.main.proto.GrpcService.nodeInfo parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static src.main.proto.GrpcService.nodeInfo parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static src.main.proto.GrpcService.nodeInfo parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static src.main.proto.GrpcService.nodeInfo parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static src.main.proto.GrpcService.nodeInfo parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static src.main.proto.GrpcService.nodeInfo parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static src.main.proto.GrpcService.nodeInfo parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static src.main.proto.GrpcService.nodeInfo parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static src.main.proto.GrpcService.nodeInfo parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(src.main.proto.GrpcService.nodeInfo prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code src.main.proto.nodeInfo} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements + // @@protoc_insertion_point(builder_implements:src.main.proto.nodeInfo) + src.main.proto.GrpcService.nodeInfoOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return src.main.proto.GrpcService.internal_static_src_main_proto_nodeInfo_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return src.main.proto.GrpcService.internal_static_src_main_proto_nodeInfo_fieldAccessorTable + .ensureFieldAccessorsInitialized( + src.main.proto.GrpcService.nodeInfo.class, src.main.proto.GrpcService.nodeInfo.Builder.class); + } + + // Construct using src.main.proto.GrpcService.nodeInfo.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + nodeName_ = ""; + + igpID_ = ""; + + bgplsID_ = ""; + + asID_ = 0; + + learntFrom_ = ""; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return src.main.proto.GrpcService.internal_static_src_main_proto_nodeInfo_descriptor; + } + + @java.lang.Override + public src.main.proto.GrpcService.nodeInfo getDefaultInstanceForType() { + return src.main.proto.GrpcService.nodeInfo.getDefaultInstance(); + } + + @java.lang.Override + public src.main.proto.GrpcService.nodeInfo build() { + src.main.proto.GrpcService.nodeInfo result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public src.main.proto.GrpcService.nodeInfo buildPartial() { + src.main.proto.GrpcService.nodeInfo result = new src.main.proto.GrpcService.nodeInfo(this); + result.nodeName_ = nodeName_; + result.igpID_ = igpID_; + result.bgplsID_ = bgplsID_; + result.asID_ = asID_; + result.learntFrom_ = learntFrom_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof src.main.proto.GrpcService.nodeInfo) { + return mergeFrom((src.main.proto.GrpcService.nodeInfo)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(src.main.proto.GrpcService.nodeInfo other) { + if (other == src.main.proto.GrpcService.nodeInfo.getDefaultInstance()) return this; + if (!other.getNodeName().isEmpty()) { + nodeName_ = other.nodeName_; + onChanged(); + } + if (!other.getIgpID().isEmpty()) { + igpID_ = other.igpID_; + onChanged(); + } + if (!other.getBgplsID().isEmpty()) { + bgplsID_ = other.bgplsID_; + onChanged(); + } + if (other.getAsID() != 0) { + setAsID(other.getAsID()); + } + if (!other.getLearntFrom().isEmpty()) { + learntFrom_ = other.learntFrom_; + onChanged(); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + src.main.proto.GrpcService.nodeInfo parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (src.main.proto.GrpcService.nodeInfo) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private java.lang.Object nodeName_ = ""; + /** + * <code>string nodeName = 1;</code> + */ + public java.lang.String getNodeName() { + java.lang.Object ref = nodeName_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + nodeName_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * <code>string nodeName = 1;</code> + */ + public com.google.protobuf.ByteString + getNodeNameBytes() { + java.lang.Object ref = nodeName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + nodeName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * <code>string nodeName = 1;</code> + */ + public Builder setNodeName( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + nodeName_ = value; + onChanged(); + return this; + } + /** + * <code>string nodeName = 1;</code> + */ + public Builder clearNodeName() { + + nodeName_ = getDefaultInstance().getNodeName(); + onChanged(); + return this; + } + /** + * <code>string nodeName = 1;</code> + */ + public Builder setNodeNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + nodeName_ = value; + onChanged(); + return this; + } + + private java.lang.Object igpID_ = ""; + /** + * <code>string igpID = 2;</code> + */ + public java.lang.String getIgpID() { + java.lang.Object ref = igpID_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + igpID_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * <code>string igpID = 2;</code> + */ + public com.google.protobuf.ByteString + getIgpIDBytes() { + java.lang.Object ref = igpID_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + igpID_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * <code>string igpID = 2;</code> + */ + public Builder setIgpID( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + igpID_ = value; + onChanged(); + return this; + } + /** + * <code>string igpID = 2;</code> + */ + public Builder clearIgpID() { + + igpID_ = getDefaultInstance().getIgpID(); + onChanged(); + return this; + } + /** + * <code>string igpID = 2;</code> + */ + public Builder setIgpIDBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + igpID_ = value; + onChanged(); + return this; + } + + private java.lang.Object bgplsID_ = ""; + /** + * <code>string bgplsID = 3;</code> + */ + public java.lang.String getBgplsID() { + java.lang.Object ref = bgplsID_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + bgplsID_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * <code>string bgplsID = 3;</code> + */ + public com.google.protobuf.ByteString + getBgplsIDBytes() { + java.lang.Object ref = bgplsID_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + bgplsID_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * <code>string bgplsID = 3;</code> + */ + public Builder setBgplsID( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + bgplsID_ = value; + onChanged(); + return this; + } + /** + * <code>string bgplsID = 3;</code> + */ + public Builder clearBgplsID() { + + bgplsID_ = getDefaultInstance().getBgplsID(); + onChanged(); + return this; + } + /** + * <code>string bgplsID = 3;</code> + */ + public Builder setBgplsIDBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + bgplsID_ = value; + onChanged(); + return this; + } + + private int asID_ ; + /** + * <code>int32 asID = 4;</code> + */ + public int getAsID() { + return asID_; + } + /** + * <code>int32 asID = 4;</code> + */ + public Builder setAsID(int value) { + + asID_ = value; + onChanged(); + return this; + } + /** + * <code>int32 asID = 4;</code> + */ + public Builder clearAsID() { + + asID_ = 0; + onChanged(); + return this; + } + + private java.lang.Object learntFrom_ = ""; + /** + * <code>string learntFrom = 5;</code> + */ + public java.lang.String getLearntFrom() { + java.lang.Object ref = learntFrom_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + learntFrom_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * <code>string learntFrom = 5;</code> + */ + public com.google.protobuf.ByteString + getLearntFromBytes() { + java.lang.Object ref = learntFrom_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + learntFrom_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * <code>string learntFrom = 5;</code> + */ + public Builder setLearntFrom( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + learntFrom_ = value; + onChanged(); + return this; + } + /** + * <code>string learntFrom = 5;</code> + */ + public Builder clearLearntFrom() { + + learntFrom_ = getDefaultInstance().getLearntFrom(); + onChanged(); + return this; + } + /** + * <code>string learntFrom = 5;</code> + */ + public Builder setLearntFromBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + learntFrom_ = value; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:src.main.proto.nodeInfo) + } + + // @@protoc_insertion_point(class_scope:src.main.proto.nodeInfo) + private static final src.main.proto.GrpcService.nodeInfo DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new src.main.proto.GrpcService.nodeInfo(); + } + + public static src.main.proto.GrpcService.nodeInfo getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser<nodeInfo> + PARSER = new com.google.protobuf.AbstractParser<nodeInfo>() { + @java.lang.Override + public nodeInfo parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new nodeInfo(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser<nodeInfo> parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser<nodeInfo> getParserForType() { + return PARSER; + } + + @java.lang.Override + public src.main.proto.GrpcService.nodeInfo getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface linkInfoOrBuilder extends + // @@protoc_insertion_point(interface_extends:src.main.proto.linkInfo) + com.google.protobuf.MessageOrBuilder { + + /** + * <code>string remoteID = 1;</code> + */ + java.lang.String getRemoteID(); + /** + * <code>string remoteID = 1;</code> + */ + com.google.protobuf.ByteString + getRemoteIDBytes(); + + /** + * <code>string localID = 2;</code> + */ + java.lang.String getLocalID(); + /** + * <code>string localID = 2;</code> + */ + com.google.protobuf.ByteString + getLocalIDBytes(); + + /** + * <code>string remoteIPv4ID = 3;</code> + */ + java.lang.String getRemoteIPv4ID(); + /** + * <code>string remoteIPv4ID = 3;</code> + */ + com.google.protobuf.ByteString + getRemoteIPv4IDBytes(); + + /** + * <code>string localIPv4ID = 4;</code> + */ + java.lang.String getLocalIPv4ID(); + /** + * <code>string localIPv4ID = 4;</code> + */ + com.google.protobuf.ByteString + getLocalIPv4IDBytes(); + + /** + * <code>.src.main.proto.NodeDescriptors local = 5;</code> + */ + boolean hasLocal(); + /** + * <code>.src.main.proto.NodeDescriptors local = 5;</code> + */ + src.main.proto.GrpcService.NodeDescriptors getLocal(); + /** + * <code>.src.main.proto.NodeDescriptors local = 5;</code> + */ + src.main.proto.GrpcService.NodeDescriptorsOrBuilder getLocalOrBuilder(); + + /** + * <code>.src.main.proto.NodeDescriptors remote = 6;</code> + */ + boolean hasRemote(); + /** + * <code>.src.main.proto.NodeDescriptors remote = 6;</code> + */ + src.main.proto.GrpcService.NodeDescriptors getRemote(); + /** + * <code>.src.main.proto.NodeDescriptors remote = 6;</code> + */ + src.main.proto.GrpcService.NodeDescriptorsOrBuilder getRemoteOrBuilder(); + + /** + * <code>float availableBw = 7;</code> + */ + float getAvailableBw(); + + /** + * <code>float residualBw = 8;</code> + */ + float getResidualBw(); + + /** + * <code>float utilized = 9;</code> + */ + float getUtilized(); + + /** + * <code>float maxLinkDelay = 10;</code> + */ + float getMaxLinkDelay(); + + /** + * <code>float minLinkDelay = 11;</code> + */ + float getMinLinkDelay(); + + /** + * <code>float delayVariation = 12;</code> + */ + float getDelayVariation(); + + /** + * <code>float delay = 13;</code> + */ + float getDelay(); + + /** + * <code>int32 TEDefaultMetric = 14;</code> + */ + int getTEDefaultMetric(); + + /** + * <code>string adjacencySid = 15;</code> + */ + java.lang.String getAdjacencySid(); + /** + * <code>string adjacencySid = 15;</code> + */ + com.google.protobuf.ByteString + getAdjacencySidBytes(); + + /** + * <code>string learntFrom = 16;</code> + */ + java.lang.String getLearntFrom(); + /** + * <code>string learntFrom = 16;</code> + */ + com.google.protobuf.ByteString + getLearntFromBytes(); + } + /** + * Protobuf type {@code src.main.proto.linkInfo} + */ + public static final class linkInfo extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:src.main.proto.linkInfo) + linkInfoOrBuilder { + private static final long serialVersionUID = 0L; + // Use linkInfo.newBuilder() to construct. + private linkInfo(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) { + super(builder); + } + private linkInfo() { + remoteID_ = ""; + localID_ = ""; + remoteIPv4ID_ = ""; + localIPv4ID_ = ""; + adjacencySid_ = ""; + learntFrom_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new linkInfo(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private linkInfo( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + java.lang.String s = input.readStringRequireUtf8(); + + remoteID_ = s; + break; + } + case 18: { + java.lang.String s = input.readStringRequireUtf8(); + + localID_ = s; + break; + } + case 26: { + java.lang.String s = input.readStringRequireUtf8(); + + remoteIPv4ID_ = s; + break; + } + case 34: { + java.lang.String s = input.readStringRequireUtf8(); + + localIPv4ID_ = s; + break; + } + case 42: { + src.main.proto.GrpcService.NodeDescriptors.Builder subBuilder = null; + if (local_ != null) { + subBuilder = local_.toBuilder(); + } + local_ = input.readMessage(src.main.proto.GrpcService.NodeDescriptors.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(local_); + local_ = subBuilder.buildPartial(); + } + + break; + } + case 50: { + src.main.proto.GrpcService.NodeDescriptors.Builder subBuilder = null; + if (remote_ != null) { + subBuilder = remote_.toBuilder(); + } + remote_ = input.readMessage(src.main.proto.GrpcService.NodeDescriptors.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(remote_); + remote_ = subBuilder.buildPartial(); + } + + break; + } + case 61: { + + availableBw_ = input.readFloat(); + break; + } + case 69: { + + residualBw_ = input.readFloat(); + break; + } + case 77: { + + utilized_ = input.readFloat(); + break; + } + case 85: { + + maxLinkDelay_ = input.readFloat(); + break; + } + case 93: { + + minLinkDelay_ = input.readFloat(); + break; + } + case 101: { + + delayVariation_ = input.readFloat(); + break; + } + case 109: { + + delay_ = input.readFloat(); + break; + } + case 112: { + + tEDefaultMetric_ = input.readInt32(); + break; + } + case 122: { + java.lang.String s = input.readStringRequireUtf8(); + + adjacencySid_ = s; + break; + } + case 130: { + java.lang.String s = input.readStringRequireUtf8(); + + learntFrom_ = s; + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return src.main.proto.GrpcService.internal_static_src_main_proto_linkInfo_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return src.main.proto.GrpcService.internal_static_src_main_proto_linkInfo_fieldAccessorTable + .ensureFieldAccessorsInitialized( + src.main.proto.GrpcService.linkInfo.class, src.main.proto.GrpcService.linkInfo.Builder.class); + } + + public static final int REMOTEID_FIELD_NUMBER = 1; + private volatile java.lang.Object remoteID_; + /** + * <code>string remoteID = 1;</code> + */ + public java.lang.String getRemoteID() { + java.lang.Object ref = remoteID_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + remoteID_ = s; + return s; + } + } + /** + * <code>string remoteID = 1;</code> + */ + public com.google.protobuf.ByteString + getRemoteIDBytes() { + java.lang.Object ref = remoteID_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + remoteID_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int LOCALID_FIELD_NUMBER = 2; + private volatile java.lang.Object localID_; + /** + * <code>string localID = 2;</code> + */ + public java.lang.String getLocalID() { + java.lang.Object ref = localID_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + localID_ = s; + return s; + } + } + /** + * <code>string localID = 2;</code> + */ + public com.google.protobuf.ByteString + getLocalIDBytes() { + java.lang.Object ref = localID_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + localID_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int REMOTEIPV4ID_FIELD_NUMBER = 3; + private volatile java.lang.Object remoteIPv4ID_; + /** + * <code>string remoteIPv4ID = 3;</code> + */ + public java.lang.String getRemoteIPv4ID() { + java.lang.Object ref = remoteIPv4ID_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + remoteIPv4ID_ = s; + return s; + } + } + /** + * <code>string remoteIPv4ID = 3;</code> + */ + public com.google.protobuf.ByteString + getRemoteIPv4IDBytes() { + java.lang.Object ref = remoteIPv4ID_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + remoteIPv4ID_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int LOCALIPV4ID_FIELD_NUMBER = 4; + private volatile java.lang.Object localIPv4ID_; + /** + * <code>string localIPv4ID = 4;</code> + */ + public java.lang.String getLocalIPv4ID() { + java.lang.Object ref = localIPv4ID_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + localIPv4ID_ = s; + return s; + } + } + /** + * <code>string localIPv4ID = 4;</code> + */ + public com.google.protobuf.ByteString + getLocalIPv4IDBytes() { + java.lang.Object ref = localIPv4ID_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + localIPv4ID_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int LOCAL_FIELD_NUMBER = 5; + private src.main.proto.GrpcService.NodeDescriptors local_; + /** + * <code>.src.main.proto.NodeDescriptors local = 5;</code> + */ + public boolean hasLocal() { + return local_ != null; + } + /** + * <code>.src.main.proto.NodeDescriptors local = 5;</code> + */ + public src.main.proto.GrpcService.NodeDescriptors getLocal() { + return local_ == null ? src.main.proto.GrpcService.NodeDescriptors.getDefaultInstance() : local_; + } + /** + * <code>.src.main.proto.NodeDescriptors local = 5;</code> + */ + public src.main.proto.GrpcService.NodeDescriptorsOrBuilder getLocalOrBuilder() { + return getLocal(); + } + + public static final int REMOTE_FIELD_NUMBER = 6; + private src.main.proto.GrpcService.NodeDescriptors remote_; + /** + * <code>.src.main.proto.NodeDescriptors remote = 6;</code> + */ + public boolean hasRemote() { + return remote_ != null; + } + /** + * <code>.src.main.proto.NodeDescriptors remote = 6;</code> + */ + public src.main.proto.GrpcService.NodeDescriptors getRemote() { + return remote_ == null ? src.main.proto.GrpcService.NodeDescriptors.getDefaultInstance() : remote_; + } + /** + * <code>.src.main.proto.NodeDescriptors remote = 6;</code> + */ + public src.main.proto.GrpcService.NodeDescriptorsOrBuilder getRemoteOrBuilder() { + return getRemote(); + } + + public static final int AVAILABLEBW_FIELD_NUMBER = 7; + private float availableBw_; + /** + * <code>float availableBw = 7;</code> + */ + public float getAvailableBw() { + return availableBw_; + } + + public static final int RESIDUALBW_FIELD_NUMBER = 8; + private float residualBw_; + /** + * <code>float residualBw = 8;</code> + */ + public float getResidualBw() { + return residualBw_; + } + + public static final int UTILIZED_FIELD_NUMBER = 9; + private float utilized_; + /** + * <code>float utilized = 9;</code> + */ + public float getUtilized() { + return utilized_; + } + + public static final int MAXLINKDELAY_FIELD_NUMBER = 10; + private float maxLinkDelay_; + /** + * <code>float maxLinkDelay = 10;</code> + */ + public float getMaxLinkDelay() { + return maxLinkDelay_; + } + + public static final int MINLINKDELAY_FIELD_NUMBER = 11; + private float minLinkDelay_; + /** + * <code>float minLinkDelay = 11;</code> + */ + public float getMinLinkDelay() { + return minLinkDelay_; + } + + public static final int DELAYVARIATION_FIELD_NUMBER = 12; + private float delayVariation_; + /** + * <code>float delayVariation = 12;</code> + */ + public float getDelayVariation() { + return delayVariation_; + } + + public static final int DELAY_FIELD_NUMBER = 13; + private float delay_; + /** + * <code>float delay = 13;</code> + */ + public float getDelay() { + return delay_; + } + + public static final int TEDEFAULTMETRIC_FIELD_NUMBER = 14; + private int tEDefaultMetric_; + /** + * <code>int32 TEDefaultMetric = 14;</code> + */ + public int getTEDefaultMetric() { + return tEDefaultMetric_; + } + + public static final int ADJACENCYSID_FIELD_NUMBER = 15; + private volatile java.lang.Object adjacencySid_; + /** + * <code>string adjacencySid = 15;</code> + */ + public java.lang.String getAdjacencySid() { + java.lang.Object ref = adjacencySid_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + adjacencySid_ = s; + return s; + } + } + /** + * <code>string adjacencySid = 15;</code> + */ + public com.google.protobuf.ByteString + getAdjacencySidBytes() { + java.lang.Object ref = adjacencySid_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + adjacencySid_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int LEARNTFROM_FIELD_NUMBER = 16; + private volatile java.lang.Object learntFrom_; + /** + * <code>string learntFrom = 16;</code> + */ + public java.lang.String getLearntFrom() { + java.lang.Object ref = learntFrom_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + learntFrom_ = s; + return s; + } + } + /** + * <code>string learntFrom = 16;</code> + */ + public com.google.protobuf.ByteString + getLearntFromBytes() { + java.lang.Object ref = learntFrom_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + learntFrom_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!getRemoteIDBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, remoteID_); + } + if (!getLocalIDBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, localID_); + } + if (!getRemoteIPv4IDBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 3, remoteIPv4ID_); + } + if (!getLocalIPv4IDBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 4, localIPv4ID_); + } + if (local_ != null) { + output.writeMessage(5, getLocal()); + } + if (remote_ != null) { + output.writeMessage(6, getRemote()); + } + if (availableBw_ != 0F) { + output.writeFloat(7, availableBw_); + } + if (residualBw_ != 0F) { + output.writeFloat(8, residualBw_); + } + if (utilized_ != 0F) { + output.writeFloat(9, utilized_); + } + if (maxLinkDelay_ != 0F) { + output.writeFloat(10, maxLinkDelay_); + } + if (minLinkDelay_ != 0F) { + output.writeFloat(11, minLinkDelay_); + } + if (delayVariation_ != 0F) { + output.writeFloat(12, delayVariation_); + } + if (delay_ != 0F) { + output.writeFloat(13, delay_); + } + if (tEDefaultMetric_ != 0) { + output.writeInt32(14, tEDefaultMetric_); + } + if (!getAdjacencySidBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 15, adjacencySid_); + } + if (!getLearntFromBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 16, learntFrom_); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!getRemoteIDBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, remoteID_); + } + if (!getLocalIDBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, localID_); + } + if (!getRemoteIPv4IDBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, remoteIPv4ID_); + } + if (!getLocalIPv4IDBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, localIPv4ID_); + } + if (local_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(5, getLocal()); + } + if (remote_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(6, getRemote()); + } + if (availableBw_ != 0F) { + size += com.google.protobuf.CodedOutputStream + .computeFloatSize(7, availableBw_); + } + if (residualBw_ != 0F) { + size += com.google.protobuf.CodedOutputStream + .computeFloatSize(8, residualBw_); + } + if (utilized_ != 0F) { + size += com.google.protobuf.CodedOutputStream + .computeFloatSize(9, utilized_); + } + if (maxLinkDelay_ != 0F) { + size += com.google.protobuf.CodedOutputStream + .computeFloatSize(10, maxLinkDelay_); + } + if (minLinkDelay_ != 0F) { + size += com.google.protobuf.CodedOutputStream + .computeFloatSize(11, minLinkDelay_); + } + if (delayVariation_ != 0F) { + size += com.google.protobuf.CodedOutputStream + .computeFloatSize(12, delayVariation_); + } + if (delay_ != 0F) { + size += com.google.protobuf.CodedOutputStream + .computeFloatSize(13, delay_); + } + if (tEDefaultMetric_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(14, tEDefaultMetric_); + } + if (!getAdjacencySidBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(15, adjacencySid_); + } + if (!getLearntFromBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(16, learntFrom_); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof src.main.proto.GrpcService.linkInfo)) { + return super.equals(obj); + } + src.main.proto.GrpcService.linkInfo other = (src.main.proto.GrpcService.linkInfo) obj; + + if (!getRemoteID() + .equals(other.getRemoteID())) return false; + if (!getLocalID() + .equals(other.getLocalID())) return false; + if (!getRemoteIPv4ID() + .equals(other.getRemoteIPv4ID())) return false; + if (!getLocalIPv4ID() + .equals(other.getLocalIPv4ID())) return false; + if (hasLocal() != other.hasLocal()) return false; + if (hasLocal()) { + if (!getLocal() + .equals(other.getLocal())) return false; + } + if (hasRemote() != other.hasRemote()) return false; + if (hasRemote()) { + if (!getRemote() + .equals(other.getRemote())) return false; + } + if (java.lang.Float.floatToIntBits(getAvailableBw()) + != java.lang.Float.floatToIntBits( + other.getAvailableBw())) return false; + if (java.lang.Float.floatToIntBits(getResidualBw()) + != java.lang.Float.floatToIntBits( + other.getResidualBw())) return false; + if (java.lang.Float.floatToIntBits(getUtilized()) + != java.lang.Float.floatToIntBits( + other.getUtilized())) return false; + if (java.lang.Float.floatToIntBits(getMaxLinkDelay()) + != java.lang.Float.floatToIntBits( + other.getMaxLinkDelay())) return false; + if (java.lang.Float.floatToIntBits(getMinLinkDelay()) + != java.lang.Float.floatToIntBits( + other.getMinLinkDelay())) return false; + if (java.lang.Float.floatToIntBits(getDelayVariation()) + != java.lang.Float.floatToIntBits( + other.getDelayVariation())) return false; + if (java.lang.Float.floatToIntBits(getDelay()) + != java.lang.Float.floatToIntBits( + other.getDelay())) return false; + if (getTEDefaultMetric() + != other.getTEDefaultMetric()) return false; + if (!getAdjacencySid() + .equals(other.getAdjacencySid())) return false; + if (!getLearntFrom() + .equals(other.getLearntFrom())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + REMOTEID_FIELD_NUMBER; + hash = (53 * hash) + getRemoteID().hashCode(); + hash = (37 * hash) + LOCALID_FIELD_NUMBER; + hash = (53 * hash) + getLocalID().hashCode(); + hash = (37 * hash) + REMOTEIPV4ID_FIELD_NUMBER; + hash = (53 * hash) + getRemoteIPv4ID().hashCode(); + hash = (37 * hash) + LOCALIPV4ID_FIELD_NUMBER; + hash = (53 * hash) + getLocalIPv4ID().hashCode(); + if (hasLocal()) { + hash = (37 * hash) + LOCAL_FIELD_NUMBER; + hash = (53 * hash) + getLocal().hashCode(); + } + if (hasRemote()) { + hash = (37 * hash) + REMOTE_FIELD_NUMBER; + hash = (53 * hash) + getRemote().hashCode(); + } + hash = (37 * hash) + AVAILABLEBW_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits( + getAvailableBw()); + hash = (37 * hash) + RESIDUALBW_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits( + getResidualBw()); + hash = (37 * hash) + UTILIZED_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits( + getUtilized()); + hash = (37 * hash) + MAXLINKDELAY_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits( + getMaxLinkDelay()); + hash = (37 * hash) + MINLINKDELAY_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits( + getMinLinkDelay()); + hash = (37 * hash) + DELAYVARIATION_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits( + getDelayVariation()); + hash = (37 * hash) + DELAY_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits( + getDelay()); + hash = (37 * hash) + TEDEFAULTMETRIC_FIELD_NUMBER; + hash = (53 * hash) + getTEDefaultMetric(); + hash = (37 * hash) + ADJACENCYSID_FIELD_NUMBER; + hash = (53 * hash) + getAdjacencySid().hashCode(); + hash = (37 * hash) + LEARNTFROM_FIELD_NUMBER; + hash = (53 * hash) + getLearntFrom().hashCode(); + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static src.main.proto.GrpcService.linkInfo parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static src.main.proto.GrpcService.linkInfo parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static src.main.proto.GrpcService.linkInfo parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static src.main.proto.GrpcService.linkInfo parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static src.main.proto.GrpcService.linkInfo parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static src.main.proto.GrpcService.linkInfo parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static src.main.proto.GrpcService.linkInfo parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static src.main.proto.GrpcService.linkInfo parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static src.main.proto.GrpcService.linkInfo parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static src.main.proto.GrpcService.linkInfo parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static src.main.proto.GrpcService.linkInfo parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static src.main.proto.GrpcService.linkInfo parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(src.main.proto.GrpcService.linkInfo prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code src.main.proto.linkInfo} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements + // @@protoc_insertion_point(builder_implements:src.main.proto.linkInfo) + src.main.proto.GrpcService.linkInfoOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return src.main.proto.GrpcService.internal_static_src_main_proto_linkInfo_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return src.main.proto.GrpcService.internal_static_src_main_proto_linkInfo_fieldAccessorTable + .ensureFieldAccessorsInitialized( + src.main.proto.GrpcService.linkInfo.class, src.main.proto.GrpcService.linkInfo.Builder.class); + } + + // Construct using src.main.proto.GrpcService.linkInfo.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + remoteID_ = ""; + + localID_ = ""; + + remoteIPv4ID_ = ""; + + localIPv4ID_ = ""; + + if (localBuilder_ == null) { + local_ = null; + } else { + local_ = null; + localBuilder_ = null; + } + if (remoteBuilder_ == null) { + remote_ = null; + } else { + remote_ = null; + remoteBuilder_ = null; + } + availableBw_ = 0F; + + residualBw_ = 0F; + + utilized_ = 0F; + + maxLinkDelay_ = 0F; + + minLinkDelay_ = 0F; + + delayVariation_ = 0F; + + delay_ = 0F; + + tEDefaultMetric_ = 0; + + adjacencySid_ = ""; + + learntFrom_ = ""; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return src.main.proto.GrpcService.internal_static_src_main_proto_linkInfo_descriptor; + } + + @java.lang.Override + public src.main.proto.GrpcService.linkInfo getDefaultInstanceForType() { + return src.main.proto.GrpcService.linkInfo.getDefaultInstance(); + } + + @java.lang.Override + public src.main.proto.GrpcService.linkInfo build() { + src.main.proto.GrpcService.linkInfo result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public src.main.proto.GrpcService.linkInfo buildPartial() { + src.main.proto.GrpcService.linkInfo result = new src.main.proto.GrpcService.linkInfo(this); + result.remoteID_ = remoteID_; + result.localID_ = localID_; + result.remoteIPv4ID_ = remoteIPv4ID_; + result.localIPv4ID_ = localIPv4ID_; + if (localBuilder_ == null) { + result.local_ = local_; + } else { + result.local_ = localBuilder_.build(); + } + if (remoteBuilder_ == null) { + result.remote_ = remote_; + } else { + result.remote_ = remoteBuilder_.build(); + } + result.availableBw_ = availableBw_; + result.residualBw_ = residualBw_; + result.utilized_ = utilized_; + result.maxLinkDelay_ = maxLinkDelay_; + result.minLinkDelay_ = minLinkDelay_; + result.delayVariation_ = delayVariation_; + result.delay_ = delay_; + result.tEDefaultMetric_ = tEDefaultMetric_; + result.adjacencySid_ = adjacencySid_; + result.learntFrom_ = learntFrom_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof src.main.proto.GrpcService.linkInfo) { + return mergeFrom((src.main.proto.GrpcService.linkInfo)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(src.main.proto.GrpcService.linkInfo other) { + if (other == src.main.proto.GrpcService.linkInfo.getDefaultInstance()) return this; + if (!other.getRemoteID().isEmpty()) { + remoteID_ = other.remoteID_; + onChanged(); + } + if (!other.getLocalID().isEmpty()) { + localID_ = other.localID_; + onChanged(); + } + if (!other.getRemoteIPv4ID().isEmpty()) { + remoteIPv4ID_ = other.remoteIPv4ID_; + onChanged(); + } + if (!other.getLocalIPv4ID().isEmpty()) { + localIPv4ID_ = other.localIPv4ID_; + onChanged(); + } + if (other.hasLocal()) { + mergeLocal(other.getLocal()); + } + if (other.hasRemote()) { + mergeRemote(other.getRemote()); + } + if (other.getAvailableBw() != 0F) { + setAvailableBw(other.getAvailableBw()); + } + if (other.getResidualBw() != 0F) { + setResidualBw(other.getResidualBw()); + } + if (other.getUtilized() != 0F) { + setUtilized(other.getUtilized()); + } + if (other.getMaxLinkDelay() != 0F) { + setMaxLinkDelay(other.getMaxLinkDelay()); + } + if (other.getMinLinkDelay() != 0F) { + setMinLinkDelay(other.getMinLinkDelay()); + } + if (other.getDelayVariation() != 0F) { + setDelayVariation(other.getDelayVariation()); + } + if (other.getDelay() != 0F) { + setDelay(other.getDelay()); + } + if (other.getTEDefaultMetric() != 0) { + setTEDefaultMetric(other.getTEDefaultMetric()); + } + if (!other.getAdjacencySid().isEmpty()) { + adjacencySid_ = other.adjacencySid_; + onChanged(); + } + if (!other.getLearntFrom().isEmpty()) { + learntFrom_ = other.learntFrom_; + onChanged(); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + src.main.proto.GrpcService.linkInfo parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (src.main.proto.GrpcService.linkInfo) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private java.lang.Object remoteID_ = ""; + /** + * <code>string remoteID = 1;</code> + */ + public java.lang.String getRemoteID() { + java.lang.Object ref = remoteID_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + remoteID_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * <code>string remoteID = 1;</code> + */ + public com.google.protobuf.ByteString + getRemoteIDBytes() { + java.lang.Object ref = remoteID_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + remoteID_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * <code>string remoteID = 1;</code> + */ + public Builder setRemoteID( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + remoteID_ = value; + onChanged(); + return this; + } + /** + * <code>string remoteID = 1;</code> + */ + public Builder clearRemoteID() { + + remoteID_ = getDefaultInstance().getRemoteID(); + onChanged(); + return this; + } + /** + * <code>string remoteID = 1;</code> + */ + public Builder setRemoteIDBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + remoteID_ = value; + onChanged(); + return this; + } + + private java.lang.Object localID_ = ""; + /** + * <code>string localID = 2;</code> + */ + public java.lang.String getLocalID() { + java.lang.Object ref = localID_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + localID_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * <code>string localID = 2;</code> + */ + public com.google.protobuf.ByteString + getLocalIDBytes() { + java.lang.Object ref = localID_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + localID_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * <code>string localID = 2;</code> + */ + public Builder setLocalID( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + localID_ = value; + onChanged(); + return this; + } + /** + * <code>string localID = 2;</code> + */ + public Builder clearLocalID() { + + localID_ = getDefaultInstance().getLocalID(); + onChanged(); + return this; + } + /** + * <code>string localID = 2;</code> + */ + public Builder setLocalIDBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + localID_ = value; + onChanged(); + return this; + } + + private java.lang.Object remoteIPv4ID_ = ""; + /** + * <code>string remoteIPv4ID = 3;</code> + */ + public java.lang.String getRemoteIPv4ID() { + java.lang.Object ref = remoteIPv4ID_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + remoteIPv4ID_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * <code>string remoteIPv4ID = 3;</code> + */ + public com.google.protobuf.ByteString + getRemoteIPv4IDBytes() { + java.lang.Object ref = remoteIPv4ID_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + remoteIPv4ID_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * <code>string remoteIPv4ID = 3;</code> + */ + public Builder setRemoteIPv4ID( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + remoteIPv4ID_ = value; + onChanged(); + return this; + } + /** + * <code>string remoteIPv4ID = 3;</code> + */ + public Builder clearRemoteIPv4ID() { + + remoteIPv4ID_ = getDefaultInstance().getRemoteIPv4ID(); + onChanged(); + return this; + } + /** + * <code>string remoteIPv4ID = 3;</code> + */ + public Builder setRemoteIPv4IDBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + remoteIPv4ID_ = value; + onChanged(); + return this; + } + + private java.lang.Object localIPv4ID_ = ""; + /** + * <code>string localIPv4ID = 4;</code> + */ + public java.lang.String getLocalIPv4ID() { + java.lang.Object ref = localIPv4ID_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + localIPv4ID_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * <code>string localIPv4ID = 4;</code> + */ + public com.google.protobuf.ByteString + getLocalIPv4IDBytes() { + java.lang.Object ref = localIPv4ID_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + localIPv4ID_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * <code>string localIPv4ID = 4;</code> + */ + public Builder setLocalIPv4ID( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + localIPv4ID_ = value; + onChanged(); + return this; + } + /** + * <code>string localIPv4ID = 4;</code> + */ + public Builder clearLocalIPv4ID() { + + localIPv4ID_ = getDefaultInstance().getLocalIPv4ID(); + onChanged(); + return this; + } + /** + * <code>string localIPv4ID = 4;</code> + */ + public Builder setLocalIPv4IDBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + localIPv4ID_ = value; + onChanged(); + return this; + } + + private src.main.proto.GrpcService.NodeDescriptors local_; + private com.google.protobuf.SingleFieldBuilderV3< + src.main.proto.GrpcService.NodeDescriptors, src.main.proto.GrpcService.NodeDescriptors.Builder, src.main.proto.GrpcService.NodeDescriptorsOrBuilder> localBuilder_; + /** + * <code>.src.main.proto.NodeDescriptors local = 5;</code> + */ + public boolean hasLocal() { + return localBuilder_ != null || local_ != null; + } + /** + * <code>.src.main.proto.NodeDescriptors local = 5;</code> + */ + public src.main.proto.GrpcService.NodeDescriptors getLocal() { + if (localBuilder_ == null) { + return local_ == null ? src.main.proto.GrpcService.NodeDescriptors.getDefaultInstance() : local_; + } else { + return localBuilder_.getMessage(); + } + } + /** + * <code>.src.main.proto.NodeDescriptors local = 5;</code> + */ + public Builder setLocal(src.main.proto.GrpcService.NodeDescriptors value) { + if (localBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + local_ = value; + onChanged(); + } else { + localBuilder_.setMessage(value); + } + + return this; + } + /** + * <code>.src.main.proto.NodeDescriptors local = 5;</code> + */ + public Builder setLocal( + src.main.proto.GrpcService.NodeDescriptors.Builder builderForValue) { + if (localBuilder_ == null) { + local_ = builderForValue.build(); + onChanged(); + } else { + localBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * <code>.src.main.proto.NodeDescriptors local = 5;</code> + */ + public Builder mergeLocal(src.main.proto.GrpcService.NodeDescriptors value) { + if (localBuilder_ == null) { + if (local_ != null) { + local_ = + src.main.proto.GrpcService.NodeDescriptors.newBuilder(local_).mergeFrom(value).buildPartial(); + } else { + local_ = value; + } + onChanged(); + } else { + localBuilder_.mergeFrom(value); + } + + return this; + } + /** + * <code>.src.main.proto.NodeDescriptors local = 5;</code> + */ + public Builder clearLocal() { + if (localBuilder_ == null) { + local_ = null; + onChanged(); + } else { + local_ = null; + localBuilder_ = null; + } + + return this; + } + /** + * <code>.src.main.proto.NodeDescriptors local = 5;</code> + */ + public src.main.proto.GrpcService.NodeDescriptors.Builder getLocalBuilder() { + + onChanged(); + return getLocalFieldBuilder().getBuilder(); + } + /** + * <code>.src.main.proto.NodeDescriptors local = 5;</code> + */ + public src.main.proto.GrpcService.NodeDescriptorsOrBuilder getLocalOrBuilder() { + if (localBuilder_ != null) { + return localBuilder_.getMessageOrBuilder(); + } else { + return local_ == null ? + src.main.proto.GrpcService.NodeDescriptors.getDefaultInstance() : local_; + } + } + /** + * <code>.src.main.proto.NodeDescriptors local = 5;</code> + */ + private com.google.protobuf.SingleFieldBuilderV3< + src.main.proto.GrpcService.NodeDescriptors, src.main.proto.GrpcService.NodeDescriptors.Builder, src.main.proto.GrpcService.NodeDescriptorsOrBuilder> + getLocalFieldBuilder() { + if (localBuilder_ == null) { + localBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + src.main.proto.GrpcService.NodeDescriptors, src.main.proto.GrpcService.NodeDescriptors.Builder, src.main.proto.GrpcService.NodeDescriptorsOrBuilder>( + getLocal(), + getParentForChildren(), + isClean()); + local_ = null; + } + return localBuilder_; + } + + private src.main.proto.GrpcService.NodeDescriptors remote_; + private com.google.protobuf.SingleFieldBuilderV3< + src.main.proto.GrpcService.NodeDescriptors, src.main.proto.GrpcService.NodeDescriptors.Builder, src.main.proto.GrpcService.NodeDescriptorsOrBuilder> remoteBuilder_; + /** + * <code>.src.main.proto.NodeDescriptors remote = 6;</code> + */ + public boolean hasRemote() { + return remoteBuilder_ != null || remote_ != null; + } + /** + * <code>.src.main.proto.NodeDescriptors remote = 6;</code> + */ + public src.main.proto.GrpcService.NodeDescriptors getRemote() { + if (remoteBuilder_ == null) { + return remote_ == null ? src.main.proto.GrpcService.NodeDescriptors.getDefaultInstance() : remote_; + } else { + return remoteBuilder_.getMessage(); + } + } + /** + * <code>.src.main.proto.NodeDescriptors remote = 6;</code> + */ + public Builder setRemote(src.main.proto.GrpcService.NodeDescriptors value) { + if (remoteBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + remote_ = value; + onChanged(); + } else { + remoteBuilder_.setMessage(value); + } + + return this; + } + /** + * <code>.src.main.proto.NodeDescriptors remote = 6;</code> + */ + public Builder setRemote( + src.main.proto.GrpcService.NodeDescriptors.Builder builderForValue) { + if (remoteBuilder_ == null) { + remote_ = builderForValue.build(); + onChanged(); + } else { + remoteBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * <code>.src.main.proto.NodeDescriptors remote = 6;</code> + */ + public Builder mergeRemote(src.main.proto.GrpcService.NodeDescriptors value) { + if (remoteBuilder_ == null) { + if (remote_ != null) { + remote_ = + src.main.proto.GrpcService.NodeDescriptors.newBuilder(remote_).mergeFrom(value).buildPartial(); + } else { + remote_ = value; + } + onChanged(); + } else { + remoteBuilder_.mergeFrom(value); + } + + return this; + } + /** + * <code>.src.main.proto.NodeDescriptors remote = 6;</code> + */ + public Builder clearRemote() { + if (remoteBuilder_ == null) { + remote_ = null; + onChanged(); + } else { + remote_ = null; + remoteBuilder_ = null; + } + + return this; + } + /** + * <code>.src.main.proto.NodeDescriptors remote = 6;</code> + */ + public src.main.proto.GrpcService.NodeDescriptors.Builder getRemoteBuilder() { + + onChanged(); + return getRemoteFieldBuilder().getBuilder(); + } + /** + * <code>.src.main.proto.NodeDescriptors remote = 6;</code> + */ + public src.main.proto.GrpcService.NodeDescriptorsOrBuilder getRemoteOrBuilder() { + if (remoteBuilder_ != null) { + return remoteBuilder_.getMessageOrBuilder(); + } else { + return remote_ == null ? + src.main.proto.GrpcService.NodeDescriptors.getDefaultInstance() : remote_; + } + } + /** + * <code>.src.main.proto.NodeDescriptors remote = 6;</code> + */ + private com.google.protobuf.SingleFieldBuilderV3< + src.main.proto.GrpcService.NodeDescriptors, src.main.proto.GrpcService.NodeDescriptors.Builder, src.main.proto.GrpcService.NodeDescriptorsOrBuilder> + getRemoteFieldBuilder() { + if (remoteBuilder_ == null) { + remoteBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + src.main.proto.GrpcService.NodeDescriptors, src.main.proto.GrpcService.NodeDescriptors.Builder, src.main.proto.GrpcService.NodeDescriptorsOrBuilder>( + getRemote(), + getParentForChildren(), + isClean()); + remote_ = null; + } + return remoteBuilder_; + } + + private float availableBw_ ; + /** + * <code>float availableBw = 7;</code> + */ + public float getAvailableBw() { + return availableBw_; + } + /** + * <code>float availableBw = 7;</code> + */ + public Builder setAvailableBw(float value) { + + availableBw_ = value; + onChanged(); + return this; + } + /** + * <code>float availableBw = 7;</code> + */ + public Builder clearAvailableBw() { + + availableBw_ = 0F; + onChanged(); + return this; + } + + private float residualBw_ ; + /** + * <code>float residualBw = 8;</code> + */ + public float getResidualBw() { + return residualBw_; + } + /** + * <code>float residualBw = 8;</code> + */ + public Builder setResidualBw(float value) { + + residualBw_ = value; + onChanged(); + return this; + } + /** + * <code>float residualBw = 8;</code> + */ + public Builder clearResidualBw() { + + residualBw_ = 0F; + onChanged(); + return this; + } + + private float utilized_ ; + /** + * <code>float utilized = 9;</code> + */ + public float getUtilized() { + return utilized_; + } + /** + * <code>float utilized = 9;</code> + */ + public Builder setUtilized(float value) { + + utilized_ = value; + onChanged(); + return this; + } + /** + * <code>float utilized = 9;</code> + */ + public Builder clearUtilized() { + + utilized_ = 0F; + onChanged(); + return this; + } + + private float maxLinkDelay_ ; + /** + * <code>float maxLinkDelay = 10;</code> + */ + public float getMaxLinkDelay() { + return maxLinkDelay_; + } + /** + * <code>float maxLinkDelay = 10;</code> + */ + public Builder setMaxLinkDelay(float value) { + + maxLinkDelay_ = value; + onChanged(); + return this; + } + /** + * <code>float maxLinkDelay = 10;</code> + */ + public Builder clearMaxLinkDelay() { + + maxLinkDelay_ = 0F; + onChanged(); + return this; + } + + private float minLinkDelay_ ; + /** + * <code>float minLinkDelay = 11;</code> + */ + public float getMinLinkDelay() { + return minLinkDelay_; + } + /** + * <code>float minLinkDelay = 11;</code> + */ + public Builder setMinLinkDelay(float value) { + + minLinkDelay_ = value; + onChanged(); + return this; + } + /** + * <code>float minLinkDelay = 11;</code> + */ + public Builder clearMinLinkDelay() { + + minLinkDelay_ = 0F; + onChanged(); + return this; + } + + private float delayVariation_ ; + /** + * <code>float delayVariation = 12;</code> + */ + public float getDelayVariation() { + return delayVariation_; + } + /** + * <code>float delayVariation = 12;</code> + */ + public Builder setDelayVariation(float value) { + + delayVariation_ = value; + onChanged(); + return this; + } + /** + * <code>float delayVariation = 12;</code> + */ + public Builder clearDelayVariation() { + + delayVariation_ = 0F; + onChanged(); + return this; + } + + private float delay_ ; + /** + * <code>float delay = 13;</code> + */ + public float getDelay() { + return delay_; + } + /** + * <code>float delay = 13;</code> + */ + public Builder setDelay(float value) { + + delay_ = value; + onChanged(); + return this; + } + /** + * <code>float delay = 13;</code> + */ + public Builder clearDelay() { + + delay_ = 0F; + onChanged(); + return this; + } + + private int tEDefaultMetric_ ; + /** + * <code>int32 TEDefaultMetric = 14;</code> + */ + public int getTEDefaultMetric() { + return tEDefaultMetric_; + } + /** + * <code>int32 TEDefaultMetric = 14;</code> + */ + public Builder setTEDefaultMetric(int value) { + + tEDefaultMetric_ = value; + onChanged(); + return this; + } + /** + * <code>int32 TEDefaultMetric = 14;</code> + */ + public Builder clearTEDefaultMetric() { + + tEDefaultMetric_ = 0; + onChanged(); + return this; + } + + private java.lang.Object adjacencySid_ = ""; + /** + * <code>string adjacencySid = 15;</code> + */ + public java.lang.String getAdjacencySid() { + java.lang.Object ref = adjacencySid_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + adjacencySid_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * <code>string adjacencySid = 15;</code> + */ + public com.google.protobuf.ByteString + getAdjacencySidBytes() { + java.lang.Object ref = adjacencySid_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + adjacencySid_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * <code>string adjacencySid = 15;</code> + */ + public Builder setAdjacencySid( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + adjacencySid_ = value; + onChanged(); + return this; + } + /** + * <code>string adjacencySid = 15;</code> + */ + public Builder clearAdjacencySid() { + + adjacencySid_ = getDefaultInstance().getAdjacencySid(); + onChanged(); + return this; + } + /** + * <code>string adjacencySid = 15;</code> + */ + public Builder setAdjacencySidBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + adjacencySid_ = value; + onChanged(); + return this; + } + + private java.lang.Object learntFrom_ = ""; + /** + * <code>string learntFrom = 16;</code> + */ + public java.lang.String getLearntFrom() { + java.lang.Object ref = learntFrom_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + learntFrom_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * <code>string learntFrom = 16;</code> + */ + public com.google.protobuf.ByteString + getLearntFromBytes() { + java.lang.Object ref = learntFrom_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + learntFrom_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * <code>string learntFrom = 16;</code> + */ + public Builder setLearntFrom( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + learntFrom_ = value; + onChanged(); + return this; + } + /** + * <code>string learntFrom = 16;</code> + */ + public Builder clearLearntFrom() { + + learntFrom_ = getDefaultInstance().getLearntFrom(); + onChanged(); + return this; + } + /** + * <code>string learntFrom = 16;</code> + */ + public Builder setLearntFromBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + learntFrom_ = value; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:src.main.proto.linkInfo) + } + + // @@protoc_insertion_point(class_scope:src.main.proto.linkInfo) + private static final src.main.proto.GrpcService.linkInfo DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new src.main.proto.GrpcService.linkInfo(); + } + + public static src.main.proto.GrpcService.linkInfo getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser<linkInfo> + PARSER = new com.google.protobuf.AbstractParser<linkInfo>() { + @java.lang.Override + public linkInfo parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new linkInfo(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser<linkInfo> parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser<linkInfo> getParserForType() { + return PARSER; + } + + @java.lang.Override + public src.main.proto.GrpcService.linkInfo getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface NodeDescriptorsOrBuilder extends + // @@protoc_insertion_point(interface_extends:src.main.proto.NodeDescriptors) + com.google.protobuf.MessageOrBuilder { + + /** + * <code>string asNumber = 1;</code> + */ + java.lang.String getAsNumber(); + /** + * <code>string asNumber = 1;</code> + */ + com.google.protobuf.ByteString + getAsNumberBytes(); + + /** + * <code>string bgplsID = 2;</code> + */ + java.lang.String getBgplsID(); + /** + * <code>string bgplsID = 2;</code> + */ + com.google.protobuf.ByteString + getBgplsIDBytes(); + } + /** + * Protobuf type {@code src.main.proto.NodeDescriptors} + */ + public static final class NodeDescriptors extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:src.main.proto.NodeDescriptors) + NodeDescriptorsOrBuilder { + private static final long serialVersionUID = 0L; + // Use NodeDescriptors.newBuilder() to construct. + private NodeDescriptors(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) { + super(builder); + } + private NodeDescriptors() { + asNumber_ = ""; + bgplsID_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new NodeDescriptors(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private NodeDescriptors( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + java.lang.String s = input.readStringRequireUtf8(); + + asNumber_ = s; + break; + } + case 18: { + java.lang.String s = input.readStringRequireUtf8(); + + bgplsID_ = s; + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return src.main.proto.GrpcService.internal_static_src_main_proto_NodeDescriptors_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return src.main.proto.GrpcService.internal_static_src_main_proto_NodeDescriptors_fieldAccessorTable + .ensureFieldAccessorsInitialized( + src.main.proto.GrpcService.NodeDescriptors.class, src.main.proto.GrpcService.NodeDescriptors.Builder.class); + } + + public static final int ASNUMBER_FIELD_NUMBER = 1; + private volatile java.lang.Object asNumber_; + /** + * <code>string asNumber = 1;</code> + */ + public java.lang.String getAsNumber() { + java.lang.Object ref = asNumber_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + asNumber_ = s; + return s; + } + } + /** + * <code>string asNumber = 1;</code> + */ + public com.google.protobuf.ByteString + getAsNumberBytes() { + java.lang.Object ref = asNumber_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + asNumber_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int BGPLSID_FIELD_NUMBER = 2; + private volatile java.lang.Object bgplsID_; + /** + * <code>string bgplsID = 2;</code> + */ + public java.lang.String getBgplsID() { + java.lang.Object ref = bgplsID_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + bgplsID_ = s; + return s; + } + } + /** + * <code>string bgplsID = 2;</code> + */ + public com.google.protobuf.ByteString + getBgplsIDBytes() { + java.lang.Object ref = bgplsID_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + bgplsID_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!getAsNumberBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, asNumber_); + } + if (!getBgplsIDBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, bgplsID_); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!getAsNumberBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, asNumber_); + } + if (!getBgplsIDBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, bgplsID_); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof src.main.proto.GrpcService.NodeDescriptors)) { + return super.equals(obj); + } + src.main.proto.GrpcService.NodeDescriptors other = (src.main.proto.GrpcService.NodeDescriptors) obj; + + if (!getAsNumber() + .equals(other.getAsNumber())) return false; + if (!getBgplsID() + .equals(other.getBgplsID())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + ASNUMBER_FIELD_NUMBER; + hash = (53 * hash) + getAsNumber().hashCode(); + hash = (37 * hash) + BGPLSID_FIELD_NUMBER; + hash = (53 * hash) + getBgplsID().hashCode(); + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static src.main.proto.GrpcService.NodeDescriptors parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static src.main.proto.GrpcService.NodeDescriptors parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static src.main.proto.GrpcService.NodeDescriptors parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static src.main.proto.GrpcService.NodeDescriptors parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static src.main.proto.GrpcService.NodeDescriptors parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static src.main.proto.GrpcService.NodeDescriptors parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static src.main.proto.GrpcService.NodeDescriptors parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static src.main.proto.GrpcService.NodeDescriptors parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static src.main.proto.GrpcService.NodeDescriptors parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static src.main.proto.GrpcService.NodeDescriptors parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static src.main.proto.GrpcService.NodeDescriptors parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static src.main.proto.GrpcService.NodeDescriptors parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(src.main.proto.GrpcService.NodeDescriptors prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code src.main.proto.NodeDescriptors} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements + // @@protoc_insertion_point(builder_implements:src.main.proto.NodeDescriptors) + src.main.proto.GrpcService.NodeDescriptorsOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return src.main.proto.GrpcService.internal_static_src_main_proto_NodeDescriptors_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return src.main.proto.GrpcService.internal_static_src_main_proto_NodeDescriptors_fieldAccessorTable + .ensureFieldAccessorsInitialized( + src.main.proto.GrpcService.NodeDescriptors.class, src.main.proto.GrpcService.NodeDescriptors.Builder.class); + } + + // Construct using src.main.proto.GrpcService.NodeDescriptors.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + asNumber_ = ""; + + bgplsID_ = ""; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return src.main.proto.GrpcService.internal_static_src_main_proto_NodeDescriptors_descriptor; + } + + @java.lang.Override + public src.main.proto.GrpcService.NodeDescriptors getDefaultInstanceForType() { + return src.main.proto.GrpcService.NodeDescriptors.getDefaultInstance(); + } + + @java.lang.Override + public src.main.proto.GrpcService.NodeDescriptors build() { + src.main.proto.GrpcService.NodeDescriptors result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public src.main.proto.GrpcService.NodeDescriptors buildPartial() { + src.main.proto.GrpcService.NodeDescriptors result = new src.main.proto.GrpcService.NodeDescriptors(this); + result.asNumber_ = asNumber_; + result.bgplsID_ = bgplsID_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof src.main.proto.GrpcService.NodeDescriptors) { + return mergeFrom((src.main.proto.GrpcService.NodeDescriptors)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(src.main.proto.GrpcService.NodeDescriptors other) { + if (other == src.main.proto.GrpcService.NodeDescriptors.getDefaultInstance()) return this; + if (!other.getAsNumber().isEmpty()) { + asNumber_ = other.asNumber_; + onChanged(); + } + if (!other.getBgplsID().isEmpty()) { + bgplsID_ = other.bgplsID_; + onChanged(); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + src.main.proto.GrpcService.NodeDescriptors parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (src.main.proto.GrpcService.NodeDescriptors) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private java.lang.Object asNumber_ = ""; + /** + * <code>string asNumber = 1;</code> + */ + public java.lang.String getAsNumber() { + java.lang.Object ref = asNumber_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + asNumber_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * <code>string asNumber = 1;</code> + */ + public com.google.protobuf.ByteString + getAsNumberBytes() { + java.lang.Object ref = asNumber_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + asNumber_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * <code>string asNumber = 1;</code> + */ + public Builder setAsNumber( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + asNumber_ = value; + onChanged(); + return this; + } + /** + * <code>string asNumber = 1;</code> + */ + public Builder clearAsNumber() { + + asNumber_ = getDefaultInstance().getAsNumber(); + onChanged(); + return this; + } + /** + * <code>string asNumber = 1;</code> + */ + public Builder setAsNumberBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + asNumber_ = value; + onChanged(); + return this; + } + + private java.lang.Object bgplsID_ = ""; + /** + * <code>string bgplsID = 2;</code> + */ + public java.lang.String getBgplsID() { + java.lang.Object ref = bgplsID_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + bgplsID_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * <code>string bgplsID = 2;</code> + */ + public com.google.protobuf.ByteString + getBgplsIDBytes() { + java.lang.Object ref = bgplsID_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + bgplsID_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * <code>string bgplsID = 2;</code> + */ + public Builder setBgplsID( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + bgplsID_ = value; + onChanged(); + return this; + } + /** + * <code>string bgplsID = 2;</code> + */ + public Builder clearBgplsID() { + + bgplsID_ = getDefaultInstance().getBgplsID(); + onChanged(); + return this; + } + /** + * <code>string bgplsID = 2;</code> + */ + public Builder setBgplsIDBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + bgplsID_ = value; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:src.main.proto.NodeDescriptors) + } + + // @@protoc_insertion_point(class_scope:src.main.proto.NodeDescriptors) + private static final src.main.proto.GrpcService.NodeDescriptors DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new src.main.proto.GrpcService.NodeDescriptors(); + } + + public static src.main.proto.GrpcService.NodeDescriptors getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser<NodeDescriptors> + PARSER = new com.google.protobuf.AbstractParser<NodeDescriptors>() { + @java.lang.Override + public NodeDescriptors parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new NodeDescriptors(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser<NodeDescriptors> parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser<NodeDescriptors> getParserForType() { + return PARSER; + } + + @java.lang.Override + public src.main.proto.GrpcService.NodeDescriptors getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface updateResponseOrBuilder extends + // @@protoc_insertion_point(interface_extends:src.main.proto.updateResponse) + com.google.protobuf.MessageOrBuilder { + + /** + * <code>string ack = 1;</code> + */ + java.lang.String getAck(); + /** + * <code>string ack = 1;</code> + */ + com.google.protobuf.ByteString + getAckBytes(); + } + /** + * Protobuf type {@code src.main.proto.updateResponse} + */ + public static final class updateResponse extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:src.main.proto.updateResponse) + updateResponseOrBuilder { + private static final long serialVersionUID = 0L; + // Use updateResponse.newBuilder() to construct. + private updateResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) { + super(builder); + } + private updateResponse() { + ack_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new updateResponse(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private updateResponse( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + java.lang.String s = input.readStringRequireUtf8(); + + ack_ = s; + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return src.main.proto.GrpcService.internal_static_src_main_proto_updateResponse_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return src.main.proto.GrpcService.internal_static_src_main_proto_updateResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + src.main.proto.GrpcService.updateResponse.class, src.main.proto.GrpcService.updateResponse.Builder.class); + } + + public static final int ACK_FIELD_NUMBER = 1; + private volatile java.lang.Object ack_; + /** + * <code>string ack = 1;</code> + */ + public java.lang.String getAck() { + java.lang.Object ref = ack_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + ack_ = s; + return s; + } + } + /** + * <code>string ack = 1;</code> + */ + public com.google.protobuf.ByteString + getAckBytes() { + java.lang.Object ref = ack_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + ack_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!getAckBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, ack_); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!getAckBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, ack_); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof src.main.proto.GrpcService.updateResponse)) { + return super.equals(obj); + } + src.main.proto.GrpcService.updateResponse other = (src.main.proto.GrpcService.updateResponse) obj; + + if (!getAck() + .equals(other.getAck())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + ACK_FIELD_NUMBER; + hash = (53 * hash) + getAck().hashCode(); + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static src.main.proto.GrpcService.updateResponse parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static src.main.proto.GrpcService.updateResponse parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static src.main.proto.GrpcService.updateResponse parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static src.main.proto.GrpcService.updateResponse parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static src.main.proto.GrpcService.updateResponse parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static src.main.proto.GrpcService.updateResponse parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static src.main.proto.GrpcService.updateResponse parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static src.main.proto.GrpcService.updateResponse parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static src.main.proto.GrpcService.updateResponse parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static src.main.proto.GrpcService.updateResponse parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static src.main.proto.GrpcService.updateResponse parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static src.main.proto.GrpcService.updateResponse parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(src.main.proto.GrpcService.updateResponse prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code src.main.proto.updateResponse} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements + // @@protoc_insertion_point(builder_implements:src.main.proto.updateResponse) + src.main.proto.GrpcService.updateResponseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return src.main.proto.GrpcService.internal_static_src_main_proto_updateResponse_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return src.main.proto.GrpcService.internal_static_src_main_proto_updateResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + src.main.proto.GrpcService.updateResponse.class, src.main.proto.GrpcService.updateResponse.Builder.class); + } + + // Construct using src.main.proto.GrpcService.updateResponse.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + ack_ = ""; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return src.main.proto.GrpcService.internal_static_src_main_proto_updateResponse_descriptor; + } + + @java.lang.Override + public src.main.proto.GrpcService.updateResponse getDefaultInstanceForType() { + return src.main.proto.GrpcService.updateResponse.getDefaultInstance(); + } + + @java.lang.Override + public src.main.proto.GrpcService.updateResponse build() { + src.main.proto.GrpcService.updateResponse result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public src.main.proto.GrpcService.updateResponse buildPartial() { + src.main.proto.GrpcService.updateResponse result = new src.main.proto.GrpcService.updateResponse(this); + result.ack_ = ack_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof src.main.proto.GrpcService.updateResponse) { + return mergeFrom((src.main.proto.GrpcService.updateResponse)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(src.main.proto.GrpcService.updateResponse other) { + if (other == src.main.proto.GrpcService.updateResponse.getDefaultInstance()) return this; + if (!other.getAck().isEmpty()) { + ack_ = other.ack_; + onChanged(); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + src.main.proto.GrpcService.updateResponse parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (src.main.proto.GrpcService.updateResponse) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private java.lang.Object ack_ = ""; + /** + * <code>string ack = 1;</code> + */ + public java.lang.String getAck() { + java.lang.Object ref = ack_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + ack_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * <code>string ack = 1;</code> + */ + public com.google.protobuf.ByteString + getAckBytes() { + java.lang.Object ref = ack_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + ack_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * <code>string ack = 1;</code> + */ + public Builder setAck( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + ack_ = value; + onChanged(); + return this; + } + /** + * <code>string ack = 1;</code> + */ + public Builder clearAck() { + + ack_ = getDefaultInstance().getAck(); + onChanged(); + return this; + } + /** + * <code>string ack = 1;</code> + */ + public Builder setAckBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + ack_ = value; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:src.main.proto.updateResponse) + } + + // @@protoc_insertion_point(class_scope:src.main.proto.updateResponse) + private static final src.main.proto.GrpcService.updateResponse DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new src.main.proto.GrpcService.updateResponse(); + } + + public static src.main.proto.GrpcService.updateResponse getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser<updateResponse> + PARSER = new com.google.protobuf.AbstractParser<updateResponse>() { + @java.lang.Override + public updateResponse parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new updateResponse(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser<updateResponse> parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser<updateResponse> getParserForType() { + return PARSER; + } + + @java.lang.Override + public src.main.proto.GrpcService.updateResponse getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_src_main_proto_updateRequest_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_src_main_proto_updateRequest_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_src_main_proto_nodeInfo_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_src_main_proto_nodeInfo_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_src_main_proto_linkInfo_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_src_main_proto_linkInfo_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_src_main_proto_NodeDescriptors_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_src_main_proto_NodeDescriptors_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_src_main_proto_updateResponse_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_src_main_proto_updateResponse_fieldAccessorTable; + + public static com.google.protobuf.Descriptors.FileDescriptor + getDescriptor() { + return descriptor; + } + private static com.google.protobuf.Descriptors.FileDescriptor + descriptor; + static { + java.lang.String[] descriptorData = { + "\n\021grpcService.proto\022\016src.main.proto\"\240\001\n\r" + + "updateRequest\022\027\n\017addressFamilyID\030\001 \001(\t\022\017" + + "\n\007nextHop\030\002 \001(\t\022\025\n\rasPathSegment\030\003 \001(\t\022&" + + "\n\004node\030\004 \003(\0132\030.src.main.proto.nodeInfo\022&" + + "\n\004link\030\005 \003(\0132\030.src.main.proto.linkInfo\"^" + + "\n\010nodeInfo\022\020\n\010nodeName\030\001 \001(\t\022\r\n\005igpID\030\002 " + + "\001(\t\022\017\n\007bgplsID\030\003 \001(\t\022\014\n\004asID\030\004 \001(\005\022\022\n\nle" + + "arntFrom\030\005 \001(\t\"\212\003\n\010linkInfo\022\020\n\010remoteID\030" + + "\001 \001(\t\022\017\n\007localID\030\002 \001(\t\022\024\n\014remoteIPv4ID\030\003" + + " \001(\t\022\023\n\013localIPv4ID\030\004 \001(\t\022.\n\005local\030\005 \001(\013" + + "2\037.src.main.proto.NodeDescriptors\022/\n\006rem" + + "ote\030\006 \001(\0132\037.src.main.proto.NodeDescripto" + + "rs\022\023\n\013availableBw\030\007 \001(\002\022\022\n\nresidualBw\030\010 " + + "\001(\002\022\020\n\010utilized\030\t \001(\002\022\024\n\014maxLinkDelay\030\n " + + "\001(\002\022\024\n\014minLinkDelay\030\013 \001(\002\022\026\n\016delayVariat" + + "ion\030\014 \001(\002\022\r\n\005delay\030\r \001(\002\022\027\n\017TEDefaultMet" + + "ric\030\016 \001(\005\022\024\n\014adjacencySid\030\017 \001(\t\022\022\n\nlearn" + + "tFrom\030\020 \001(\t\"4\n\017NodeDescriptors\022\020\n\010asNumb" + + "er\030\001 \001(\t\022\017\n\007bgplsID\030\002 \001(\t\"\035\n\016updateRespo" + + "nse\022\013\n\003ack\030\001 \001(\t2X\n\rupdateService\022G\n\006upd" + + "ate\022\035.src.main.proto.updateRequest\032\036.src" + + ".main.proto.updateResponseb\006proto3" + }; + descriptor = com.google.protobuf.Descriptors.FileDescriptor + .internalBuildGeneratedFileFrom(descriptorData, + new com.google.protobuf.Descriptors.FileDescriptor[] { + }); + internal_static_src_main_proto_updateRequest_descriptor = + getDescriptor().getMessageTypes().get(0); + internal_static_src_main_proto_updateRequest_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_src_main_proto_updateRequest_descriptor, + new java.lang.String[] { "AddressFamilyID", "NextHop", "AsPathSegment", "Node", "Link", }); + internal_static_src_main_proto_nodeInfo_descriptor = + getDescriptor().getMessageTypes().get(1); + internal_static_src_main_proto_nodeInfo_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_src_main_proto_nodeInfo_descriptor, + new java.lang.String[] { "NodeName", "IgpID", "BgplsID", "AsID", "LearntFrom", }); + internal_static_src_main_proto_linkInfo_descriptor = + getDescriptor().getMessageTypes().get(2); + internal_static_src_main_proto_linkInfo_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_src_main_proto_linkInfo_descriptor, + new java.lang.String[] { "RemoteID", "LocalID", "RemoteIPv4ID", "LocalIPv4ID", "Local", "Remote", "AvailableBw", "ResidualBw", "Utilized", "MaxLinkDelay", "MinLinkDelay", "DelayVariation", "Delay", "TEDefaultMetric", "AdjacencySid", "LearntFrom", }); + internal_static_src_main_proto_NodeDescriptors_descriptor = + getDescriptor().getMessageTypes().get(3); + internal_static_src_main_proto_NodeDescriptors_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_src_main_proto_NodeDescriptors_descriptor, + new java.lang.String[] { "AsNumber", "BgplsID", }); + internal_static_src_main_proto_updateResponse_descriptor = + getDescriptor().getMessageTypes().get(4); + internal_static_src_main_proto_updateResponse_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_src_main_proto_updateResponse_descriptor, + new java.lang.String[] { "Ack", }); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/src/bgpls_speaker/service/java/netphony-topology/updateWriter.json b/src/bgpls_speaker/service/java/netphony-topology/updateWriter.json new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/common/Constants.py b/src/common/Constants.py index 79e0f69caf4fa2617a04c7e03080dbf31018e70d..06d7a75a401de56269efd697300410983baac105 100644 --- a/src/common/Constants.py +++ b/src/common/Constants.py @@ -75,6 +75,7 @@ class ServiceNameEnum(Enum): ANALYTICSBACKEND = 'analytics-backend' QOSPROFILE = 'qos-profile' OSMCLIENT = 'osm-client' + RESOURCEMANAGER = 'resource-manager' # Used for test and debugging only DLT_GATEWAY = 'dltgateway' @@ -118,6 +119,7 @@ DEFAULT_SERVICE_GRPC_PORTS = { ServiceNameEnum.ANALYTICSBACKEND .value : 30090, ServiceNameEnum.AUTOMATION .value : 30200, ServiceNameEnum.OSMCLIENT .value : 30210, + ServiceNameEnum.RESOURCEMANAGER .value : 40010, # Used for test and debugging only ServiceNameEnum.DLT_GATEWAY .value : 50051, diff --git a/src/context/service/database/Link.py b/src/context/service/database/Link.py index 8176873dee99b5856df70e5ce38e4f53412e1a61..903ed98e72a4065d145d87e5edf86f35b9f5b38f 100644 --- a/src/context/service/database/Link.py +++ b/src/context/service/database/Link.py @@ -104,7 +104,9 @@ def link_set(db_engine : Engine, messagebroker : MessageBroker, request : Link) }) topology_uuids.add(endpoint_topology_uuid) - total_capacity_gbps, used_capacity_gbps = None, None + total_capacity_gbps, used_capacity_gbps, available_bw = None, None, None + link_delay, min_max_link_delay, delay_variation = None, None, None + if request.HasField('attributes'): attributes = request.attributes @@ -119,14 +121,35 @@ def link_set(db_engine : Engine, messagebroker : MessageBroker, request : Link) else: used_capacity_gbps = 0.0 + + if 'available_bw' in attribute_names: # Extraer available_bw + available_bw = attributes.available_bw + + else: + available_bw = 0.0 + + if 'link_delay' in attribute_names: + link_delay = attributes.link_delay + + if 'min_max_link_delay' in attribute_names: + min_max_link_delay = attributes.min_max_link_delay + + if 'delay_variation' in attribute_names: + delay_variation = attributes.delay_variation + link_data = [{ 'link_uuid' : link_uuid, 'link_name' : link_name, 'link_type' : link_type, 'total_capacity_gbps' : total_capacity_gbps, 'used_capacity_gbps' : used_capacity_gbps, + 'available_bw': available_bw, + 'link_delay' : link_delay, + 'min_max_link_delay' : min_max_link_delay, + 'delay_variation' : delay_variation, 'created_at' : now, 'updated_at' : now, + }] def callback(session : Session) -> Tuple[bool, List[Dict]]: @@ -138,6 +161,10 @@ def link_set(db_engine : Engine, messagebroker : MessageBroker, request : Link) link_type = stmt.excluded.link_type, total_capacity_gbps = stmt.excluded.total_capacity_gbps, used_capacity_gbps = stmt.excluded.used_capacity_gbps, + available_bw = stmt.excluded.available_bw, + link_delay = stmt.excluded.link_delay, + min_max_link_delay = stmt.excluded.min_max_link_delay, + delay_variation = stmt.excluded.delay_variation, updated_at = stmt.excluded.updated_at, ) ) diff --git a/src/context/service/database/models/LinkModel.py b/src/context/service/database/models/LinkModel.py index 77a9d9fa4e22693971b8f6fa24a16e826d9cdf36..b61357885d462cd9756c681dc850175235356327 100644 --- a/src/context/service/database/models/LinkModel.py +++ b/src/context/service/database/models/LinkModel.py @@ -31,8 +31,12 @@ class LinkModel(_Base): link_type = Column(Enum(ORM_LinkTypeEnum), nullable=False) total_capacity_gbps = Column(Float, nullable=True) used_capacity_gbps = Column(Float, nullable=True) + available_bw = Column(Float, nullable=True) created_at = Column(DateTime, nullable=False) updated_at = Column(DateTime, nullable=False) + link_delay = Column(Float, nullable=True) + min_max_link_delay = Column(Float, nullable=True) + delay_variation = Column(Float, nullable=True) #topology_links = relationship('TopologyLinkModel', back_populates='link') link_endpoints = relationship('LinkEndPointModel') # lazy='joined', back_populates='link' @@ -63,6 +67,18 @@ class LinkModel(_Base): if self.used_capacity_gbps is not None: attributes : Dict = result.setdefault('attributes', dict()) attributes.setdefault('used_capacity_gbps', self.used_capacity_gbps) + if self.available_bw is not None: + attributes: Dict = result.setdefault('attributes', dict()) + attributes.setdefault('available_bw', self.available_bw) + if self.link_delay is not None: + attributes: Dict = result.setdefault('attributes', dict()) + attributes.setdefault('link_delay', self.link_delay) + if self.min_max_link_delay is not None: + attributes: Dict = result.setdefault('attributes', dict()) + attributes.setdefault('min_max_link_delay', self.min_max_link_delay) + if self.delay_variation is not None: + attributes: Dict = result.setdefault('attributes', dict()) + attributes.setdefault('delay_variation', self.delay_variation) return result class LinkEndPointModel(_Base): diff --git a/src/pcep/README.txt b/src/pcep/README.txt new file mode 100644 index 0000000000000000000000000000000000000000..b1e6954867efe9e2caa8c026424b0ddc6529501c --- /dev/null +++ b/src/pcep/README.txt @@ -0,0 +1,13 @@ +The actual computation logic and PCEP handling is implemented in Java within the [Netphony-PCE repository], specifically in the **new_module_pce** branch. + To execute: + # 1: cd Netphony/netphony-pce/ + # 2: docker build -t netphony-pce . + # 3: docker run -d -p 4189:4189 -p 6666:6666 -p 10060:10060 --name netphony-pce-container netphony-pce + + +This Python module communicates with it via a gRPC interface. + +Current Status: +Fully functional Python gRPC client-server service. +Sends LSP requests to external Java-based PCE via gRPC. +Receives and manages LSP information in CockroachDatabase. \ No newline at end of file diff --git a/src/pcep/client/PcepClient.py b/src/pcep/client/PcepClient.py index 967a7c5e73d9e71cbb10a4b28841aac7821c1408..6c10c12232437579b6b367268dc55f46e7e6b425 100644 --- a/src/pcep/client/PcepClient.py +++ b/src/pcep/client/PcepClient.py @@ -102,7 +102,6 @@ class PcepClient: @RETRY_DECORATOR def showLSPDB(self): - """Método para mostrar los LSP Paths desde la base de datos""" LOGGER.debug("Showing the LSP Paths from the database") # Llamamos a LspDB para obtener la lista de LSPs try: @@ -149,33 +148,3 @@ class PcepClient: LOGGER.warning("Error Message: %s", str(commandresponse.error_message)) return commandresponse - - # @staticmethod - # def get_loadbalancer_ip(service_name, namespace='tfs'): - # config.load_kube_config() # Cargar configuración de kubeconfig - # v1 = client.CoreV1Api() - # service = v1.read_namespaced_service(service_name, namespace) - # return service.status.load_balancer.ingress[0].ip - - # @staticmethod - # def get_loadbalancer_port(service_name, namespace='tfs', target_port_name=None): - # """Obtiene el puerto del LoadBalancer de un servicio en Kubernetes.""" - # config.load_kube_config() - # v1 = client.CoreV1Api() - # service = v1.read_namespaced_service(service_name, namespace) - # # Extraer el puerto de la especificación - # ports = service.spec.ports - # if not ports: - # raise RuntimeError(f"No ports defined for service {service_name}") - - # # Si se especifica un target_port_name, buscarlo - # if target_port_name: - # for port in ports: - # if port.name == target_port_name: - # return port.port # Devuelve el puerto externo - # raise RuntimeError(f"No port found with name {target_port_name} in service {service_name}") - - # # Si no se especifica, devuelve el primer puerto - # return ports[0].port - - diff --git a/src/policy/target/generated-sources/grpc/context/ContextOuterClass.java b/src/policy/target/generated-sources/grpc/context/ContextOuterClass.java index d85f89f6f073f375fa6dd80496de7020c4af98a7..f0b8003a66640f7139f9363f79fbdf8f668eb638 100644 --- a/src/policy/target/generated-sources/grpc/context/ContextOuterClass.java +++ b/src/policy/target/generated-sources/grpc/context/ContextOuterClass.java @@ -23619,6 +23619,30 @@ public final class ContextOuterClass { * @return The usedCapacityGbps. */ float getUsedCapacityGbps(); + + /** + * <code>float available_bw = 3;</code> + * @return The availableBw. + */ + float getAvailableBw(); + + /** + * <code>float link_delay = 5;</code> + * @return The linkDelay. + */ + float getLinkDelay(); + + /** + * <code>float min_max_link_delay = 6;</code> + * @return The minMaxLinkDelay. + */ + float getMinMaxLinkDelay(); + + /** + * <code>float delay_variation = 7;</code> + * @return The delayVariation. + */ + float getDelayVariation(); } /** @@ -23678,6 +23702,58 @@ public final class ContextOuterClass { return usedCapacityGbps_; } + public static final int AVAILABLE_BW_FIELD_NUMBER = 3; + + private float availableBw_ = 0F; + + /** + * <code>float available_bw = 3;</code> + * @return The availableBw. + */ + @java.lang.Override + public float getAvailableBw() { + return availableBw_; + } + + public static final int LINK_DELAY_FIELD_NUMBER = 5; + + private float linkDelay_ = 0F; + + /** + * <code>float link_delay = 5;</code> + * @return The linkDelay. + */ + @java.lang.Override + public float getLinkDelay() { + return linkDelay_; + } + + public static final int MIN_MAX_LINK_DELAY_FIELD_NUMBER = 6; + + private float minMaxLinkDelay_ = 0F; + + /** + * <code>float min_max_link_delay = 6;</code> + * @return The minMaxLinkDelay. + */ + @java.lang.Override + public float getMinMaxLinkDelay() { + return minMaxLinkDelay_; + } + + public static final int DELAY_VARIATION_FIELD_NUMBER = 7; + + private float delayVariation_ = 0F; + + /** + * <code>float delay_variation = 7;</code> + * @return The delayVariation. + */ + @java.lang.Override + public float getDelayVariation() { + return delayVariation_; + } + private byte memoizedIsInitialized = -1; @java.lang.Override @@ -23699,6 +23775,18 @@ public final class ContextOuterClass { if (java.lang.Float.floatToRawIntBits(usedCapacityGbps_) != 0) { output.writeFloat(2, usedCapacityGbps_); } + if (java.lang.Float.floatToRawIntBits(availableBw_) != 0) { + output.writeFloat(3, availableBw_); + } + if (java.lang.Float.floatToRawIntBits(linkDelay_) != 0) { + output.writeFloat(5, linkDelay_); + } + if (java.lang.Float.floatToRawIntBits(minMaxLinkDelay_) != 0) { + output.writeFloat(6, minMaxLinkDelay_); + } + if (java.lang.Float.floatToRawIntBits(delayVariation_) != 0) { + output.writeFloat(7, delayVariation_); + } getUnknownFields().writeTo(output); } @@ -23714,6 +23802,18 @@ public final class ContextOuterClass { if (java.lang.Float.floatToRawIntBits(usedCapacityGbps_) != 0) { size += com.google.protobuf.CodedOutputStream.computeFloatSize(2, usedCapacityGbps_); } + if (java.lang.Float.floatToRawIntBits(availableBw_) != 0) { + size += com.google.protobuf.CodedOutputStream.computeFloatSize(3, availableBw_); + } + if (java.lang.Float.floatToRawIntBits(linkDelay_) != 0) { + size += com.google.protobuf.CodedOutputStream.computeFloatSize(5, linkDelay_); + } + if (java.lang.Float.floatToRawIntBits(minMaxLinkDelay_) != 0) { + size += com.google.protobuf.CodedOutputStream.computeFloatSize(6, minMaxLinkDelay_); + } + if (java.lang.Float.floatToRawIntBits(delayVariation_) != 0) { + size += com.google.protobuf.CodedOutputStream.computeFloatSize(7, delayVariation_); + } size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; @@ -23732,6 +23832,14 @@ public final class ContextOuterClass { return false; if (java.lang.Float.floatToIntBits(getUsedCapacityGbps()) != java.lang.Float.floatToIntBits(other.getUsedCapacityGbps())) return false; + if (java.lang.Float.floatToIntBits(getAvailableBw()) != java.lang.Float.floatToIntBits(other.getAvailableBw())) + return false; + if (java.lang.Float.floatToIntBits(getLinkDelay()) != java.lang.Float.floatToIntBits(other.getLinkDelay())) + return false; + if (java.lang.Float.floatToIntBits(getMinMaxLinkDelay()) != java.lang.Float.floatToIntBits(other.getMinMaxLinkDelay())) + return false; + if (java.lang.Float.floatToIntBits(getDelayVariation()) != java.lang.Float.floatToIntBits(other.getDelayVariation())) + return false; if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; @@ -23748,6 +23856,14 @@ public final class ContextOuterClass { hash = (53 * hash) + java.lang.Float.floatToIntBits(getTotalCapacityGbps()); hash = (37 * hash) + USED_CAPACITY_GBPS_FIELD_NUMBER; hash = (53 * hash) + java.lang.Float.floatToIntBits(getUsedCapacityGbps()); + hash = (37 * hash) + AVAILABLE_BW_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits(getAvailableBw()); + hash = (37 * hash) + LINK_DELAY_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits(getLinkDelay()); + hash = (37 * hash) + MIN_MAX_LINK_DELAY_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits(getMinMaxLinkDelay()); + hash = (37 * hash) + DELAY_VARIATION_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits(getDelayVariation()); hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; @@ -23854,6 +23970,10 @@ public final class ContextOuterClass { bitField0_ = 0; totalCapacityGbps_ = 0F; usedCapacityGbps_ = 0F; + availableBw_ = 0F; + linkDelay_ = 0F; + minMaxLinkDelay_ = 0F; + delayVariation_ = 0F; return this; } @@ -23894,6 +24014,18 @@ public final class ContextOuterClass { if (((from_bitField0_ & 0x00000002) != 0)) { result.usedCapacityGbps_ = usedCapacityGbps_; } + if (((from_bitField0_ & 0x00000004) != 0)) { + result.availableBw_ = availableBw_; + } + if (((from_bitField0_ & 0x00000008) != 0)) { + result.linkDelay_ = linkDelay_; + } + if (((from_bitField0_ & 0x00000010) != 0)) { + result.minMaxLinkDelay_ = minMaxLinkDelay_; + } + if (((from_bitField0_ & 0x00000020) != 0)) { + result.delayVariation_ = delayVariation_; + } } @java.lang.Override @@ -23915,6 +24047,18 @@ public final class ContextOuterClass { if (other.getUsedCapacityGbps() != 0F) { setUsedCapacityGbps(other.getUsedCapacityGbps()); } + if (other.getAvailableBw() != 0F) { + setAvailableBw(other.getAvailableBw()); + } + if (other.getLinkDelay() != 0F) { + setLinkDelay(other.getLinkDelay()); + } + if (other.getMinMaxLinkDelay() != 0F) { + setMinMaxLinkDelay(other.getMinMaxLinkDelay()); + } + if (other.getDelayVariation() != 0F) { + setDelayVariation(other.getDelayVariation()); + } this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; @@ -23952,6 +24096,34 @@ public final class ContextOuterClass { break; } // case 21 + case 29: + { + availableBw_ = input.readFloat(); + bitField0_ |= 0x00000004; + break; + } + // case 29 + case 45: + { + linkDelay_ = input.readFloat(); + bitField0_ |= 0x00000008; + break; + } + // case 45 + case 53: + { + minMaxLinkDelay_ = input.readFloat(); + bitField0_ |= 0x00000010; + break; + } + // case 53 + case 61: + { + delayVariation_ = input.readFloat(); + bitField0_ |= 0x00000020; + break; + } + // case 61 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { @@ -24043,6 +24215,142 @@ public final class ContextOuterClass { return this; } + private float availableBw_; + + /** + * <code>float available_bw = 3;</code> + * @return The availableBw. + */ + @java.lang.Override + public float getAvailableBw() { + return availableBw_; + } + + /** + * <code>float available_bw = 3;</code> + * @param value The availableBw to set. + * @return This builder for chaining. + */ + public Builder setAvailableBw(float value) { + availableBw_ = value; + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + + /** + * <code>float available_bw = 3;</code> + * @return This builder for chaining. + */ + public Builder clearAvailableBw() { + bitField0_ = (bitField0_ & ~0x00000004); + availableBw_ = 0F; + onChanged(); + return this; + } + + private float linkDelay_; + + /** + * <code>float link_delay = 5;</code> + * @return The linkDelay. + */ + @java.lang.Override + public float getLinkDelay() { + return linkDelay_; + } + + /** + * <code>float link_delay = 5;</code> + * @param value The linkDelay to set. + * @return This builder for chaining. + */ + public Builder setLinkDelay(float value) { + linkDelay_ = value; + bitField0_ |= 0x00000008; + onChanged(); + return this; + } + + /** + * <code>float link_delay = 5;</code> + * @return This builder for chaining. + */ + public Builder clearLinkDelay() { + bitField0_ = (bitField0_ & ~0x00000008); + linkDelay_ = 0F; + onChanged(); + return this; + } + + private float minMaxLinkDelay_; + + /** + * <code>float min_max_link_delay = 6;</code> + * @return The minMaxLinkDelay. + */ + @java.lang.Override + public float getMinMaxLinkDelay() { + return minMaxLinkDelay_; + } + + /** + * <code>float min_max_link_delay = 6;</code> + * @param value The minMaxLinkDelay to set. + * @return This builder for chaining. + */ + public Builder setMinMaxLinkDelay(float value) { + minMaxLinkDelay_ = value; + bitField0_ |= 0x00000010; + onChanged(); + return this; + } + + /** + * <code>float min_max_link_delay = 6;</code> + * @return This builder for chaining. + */ + public Builder clearMinMaxLinkDelay() { + bitField0_ = (bitField0_ & ~0x00000010); + minMaxLinkDelay_ = 0F; + onChanged(); + return this; + } + + private float delayVariation_; + + /** + * <code>float delay_variation = 7;</code> + * @return The delayVariation. + */ + @java.lang.Override + public float getDelayVariation() { + return delayVariation_; + } + + /** + * <code>float delay_variation = 7;</code> + * @param value The delayVariation to set. + * @return This builder for chaining. + */ + public Builder setDelayVariation(float value) { + delayVariation_ = value; + bitField0_ |= 0x00000020; + onChanged(); + return this; + } + + /** + * <code>float delay_variation = 7;</code> + * @return This builder for chaining. + */ + public Builder clearDelayVariation() { + bitField0_ = (bitField0_ & ~0x00000020); + delayVariation_ = 0F; + onChanged(); + return this; + } + @java.lang.Override public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.setUnknownFields(unknownFields); @@ -81140,8 +81448,8 @@ public final class ContextOuterClass { private static com.google.protobuf.Descriptors.FileDescriptor descriptor; static { - java.lang.String[] descriptorData = { "\n\rcontext.proto\022\007context\032\031google/protobu" + "f/any.proto\032\tacl.proto\032\026kpi_sample_types" + ".proto\"\007\n\005Empty\"\024\n\004Uuid\022\014\n\004uuid\030\001 \001(\t\"\036\n" + "\tTimestamp\022\021\n\ttimestamp\030\001 \001(\001\"Z\n\005Event\022%" + "\n\ttimestamp\030\001 \001(\0132\022.context.Timestamp\022*\n" + "\nevent_type\030\002 \001(\0162\026.context.EventTypeEnu" + "m\"0\n\tContextId\022#\n\014context_uuid\030\001 \001(\0132\r.c" + "ontext.Uuid\"\351\001\n\007Context\022&\n\ncontext_id\030\001 " + "\001(\0132\022.context.ContextId\022\014\n\004name\030\002 \001(\t\022)\n" + "\014topology_ids\030\003 \003(\0132\023.context.TopologyId" + "\022\'\n\013service_ids\030\004 \003(\0132\022.context.ServiceI" + "d\022#\n\tslice_ids\030\005 \003(\0132\020.context.SliceId\022/" + "\n\ncontroller\030\006 \001(\0132\033.context.TeraFlowCon" + "troller\"8\n\rContextIdList\022\'\n\013context_ids\030" + "\001 \003(\0132\022.context.ContextId\"1\n\013ContextList" + "\022\"\n\010contexts\030\001 \003(\0132\020.context.Context\"U\n\014" + "ContextEvent\022\035\n\005event\030\001 \001(\0132\016.context.Ev" + "ent\022&\n\ncontext_id\030\002 \001(\0132\022.context.Contex" + "tId\"Z\n\nTopologyId\022&\n\ncontext_id\030\001 \001(\0132\022." + "context.ContextId\022$\n\rtopology_uuid\030\002 \001(\013" + "2\r.context.Uuid\"\267\001\n\010Topology\022(\n\013topology" + "_id\030\001 \001(\0132\023.context.TopologyId\022\014\n\004name\030\002" + " \001(\t\022%\n\ndevice_ids\030\003 \003(\0132\021.context.Devic" + "eId\022!\n\010link_ids\030\004 \003(\0132\017.context.LinkId\022)" + "\n\020optical_link_ids\030\005 \003(\0132\017.context.LinkI" + "d\"\266\001\n\017TopologyDetails\022(\n\013topology_id\030\001 \001" + "(\0132\023.context.TopologyId\022\014\n\004name\030\002 \001(\t\022 \n" + "\007devices\030\003 \003(\0132\017.context.Device\022\034\n\005links" + "\030\004 \003(\0132\r.context.Link\022+\n\roptical_links\030\005" + " \003(\0132\024.context.OpticalLink\";\n\016TopologyId" + "List\022)\n\014topology_ids\030\001 \003(\0132\023.context.Top" + "ologyId\"5\n\014TopologyList\022%\n\ntopologies\030\001 " + "\003(\0132\021.context.Topology\"X\n\rTopologyEvent\022" + "\035\n\005event\030\001 \001(\0132\016.context.Event\022(\n\013topolo" + "gy_id\030\002 \001(\0132\023.context.TopologyId\".\n\010Devi" + "ceId\022\"\n\013device_uuid\030\001 \001(\0132\r.context.Uuid" + "\"\372\002\n\006Device\022$\n\tdevice_id\030\001 \001(\0132\021.context" + ".DeviceId\022\014\n\004name\030\002 \001(\t\022\023\n\013device_type\030\003" + " \001(\t\022,\n\rdevice_config\030\004 \001(\0132\025.context.De" + "viceConfig\022G\n\031device_operational_status\030" + "\005 \001(\0162$.context.DeviceOperationalStatusE" + "num\0221\n\016device_drivers\030\006 \003(\0162\031.context.De" + "viceDriverEnum\022+\n\020device_endpoints\030\007 \003(\013" + "2\021.context.EndPoint\022&\n\ncomponents\030\010 \003(\0132" + "\022.context.Component\022(\n\rcontroller_id\030\t \001" + "(\0132\021.context.DeviceId\"\311\001\n\tComponent\022%\n\016c" + "omponent_uuid\030\001 \001(\0132\r.context.Uuid\022\014\n\004na" + "me\030\002 \001(\t\022\014\n\004type\030\003 \001(\t\0226\n\nattributes\030\004 \003" + "(\0132\".context.Component.AttributesEntry\022\016" + "\n\006parent\030\005 \001(\t\0321\n\017AttributesEntry\022\013\n\003key" + "\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"9\n\014DeviceConfi" + "g\022)\n\014config_rules\030\001 \003(\0132\023.context.Config" + "Rule\"5\n\014DeviceIdList\022%\n\ndevice_ids\030\001 \003(\013" + "2\021.context.DeviceId\".\n\nDeviceList\022 \n\007dev" + "ices\030\001 \003(\0132\017.context.Device\"\216\001\n\014DeviceFi" + "lter\022)\n\ndevice_ids\030\001 \001(\0132\025.context.Devic" + "eIdList\022\031\n\021include_endpoints\030\002 \001(\010\022\034\n\024in" + "clude_config_rules\030\003 \001(\010\022\032\n\022include_comp" + "onents\030\004 \001(\010\"\200\001\n\013DeviceEvent\022\035\n\005event\030\001 " + "\001(\0132\016.context.Event\022$\n\tdevice_id\030\002 \001(\0132\021" + ".context.DeviceId\022,\n\rdevice_config\030\003 \001(\013" + "2\025.context.DeviceConfig\"*\n\006LinkId\022 \n\tlin" + "k_uuid\030\001 \001(\0132\r.context.Uuid\"I\n\016LinkAttri" + "butes\022\033\n\023total_capacity_gbps\030\001 \001(\002\022\032\n\022us" + "ed_capacity_gbps\030\002 \001(\002\"\275\001\n\004Link\022 \n\007link_" + "id\030\001 \001(\0132\017.context.LinkId\022\014\n\004name\030\002 \001(\t\022" + "(\n\tlink_type\030\003 \001(\0162\025.context.LinkTypeEnu" + "m\022.\n\021link_endpoint_ids\030\004 \003(\0132\023.context.E" + "ndPointId\022+\n\nattributes\030\005 \001(\0132\027.context." + "LinkAttributes\"/\n\nLinkIdList\022!\n\010link_ids" + "\030\001 \003(\0132\017.context.LinkId\"(\n\010LinkList\022\034\n\005l" + "inks\030\001 \003(\0132\r.context.Link\"L\n\tLinkEvent\022\035" + "\n\005event\030\001 \001(\0132\016.context.Event\022 \n\007link_id" + "\030\002 \001(\0132\017.context.LinkId\"X\n\tServiceId\022&\n\n" + "context_id\030\001 \001(\0132\022.context.ContextId\022#\n\014" + "service_uuid\030\002 \001(\0132\r.context.Uuid\"\333\002\n\007Se" + "rvice\022&\n\nservice_id\030\001 \001(\0132\022.context.Serv" + "iceId\022\014\n\004name\030\002 \001(\t\022.\n\014service_type\030\003 \001(" + "\0162\030.context.ServiceTypeEnum\0221\n\024service_e" + "ndpoint_ids\030\004 \003(\0132\023.context.EndPointId\0220" + "\n\023service_constraints\030\005 \003(\0132\023.context.Co" + "nstraint\022.\n\016service_status\030\006 \001(\0132\026.conte" + "xt.ServiceStatus\022.\n\016service_config\030\007 \001(\013" + "2\026.context.ServiceConfig\022%\n\ttimestamp\030\010 " + "\001(\0132\022.context.Timestamp\"C\n\rServiceStatus" + "\0222\n\016service_status\030\001 \001(\0162\032.context.Servi" + "ceStatusEnum\":\n\rServiceConfig\022)\n\014config_" + "rules\030\001 \003(\0132\023.context.ConfigRule\"8\n\rServ" + "iceIdList\022\'\n\013service_ids\030\001 \003(\0132\022.context" + ".ServiceId\"1\n\013ServiceList\022\"\n\010services\030\001 " + "\003(\0132\020.context.Service\"\225\001\n\rServiceFilter\022" + "+\n\013service_ids\030\001 \001(\0132\026.context.ServiceId" + "List\022\034\n\024include_endpoint_ids\030\002 \001(\010\022\033\n\023in" + "clude_constraints\030\003 \001(\010\022\034\n\024include_confi" + "g_rules\030\004 \001(\010\"U\n\014ServiceEvent\022\035\n\005event\030\001" + " \001(\0132\016.context.Event\022&\n\nservice_id\030\002 \001(\013" + "2\022.context.ServiceId\"T\n\007SliceId\022&\n\nconte" + "xt_id\030\001 \001(\0132\022.context.ContextId\022!\n\nslice" + "_uuid\030\002 \001(\0132\r.context.Uuid\"\240\003\n\005Slice\022\"\n\010" + "slice_id\030\001 \001(\0132\020.context.SliceId\022\014\n\004name" + "\030\002 \001(\t\022/\n\022slice_endpoint_ids\030\003 \003(\0132\023.con" + "text.EndPointId\022.\n\021slice_constraints\030\004 \003" + "(\0132\023.context.Constraint\022-\n\021slice_service" + "_ids\030\005 \003(\0132\022.context.ServiceId\022,\n\022slice_" + "subslice_ids\030\006 \003(\0132\020.context.SliceId\022*\n\014" + "slice_status\030\007 \001(\0132\024.context.SliceStatus" + "\022*\n\014slice_config\030\010 \001(\0132\024.context.SliceCo" + "nfig\022(\n\013slice_owner\030\t \001(\0132\023.context.Slic" + "eOwner\022%\n\ttimestamp\030\n \001(\0132\022.context.Time" + "stamp\"E\n\nSliceOwner\022!\n\nowner_uuid\030\001 \001(\0132" + "\r.context.Uuid\022\024\n\014owner_string\030\002 \001(\t\"=\n\013" + "SliceStatus\022.\n\014slice_status\030\001 \001(\0162\030.cont" + "ext.SliceStatusEnum\"8\n\013SliceConfig\022)\n\014co" + "nfig_rules\030\001 \003(\0132\023.context.ConfigRule\"2\n" + "\013SliceIdList\022#\n\tslice_ids\030\001 \003(\0132\020.contex" + "t.SliceId\"+\n\tSliceList\022\036\n\006slices\030\001 \003(\0132\016" + ".context.Slice\"\312\001\n\013SliceFilter\022\'\n\tslice_" + "ids\030\001 \001(\0132\024.context.SliceIdList\022\034\n\024inclu" + "de_endpoint_ids\030\002 \001(\010\022\033\n\023include_constra" + "ints\030\003 \001(\010\022\033\n\023include_service_ids\030\004 \001(\010\022" + "\034\n\024include_subslice_ids\030\005 \001(\010\022\034\n\024include" + "_config_rules\030\006 \001(\010\"O\n\nSliceEvent\022\035\n\005eve" + "nt\030\001 \001(\0132\016.context.Event\022\"\n\010slice_id\030\002 \001" + "(\0132\020.context.SliceId\"6\n\014ConnectionId\022&\n\017" + "connection_uuid\030\001 \001(\0132\r.context.Uuid\"2\n\025" + "ConnectionSettings_L0\022\031\n\021lsp_symbolic_na" + "me\030\001 \001(\t\"\236\001\n\025ConnectionSettings_L2\022\027\n\017sr" + "c_mac_address\030\001 \001(\t\022\027\n\017dst_mac_address\030\002" + " \001(\t\022\022\n\nether_type\030\003 \001(\r\022\017\n\007vlan_id\030\004 \001(" + "\r\022\022\n\nmpls_label\030\005 \001(\r\022\032\n\022mpls_traffic_cl" + "ass\030\006 \001(\r\"t\n\025ConnectionSettings_L3\022\026\n\016sr" + "c_ip_address\030\001 \001(\t\022\026\n\016dst_ip_address\030\002 \001" + "(\t\022\014\n\004dscp\030\003 \001(\r\022\020\n\010protocol\030\004 \001(\r\022\013\n\003tt" + "l\030\005 \001(\r\"[\n\025ConnectionSettings_L4\022\020\n\010src_" + "port\030\001 \001(\r\022\020\n\010dst_port\030\002 \001(\r\022\021\n\ttcp_flag" + "s\030\003 \001(\r\022\013\n\003ttl\030\004 \001(\r\"\304\001\n\022ConnectionSetti" + "ngs\022*\n\002l0\030\001 \001(\0132\036.context.ConnectionSett" + "ings_L0\022*\n\002l2\030\002 \001(\0132\036.context.Connection" + "Settings_L2\022*\n\002l3\030\003 \001(\0132\036.context.Connec" + "tionSettings_L3\022*\n\002l4\030\004 \001(\0132\036.context.Co" + "nnectionSettings_L4\"\363\001\n\nConnection\022,\n\rco" + "nnection_id\030\001 \001(\0132\025.context.ConnectionId" + "\022&\n\nservice_id\030\002 \001(\0132\022.context.ServiceId" + "\0223\n\026path_hops_endpoint_ids\030\003 \003(\0132\023.conte" + "xt.EndPointId\022+\n\017sub_service_ids\030\004 \003(\0132\022" + ".context.ServiceId\022-\n\010settings\030\005 \001(\0132\033.c" + "ontext.ConnectionSettings\"A\n\020ConnectionI" + "dList\022-\n\016connection_ids\030\001 \003(\0132\025.context." + "ConnectionId\":\n\016ConnectionList\022(\n\013connec" + "tions\030\001 \003(\0132\023.context.Connection\"^\n\017Conn" + "ectionEvent\022\035\n\005event\030\001 \001(\0132\016.context.Eve" + "nt\022,\n\rconnection_id\030\002 \001(\0132\025.context.Conn" + "ectionId\"\202\001\n\nEndPointId\022(\n\013topology_id\030\001" + " \001(\0132\023.context.TopologyId\022$\n\tdevice_id\030\002" + " \001(\0132\021.context.DeviceId\022$\n\rendpoint_uuid" + "\030\003 \001(\0132\r.context.Uuid\"\310\002\n\010EndPoint\022(\n\013en" + "dpoint_id\030\001 \001(\0132\023.context.EndPointId\022\014\n\004" + "name\030\002 \001(\t\022\025\n\rendpoint_type\030\003 \001(\t\0229\n\020kpi" + "_sample_types\030\004 \003(\0162\037.kpi_sample_types.K" + "piSampleType\022,\n\021endpoint_location\030\005 \001(\0132" + "\021.context.Location\0229\n\014capabilities\030\006 \003(\013" + "2#.context.EndPoint.CapabilitiesEntry\032I\n" + "\021CapabilitiesEntry\022\013\n\003key\030\001 \001(\t\022#\n\005value" + "\030\002 \001(\0132\024.google.protobuf.Any:\0028\001\"{\n\014EndP" + "ointName\022(\n\013endpoint_id\030\001 \001(\0132\023.context." + "EndPointId\022\023\n\013device_name\030\002 \001(\t\022\025\n\rendpo" + "int_name\030\003 \001(\t\022\025\n\rendpoint_type\030\004 \001(\t\";\n" + "\016EndPointIdList\022)\n\014endpoint_ids\030\001 \003(\0132\023." + "context.EndPointId\"A\n\020EndPointNameList\022-" + "\n\016endpoint_names\030\001 \003(\0132\025.context.EndPoin" + "tName\"A\n\021ConfigRule_Custom\022\024\n\014resource_k" + "ey\030\001 \001(\t\022\026\n\016resource_value\030\002 \001(\t\"]\n\016Conf" + "igRule_ACL\022(\n\013endpoint_id\030\001 \001(\0132\023.contex" + "t.EndPointId\022!\n\010rule_set\030\002 \001(\0132\017.acl.Acl" + "RuleSet\"\234\001\n\nConfigRule\022)\n\006action\030\001 \001(\0162\031" + ".context.ConfigActionEnum\022,\n\006custom\030\002 \001(" + "\0132\032.context.ConfigRule_CustomH\000\022&\n\003acl\030\003" + " \001(\0132\027.context.ConfigRule_ACLH\000B\r\n\013confi" + "g_rule\"F\n\021Constraint_Custom\022\027\n\017constrain" + "t_type\030\001 \001(\t\022\030\n\020constraint_value\030\002 \001(\t\"E" + "\n\023Constraint_Schedule\022\027\n\017start_timestamp" + "\030\001 \001(\001\022\025\n\rduration_days\030\002 \001(\002\"3\n\014GPS_Pos" + "ition\022\020\n\010latitude\030\001 \001(\002\022\021\n\tlongitude\030\002 \001" + "(\002\"\204\001\n\010Location\022\020\n\006region\030\001 \001(\tH\000\022-\n\014gps" + "_position\030\002 \001(\0132\025.context.GPS_PositionH\000" + "\022\023\n\tinterface\030\003 \001(\tH\000\022\026\n\014circuit_pack\030\004 " + "\001(\tH\000B\n\n\010location\"l\n\033Constraint_EndPoint" + "Location\022(\n\013endpoint_id\030\001 \001(\0132\023.context." + "EndPointId\022#\n\010location\030\002 \001(\0132\021.context.L" + "ocation\"Y\n\033Constraint_EndPointPriority\022(" + "\n\013endpoint_id\030\001 \001(\0132\023.context.EndPointId" + "\022\020\n\010priority\030\002 \001(\r\"0\n\026Constraint_SLA_Lat" + "ency\022\026\n\016e2e_latency_ms\030\001 \001(\002\"0\n\027Constrai" + "nt_SLA_Capacity\022\025\n\rcapacity_gbps\030\001 \001(\002\"c" + "\n\033Constraint_SLA_Availability\022\032\n\022num_dis" + "joint_paths\030\001 \001(\r\022\022\n\nall_active\030\002 \001(\010\022\024\n" + "\014availability\030\003 \001(\002\"V\n\036Constraint_SLA_Is" + "olation_level\0224\n\017isolation_level\030\001 \003(\0162\033" + ".context.IsolationLevelEnum\"\242\001\n\025Constrai" + "nt_Exclusions\022\024\n\014is_permanent\030\001 \001(\010\022%\n\nd" + "evice_ids\030\002 \003(\0132\021.context.DeviceId\022)\n\014en" + "dpoint_ids\030\003 \003(\0132\023.context.EndPointId\022!\n" + "\010link_ids\030\004 \003(\0132\017.context.LinkId\"5\n\014QoSP" + "rofileId\022%\n\016qos_profile_id\030\001 \001(\0132\r.conte" + "xt.Uuid\"`\n\025Constraint_QoSProfile\022-\n\016qos_" + "profile_id\030\001 \001(\0132\025.context.QoSProfileId\022" + "\030\n\020qos_profile_name\030\002 \001(\t\"\222\005\n\nConstraint" + "\022-\n\006action\030\001 \001(\0162\035.context.ConstraintAct" + "ionEnum\022,\n\006custom\030\002 \001(\0132\032.context.Constr" + "aint_CustomH\000\0220\n\010schedule\030\003 \001(\0132\034.contex" + "t.Constraint_ScheduleH\000\022A\n\021endpoint_loca" + "tion\030\004 \001(\0132$.context.Constraint_EndPoint" + "LocationH\000\022A\n\021endpoint_priority\030\005 \001(\0132$." + "context.Constraint_EndPointPriorityH\000\0228\n" + "\014sla_capacity\030\006 \001(\0132 .context.Constraint" + "_SLA_CapacityH\000\0226\n\013sla_latency\030\007 \001(\0132\037.c" + "ontext.Constraint_SLA_LatencyH\000\022@\n\020sla_a" + "vailability\030\010 \001(\0132$.context.Constraint_S" + "LA_AvailabilityH\000\022@\n\rsla_isolation\030\t \001(\013" + "2\'.context.Constraint_SLA_Isolation_leve" + "lH\000\0224\n\nexclusions\030\n \001(\0132\036.context.Constr" + "aint_ExclusionsH\000\0225\n\013qos_profile\030\013 \001(\0132\036" + ".context.Constraint_QoSProfileH\000B\014\n\ncons" + "traint\"^\n\022TeraFlowController\022&\n\ncontext_" + "id\030\001 \001(\0132\022.context.ContextId\022\022\n\nip_addre" + "ss\030\002 \001(\t\022\014\n\004port\030\003 \001(\r\"U\n\024Authentication" + "Result\022&\n\ncontext_id\030\001 \001(\0132\022.context.Con" + "textId\022\025\n\rauthenticated\030\002 \001(\010\"-\n\017Optical" + "ConfigId\022\032\n\022opticalconfig_uuid\030\001 \001(\t\"y\n\r" + "OpticalConfig\0222\n\020opticalconfig_id\030\001 \001(\0132" + "\030.context.OpticalConfigId\022\016\n\006config\030\002 \001(" + "\t\022$\n\tdevice_id\030\003 \001(\0132\021.context.DeviceId\"" + "C\n\021OpticalConfigList\022.\n\016opticalconfigs\030\001" + " \003(\0132\026.context.OpticalConfig\"g\n\022OpticalC" + "onfigEvent\022\035\n\005event\030\001 \001(\0132\016.context.Even" + "t\0222\n\020opticalconfig_id\030\002 \001(\0132\030.context.Op" + "ticalConfigId\"_\n\021OpticalEndPointId\022$\n\tde" + "vice_id\030\002 \001(\0132\021.context.DeviceId\022$\n\rendp" + "oint_uuid\030\003 \001(\0132\r.context.Uuid\">\n\017Optica" + "lLinkList\022+\n\roptical_links\030\001 \003(\0132\024.conte" + "xt.OpticalLink\"\304\003\n\022OpticalLinkDetails\022\016\n" + "\006length\030\001 \001(\002\022\020\n\010src_port\030\002 \001(\t\022\020\n\010dst_p" + "ort\030\003 \001(\t\022\027\n\017local_peer_port\030\004 \001(\t\022\030\n\020re" + "mote_peer_port\030\005 \001(\t\022\014\n\004used\030\006 \001(\010\0228\n\007c_" + "slots\030\007 \003(\0132\'.context.OpticalLinkDetails" + ".CSlotsEntry\0228\n\007l_slots\030\010 \003(\0132\'.context." + "OpticalLinkDetails.LSlotsEntry\0228\n\007s_slot" + "s\030\t \003(\0132\'.context.OpticalLinkDetails.SSl" + "otsEntry\032-\n\013CSlotsEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005" + "value\030\002 \001(\005:\0028\001\032-\n\013LSlotsEntry\022\013\n\003key\030\001 " + "\001(\t\022\r\n\005value\030\002 \001(\005:\0028\001\032-\n\013SSlotsEntry\022\013\n" + "\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\005:\0028\001\"\243\001\n\013Optica" + "lLink\022\014\n\004name\030\001 \001(\t\0224\n\017optical_details\030\002" + " \001(\0132\033.context.OpticalLinkDetails\022 \n\007lin" + "k_id\030\003 \001(\0132\017.context.LinkId\022.\n\021link_endp" + "oint_ids\030\004 \003(\0132\023.context.EndPointId\"r\n\021S" + "erviceConfigRule\022&\n\nservice_id\030\001 \001(\0132\022.c" + "ontext.ServiceId\0225\n\021configrule_custom\030\002 " + "\001(\0132\032.context.ConfigRule_Custom*j\n\rEvent" + "TypeEnum\022\027\n\023EVENTTYPE_UNDEFINED\020\000\022\024\n\020EVE" + "NTTYPE_CREATE\020\001\022\024\n\020EVENTTYPE_UPDATE\020\002\022\024\n" + "\020EVENTTYPE_REMOVE\020\003*\351\003\n\020DeviceDriverEnum" + "\022\032\n\026DEVICEDRIVER_UNDEFINED\020\000\022\033\n\027DEVICEDR" + "IVER_OPENCONFIG\020\001\022\036\n\032DEVICEDRIVER_TRANSP" + "ORT_API\020\002\022\023\n\017DEVICEDRIVER_P4\020\003\022&\n\"DEVICE" + "DRIVER_IETF_NETWORK_TOPOLOGY\020\004\022\033\n\027DEVICE" + "DRIVER_ONF_TR_532\020\005\022\023\n\017DEVICEDRIVER_XR\020\006" + "\022\033\n\027DEVICEDRIVER_IETF_L2VPN\020\007\022 \n\034DEVICED" + "RIVER_GNMI_OPENCONFIG\020\010\022\034\n\030DEVICEDRIVER_" + "OPTICAL_TFS\020\t\022\032\n\026DEVICEDRIVER_IETF_ACTN\020" + "\n\022\023\n\017DEVICEDRIVER_OC\020\013\022\024\n\020DEVICEDRIVER_Q" + "KD\020\014\022\033\n\027DEVICEDRIVER_IETF_L3VPN\020\r\022\033\n\027DEV" + "ICEDRIVER_IETF_SLICE\020\016\022\024\n\020DEVICEDRIVER_N" + "CE\020\017\022\031\n\025DEVICEDRIVER_SMARTNIC\020\020*\217\001\n\033Devi" + "ceOperationalStatusEnum\022%\n!DEVICEOPERATI" + "ONALSTATUS_UNDEFINED\020\000\022$\n DEVICEOPERATIO" + "NALSTATUS_DISABLED\020\001\022#\n\037DEVICEOPERATIONA" + "LSTATUS_ENABLED\020\002*w\n\014LinkTypeEnum\022\024\n\020LIN" + "KTYPE_UNKNOWN\020\000\022\023\n\017LINKTYPE_COPPER\020\001\022\022\n\016" + "LINKTYPE_FIBER\020\002\022\022\n\016LINKTYPE_RADIO\020\003\022\024\n\020" + "LINKTYPE_VIRTUAL\020\004*\345\001\n\017ServiceTypeEnum\022\027" + "\n\023SERVICETYPE_UNKNOWN\020\000\022\024\n\020SERVICETYPE_L" + "3NM\020\001\022\024\n\020SERVICETYPE_L2NM\020\002\022)\n%SERVICETY" + "PE_TAPI_CONNECTIVITY_SERVICE\020\003\022\022\n\016SERVIC" + "ETYPE_TE\020\004\022\023\n\017SERVICETYPE_E2E\020\005\022$\n SERVI" + "CETYPE_OPTICAL_CONNECTIVITY\020\006\022\023\n\017SERVICE" + "TYPE_QKD\020\007*\304\001\n\021ServiceStatusEnum\022\033\n\027SERV" + "ICESTATUS_UNDEFINED\020\000\022\031\n\025SERVICESTATUS_P" + "LANNED\020\001\022\030\n\024SERVICESTATUS_ACTIVE\020\002\022\032\n\026SE" + "RVICESTATUS_UPDATING\020\003\022!\n\035SERVICESTATUS_" + "PENDING_REMOVAL\020\004\022\036\n\032SERVICESTATUS_SLA_V" + "IOLATED\020\005*\251\001\n\017SliceStatusEnum\022\031\n\025SLICEST" + "ATUS_UNDEFINED\020\000\022\027\n\023SLICESTATUS_PLANNED\020" + "\001\022\024\n\020SLICESTATUS_INIT\020\002\022\026\n\022SLICESTATUS_A" + "CTIVE\020\003\022\026\n\022SLICESTATUS_DEINIT\020\004\022\034\n\030SLICE" + "STATUS_SLA_VIOLATED\020\005*]\n\020ConfigActionEnu" + "m\022\032\n\026CONFIGACTION_UNDEFINED\020\000\022\024\n\020CONFIGA" + "CTION_SET\020\001\022\027\n\023CONFIGACTION_DELETE\020\002*m\n\024" + "ConstraintActionEnum\022\036\n\032CONSTRAINTACTION" + "_UNDEFINED\020\000\022\030\n\024CONSTRAINTACTION_SET\020\001\022\033" + "\n\027CONSTRAINTACTION_DELETE\020\002*\203\002\n\022Isolatio" + "nLevelEnum\022\020\n\014NO_ISOLATION\020\000\022\026\n\022PHYSICAL" + "_ISOLATION\020\001\022\025\n\021LOGICAL_ISOLATION\020\002\022\025\n\021P" + "ROCESS_ISOLATION\020\003\022\035\n\031PHYSICAL_MEMORY_IS" + "OLATION\020\004\022\036\n\032PHYSICAL_NETWORK_ISOLATION\020" + "\005\022\036\n\032VIRTUAL_RESOURCE_ISOLATION\020\006\022\037\n\033NET" + "WORK_FUNCTIONS_ISOLATION\020\007\022\025\n\021SERVICE_IS" + "OLATION\020\0102\202\034\n\016ContextService\022:\n\016ListCont" + "extIds\022\016.context.Empty\032\026.context.Context" + "IdList\"\000\0226\n\014ListContexts\022\016.context.Empty" + "\032\024.context.ContextList\"\000\0224\n\nGetContext\022\022" + ".context.ContextId\032\020.context.Context\"\000\0224" + "\n\nSetContext\022\020.context.Context\032\022.context" + ".ContextId\"\000\0225\n\rRemoveContext\022\022.context." + "ContextId\032\016.context.Empty\"\000\022=\n\020GetContex" + "tEvents\022\016.context.Empty\032\025.context.Contex" + "tEvent\"\0000\001\022@\n\017ListTopologyIds\022\022.context." + "ContextId\032\027.context.TopologyIdList\"\000\022=\n\016" + "ListTopologies\022\022.context.ContextId\032\025.con" + "text.TopologyList\"\000\0227\n\013GetTopology\022\023.con" + "text.TopologyId\032\021.context.Topology\"\000\022E\n\022" + "GetTopologyDetails\022\023.context.TopologyId\032" + "\030.context.TopologyDetails\"\000\0227\n\013SetTopolo" + "gy\022\021.context.Topology\032\023.context.Topology" + "Id\"\000\0227\n\016RemoveTopology\022\023.context.Topolog" + "yId\032\016.context.Empty\"\000\022?\n\021GetTopologyEven" + "ts\022\016.context.Empty\032\026.context.TopologyEve" + "nt\"\0000\001\0228\n\rListDeviceIds\022\016.context.Empty\032" + "\025.context.DeviceIdList\"\000\0224\n\013ListDevices\022" + "\016.context.Empty\032\023.context.DeviceList\"\000\0221" + "\n\tGetDevice\022\021.context.DeviceId\032\017.context" + ".Device\"\000\0221\n\tSetDevice\022\017.context.Device\032" + "\021.context.DeviceId\"\000\0223\n\014RemoveDevice\022\021.c" + "ontext.DeviceId\032\016.context.Empty\"\000\022;\n\017Get" + "DeviceEvents\022\016.context.Empty\032\024.context.D" + "eviceEvent\"\0000\001\022<\n\014SelectDevice\022\025.context" + ".DeviceFilter\032\023.context.DeviceList\"\000\022I\n\021" + "ListEndPointNames\022\027.context.EndPointIdLi" + "st\032\031.context.EndPointNameList\"\000\0224\n\013ListL" + "inkIds\022\016.context.Empty\032\023.context.LinkIdL" + "ist\"\000\0220\n\tListLinks\022\016.context.Empty\032\021.con" + "text.LinkList\"\000\022+\n\007GetLink\022\017.context.Lin" + "kId\032\r.context.Link\"\000\022+\n\007SetLink\022\r.contex" + "t.Link\032\017.context.LinkId\"\000\022/\n\nRemoveLink\022" + "\017.context.LinkId\032\016.context.Empty\"\000\0227\n\rGe" + "tLinkEvents\022\016.context.Empty\032\022.context.Li" + "nkEvent\"\0000\001\022>\n\016ListServiceIds\022\022.context." + "ContextId\032\026.context.ServiceIdList\"\000\022:\n\014L" + "istServices\022\022.context.ContextId\032\024.contex" + "t.ServiceList\"\000\0224\n\nGetService\022\022.context." + "ServiceId\032\020.context.Service\"\000\0224\n\nSetServ" + "ice\022\020.context.Service\032\022.context.ServiceI" + "d\"\000\0226\n\014UnsetService\022\020.context.Service\032\022." + "context.ServiceId\"\000\0225\n\rRemoveService\022\022.c" + "ontext.ServiceId\032\016.context.Empty\"\000\022=\n\020Ge" + "tServiceEvents\022\016.context.Empty\032\025.context" + ".ServiceEvent\"\0000\001\022?\n\rSelectService\022\026.con" + "text.ServiceFilter\032\024.context.ServiceList" + "\"\000\022:\n\014ListSliceIds\022\022.context.ContextId\032\024" + ".context.SliceIdList\"\000\0226\n\nListSlices\022\022.c" + "ontext.ContextId\032\022.context.SliceList\"\000\022." + "\n\010GetSlice\022\020.context.SliceId\032\016.context.S" + "lice\"\000\022.\n\010SetSlice\022\016.context.Slice\032\020.con" + "text.SliceId\"\000\0220\n\nUnsetSlice\022\016.context.S" + "lice\032\020.context.SliceId\"\000\0221\n\013RemoveSlice\022" + "\020.context.SliceId\032\016.context.Empty\"\000\0229\n\016G" + "etSliceEvents\022\016.context.Empty\032\023.context." + "SliceEvent\"\0000\001\0229\n\013SelectSlice\022\024.context." + "SliceFilter\032\022.context.SliceList\"\000\022D\n\021Lis" + "tConnectionIds\022\022.context.ServiceId\032\031.con" + "text.ConnectionIdList\"\000\022@\n\017ListConnectio" + "ns\022\022.context.ServiceId\032\027.context.Connect" + "ionList\"\000\022=\n\rGetConnection\022\025.context.Con" + "nectionId\032\023.context.Connection\"\000\022=\n\rSetC" + "onnection\022\023.context.Connection\032\025.context" + ".ConnectionId\"\000\022;\n\020RemoveConnection\022\025.co" + "ntext.ConnectionId\032\016.context.Empty\"\000\022C\n\023" + "GetConnectionEvents\022\016.context.Empty\032\030.co" + "ntext.ConnectionEvent\"\0000\001\022@\n\020GetOpticalC" + "onfig\022\016.context.Empty\032\032.context.OpticalC" + "onfigList\"\000\022F\n\020SetOpticalConfig\022\026.contex" + "t.OpticalConfig\032\030.context.OpticalConfigI" + "d\"\000\022I\n\023UpdateOpticalConfig\022\026.context.Opt" + "icalConfig\032\030.context.OpticalConfigId\"\000\022I" + "\n\023SelectOpticalConfig\022\030.context.OpticalC" + "onfigId\032\026.context.OpticalConfig\"\000\022A\n\023Del" + "eteOpticalConfig\022\030.context.OpticalConfig" + "Id\032\016.context.Empty\"\000\022@\n\024DeleteOpticalCha" + "nnel\022\026.context.OpticalConfig\032\016.context.E" + "mpty\"\000\0228\n\016SetOpticalLink\022\024.context.Optic" + "alLink\032\016.context.Empty\"\000\0229\n\016GetOpticalLi" + "nk\022\017.context.LinkId\032\024.context.OpticalLin" + "k\"\000\0226\n\021DeleteOpticalLink\022\017.context.LinkI" + "d\032\016.context.Empty\"\000\022@\n\022GetOpticalLinkLis" + "t\022\016.context.Empty\032\030.context.OpticalLinkL" + "ist\"\000\022G\n\027DeleteServiceConfigRule\022\032.conte" + "xt.ServiceConfigRule\032\016.context.Empty\"\000b\006" + "proto3" }; - descriptor = com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom(descriptorData, new com.google.protobuf.Descriptors.FileDescriptor[] { com.google.protobuf.AnyProto.getDescriptor(), acl.Acl.getDescriptor(), kpi_sample_types.KpiSampleTypes.getDescriptor() }); + java.lang.String[] descriptorData = { "\n\rcontext.proto\022\007context\032\tacl.proto\032\026kpi" + "_sample_types.proto\"\007\n\005Empty\"\024\n\004Uuid\022\014\n\004" + "uuid\030\001 \001(\t\"\036\n\tTimestamp\022\021\n\ttimestamp\030\001 \001" + "(\001\"Z\n\005Event\022%\n\ttimestamp\030\001 \001(\0132\022.context" + ".Timestamp\022*\n\nevent_type\030\002 \001(\0162\026.context" + ".EventTypeEnum\"0\n\tContextId\022#\n\014context_u" + "uid\030\001 \001(\0132\r.context.Uuid\"\351\001\n\007Context\022&\n\n" + "context_id\030\001 \001(\0132\022.context.ContextId\022\014\n\004" + "name\030\002 \001(\t\022)\n\014topology_ids\030\003 \003(\0132\023.conte" + "xt.TopologyId\022\'\n\013service_ids\030\004 \003(\0132\022.con" + "text.ServiceId\022#\n\tslice_ids\030\005 \003(\0132\020.cont" + "ext.SliceId\022/\n\ncontroller\030\006 \001(\0132\033.contex" + "t.TeraFlowController\"8\n\rContextIdList\022\'\n" + "\013context_ids\030\001 \003(\0132\022.context.ContextId\"1" + "\n\013ContextList\022\"\n\010contexts\030\001 \003(\0132\020.contex" + "t.Context\"U\n\014ContextEvent\022\035\n\005event\030\001 \001(\013" + "2\016.context.Event\022&\n\ncontext_id\030\002 \001(\0132\022.c" + "ontext.ContextId\"Z\n\nTopologyId\022&\n\ncontex" + "t_id\030\001 \001(\0132\022.context.ContextId\022$\n\rtopolo" + "gy_uuid\030\002 \001(\0132\r.context.Uuid\"\214\001\n\010Topolog" + "y\022(\n\013topology_id\030\001 \001(\0132\023.context.Topolog" + "yId\022\014\n\004name\030\002 \001(\t\022%\n\ndevice_ids\030\003 \003(\0132\021." + "context.DeviceId\022!\n\010link_ids\030\004 \003(\0132\017.con" + "text.LinkId\"\211\001\n\017TopologyDetails\022(\n\013topol" + "ogy_id\030\001 \001(\0132\023.context.TopologyId\022\014\n\004nam" + "e\030\002 \001(\t\022 \n\007devices\030\003 \003(\0132\017.context.Devic" + "e\022\034\n\005links\030\004 \003(\0132\r.context.Link\";\n\016Topol" + "ogyIdList\022)\n\014topology_ids\030\001 \003(\0132\023.contex" + "t.TopologyId\"5\n\014TopologyList\022%\n\ntopologi" + "es\030\001 \003(\0132\021.context.Topology\"X\n\rTopologyE" + "vent\022\035\n\005event\030\001 \001(\0132\016.context.Event\022(\n\013t" + "opology_id\030\002 \001(\0132\023.context.TopologyId\".\n" + "\010DeviceId\022\"\n\013device_uuid\030\001 \001(\0132\r.context" + ".Uuid\"\372\002\n\006Device\022$\n\tdevice_id\030\001 \001(\0132\021.co" + "ntext.DeviceId\022\014\n\004name\030\002 \001(\t\022\023\n\013device_t" + "ype\030\003 \001(\t\022,\n\rdevice_config\030\004 \001(\0132\025.conte" + "xt.DeviceConfig\022G\n\031device_operational_st" + "atus\030\005 \001(\0162$.context.DeviceOperationalSt" + "atusEnum\0221\n\016device_drivers\030\006 \003(\0162\031.conte" + "xt.DeviceDriverEnum\022+\n\020device_endpoints\030" + "\007 \003(\0132\021.context.EndPoint\022&\n\ncomponents\030\010" + " \003(\0132\022.context.Component\022(\n\rcontroller_i" + "d\030\t \001(\0132\021.context.DeviceId\"\311\001\n\tComponent" + "\022%\n\016component_uuid\030\001 \001(\0132\r.context.Uuid\022" + "\014\n\004name\030\002 \001(\t\022\014\n\004type\030\003 \001(\t\0226\n\nattribute" + "s\030\004 \003(\0132\".context.Component.AttributesEn" + "try\022\016\n\006parent\030\005 \001(\t\0321\n\017AttributesEntry\022\013" + "\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"9\n\014Device" + "Config\022)\n\014config_rules\030\001 \003(\0132\023.context.C" + "onfigRule\"5\n\014DeviceIdList\022%\n\ndevice_ids\030" + "\001 \003(\0132\021.context.DeviceId\".\n\nDeviceList\022 " + "\n\007devices\030\001 \003(\0132\017.context.Device\"\216\001\n\014Dev" + "iceFilter\022)\n\ndevice_ids\030\001 \001(\0132\025.context." + "DeviceIdList\022\031\n\021include_endpoints\030\002 \001(\010\022" + "\034\n\024include_config_rules\030\003 \001(\010\022\032\n\022include" + "_components\030\004 \001(\010\"\200\001\n\013DeviceEvent\022\035\n\005eve" + "nt\030\001 \001(\0132\016.context.Event\022$\n\tdevice_id\030\002 " + "\001(\0132\021.context.DeviceId\022,\n\rdevice_config\030" + "\003 \001(\0132\025.context.DeviceConfig\"*\n\006LinkId\022 " + "\n\tlink_uuid\030\001 \001(\0132\r.context.Uuid\"\250\001\n\016Lin" + "kAttributes\022\033\n\023total_capacity_gbps\030\001 \001(\002" + "\022\032\n\022used_capacity_gbps\030\002 \001(\002\022\024\n\014availabl" + "e_bw\030\003 \001(\002\022\022\n\nlink_delay\030\005 \001(\002\022\032\n\022min_ma" + "x_link_delay\030\006 \001(\002\022\027\n\017delay_variation\030\007 " + "\001(\002\"\223\001\n\004Link\022 \n\007link_id\030\001 \001(\0132\017.context." + "LinkId\022\014\n\004name\030\002 \001(\t\022.\n\021link_endpoint_id" + "s\030\003 \003(\0132\023.context.EndPointId\022+\n\nattribut" + "es\030\004 \001(\0132\027.context.LinkAttributes\"/\n\nLin" + "kIdList\022!\n\010link_ids\030\001 \003(\0132\017.context.Link" + "Id\"(\n\010LinkList\022\034\n\005links\030\001 \003(\0132\r.context." + "Link\"L\n\tLinkEvent\022\035\n\005event\030\001 \001(\0132\016.conte" + "xt.Event\022 \n\007link_id\030\002 \001(\0132\017.context.Link" + "Id\"X\n\tServiceId\022&\n\ncontext_id\030\001 \001(\0132\022.co" + "ntext.ContextId\022#\n\014service_uuid\030\002 \001(\0132\r." + "context.Uuid\"\333\002\n\007Service\022&\n\nservice_id\030\001" + " \001(\0132\022.context.ServiceId\022\014\n\004name\030\002 \001(\t\022." + "\n\014service_type\030\003 \001(\0162\030.context.ServiceTy" + "peEnum\0221\n\024service_endpoint_ids\030\004 \003(\0132\023.c" + "ontext.EndPointId\0220\n\023service_constraints" + "\030\005 \003(\0132\023.context.Constraint\022.\n\016service_s" + "tatus\030\006 \001(\0132\026.context.ServiceStatus\022.\n\016s" + "ervice_config\030\007 \001(\0132\026.context.ServiceCon" + "fig\022%\n\ttimestamp\030\010 \001(\0132\022.context.Timesta" + "mp\"C\n\rServiceStatus\0222\n\016service_status\030\001 " + "\001(\0162\032.context.ServiceStatusEnum\":\n\rServi" + "ceConfig\022)\n\014config_rules\030\001 \003(\0132\023.context" + ".ConfigRule\"8\n\rServiceIdList\022\'\n\013service_" + "ids\030\001 \003(\0132\022.context.ServiceId\"1\n\013Service" + "List\022\"\n\010services\030\001 \003(\0132\020.context.Service" + "\"\225\001\n\rServiceFilter\022+\n\013service_ids\030\001 \001(\0132" + "\026.context.ServiceIdList\022\034\n\024include_endpo" + "int_ids\030\002 \001(\010\022\033\n\023include_constraints\030\003 \001" + "(\010\022\034\n\024include_config_rules\030\004 \001(\010\"U\n\014Serv" + "iceEvent\022\035\n\005event\030\001 \001(\0132\016.context.Event\022" + "&\n\nservice_id\030\002 \001(\0132\022.context.ServiceId\"" + "T\n\007SliceId\022&\n\ncontext_id\030\001 \001(\0132\022.context" + ".ContextId\022!\n\nslice_uuid\030\002 \001(\0132\r.context" + ".Uuid\"\240\003\n\005Slice\022\"\n\010slice_id\030\001 \001(\0132\020.cont" + "ext.SliceId\022\014\n\004name\030\002 \001(\t\022/\n\022slice_endpo" + "int_ids\030\003 \003(\0132\023.context.EndPointId\022.\n\021sl" + "ice_constraints\030\004 \003(\0132\023.context.Constrai" + "nt\022-\n\021slice_service_ids\030\005 \003(\0132\022.context." + "ServiceId\022,\n\022slice_subslice_ids\030\006 \003(\0132\020." + "context.SliceId\022*\n\014slice_status\030\007 \001(\0132\024." + "context.SliceStatus\022*\n\014slice_config\030\010 \001(" + "\0132\024.context.SliceConfig\022(\n\013slice_owner\030\t" + " \001(\0132\023.context.SliceOwner\022%\n\ttimestamp\030\n" + " \001(\0132\022.context.Timestamp\"E\n\nSliceOwner\022!" + "\n\nowner_uuid\030\001 \001(\0132\r.context.Uuid\022\024\n\014own" + "er_string\030\002 \001(\t\"=\n\013SliceStatus\022.\n\014slice_" + "status\030\001 \001(\0162\030.context.SliceStatusEnum\"8" + "\n\013SliceConfig\022)\n\014config_rules\030\001 \003(\0132\023.co" + "ntext.ConfigRule\"2\n\013SliceIdList\022#\n\tslice" + "_ids\030\001 \003(\0132\020.context.SliceId\"+\n\tSliceLis" + "t\022\036\n\006slices\030\001 \003(\0132\016.context.Slice\"\312\001\n\013Sl" + "iceFilter\022\'\n\tslice_ids\030\001 \001(\0132\024.context.S" + "liceIdList\022\034\n\024include_endpoint_ids\030\002 \001(\010" + "\022\033\n\023include_constraints\030\003 \001(\010\022\033\n\023include" + "_service_ids\030\004 \001(\010\022\034\n\024include_subslice_i" + "ds\030\005 \001(\010\022\034\n\024include_config_rules\030\006 \001(\010\"O" + "\n\nSliceEvent\022\035\n\005event\030\001 \001(\0132\016.context.Ev" + "ent\022\"\n\010slice_id\030\002 \001(\0132\020.context.SliceId\"" + "6\n\014ConnectionId\022&\n\017connection_uuid\030\001 \001(\013" + "2\r.context.Uuid\"2\n\025ConnectionSettings_L0" + "\022\031\n\021lsp_symbolic_name\030\001 \001(\t\"\236\001\n\025Connecti" + "onSettings_L2\022\027\n\017src_mac_address\030\001 \001(\t\022\027" + "\n\017dst_mac_address\030\002 \001(\t\022\022\n\nether_type\030\003 " + "\001(\r\022\017\n\007vlan_id\030\004 \001(\r\022\022\n\nmpls_label\030\005 \001(\r" + "\022\032\n\022mpls_traffic_class\030\006 \001(\r\"t\n\025Connecti" + "onSettings_L3\022\026\n\016src_ip_address\030\001 \001(\t\022\026\n" + "\016dst_ip_address\030\002 \001(\t\022\014\n\004dscp\030\003 \001(\r\022\020\n\010p" + "rotocol\030\004 \001(\r\022\013\n\003ttl\030\005 \001(\r\"[\n\025Connection" + "Settings_L4\022\020\n\010src_port\030\001 \001(\r\022\020\n\010dst_por" + "t\030\002 \001(\r\022\021\n\ttcp_flags\030\003 \001(\r\022\013\n\003ttl\030\004 \001(\r\"" + "\304\001\n\022ConnectionSettings\022*\n\002l0\030\001 \001(\0132\036.con" + "text.ConnectionSettings_L0\022*\n\002l2\030\002 \001(\0132\036" + ".context.ConnectionSettings_L2\022*\n\002l3\030\003 \001" + "(\0132\036.context.ConnectionSettings_L3\022*\n\002l4" + "\030\004 \001(\0132\036.context.ConnectionSettings_L4\"\363" + "\001\n\nConnection\022,\n\rconnection_id\030\001 \001(\0132\025.c" + "ontext.ConnectionId\022&\n\nservice_id\030\002 \001(\0132" + "\022.context.ServiceId\0223\n\026path_hops_endpoin" + "t_ids\030\003 \003(\0132\023.context.EndPointId\022+\n\017sub_" + "service_ids\030\004 \003(\0132\022.context.ServiceId\022-\n" + "\010settings\030\005 \001(\0132\033.context.ConnectionSett" + "ings\"A\n\020ConnectionIdList\022-\n\016connection_i" + "ds\030\001 \003(\0132\025.context.ConnectionId\":\n\016Conne" + "ctionList\022(\n\013connections\030\001 \003(\0132\023.context" + ".Connection\"^\n\017ConnectionEvent\022\035\n\005event\030" + "\001 \001(\0132\016.context.Event\022,\n\rconnection_id\030\002" + " \001(\0132\025.context.ConnectionId\"\202\001\n\nEndPoint" + "Id\022(\n\013topology_id\030\001 \001(\0132\023.context.Topolo" + "gyId\022$\n\tdevice_id\030\002 \001(\0132\021.context.Device" + "Id\022$\n\rendpoint_uuid\030\003 \001(\0132\r.context.Uuid" + "\"\302\001\n\010EndPoint\022(\n\013endpoint_id\030\001 \001(\0132\023.con" + "text.EndPointId\022\014\n\004name\030\002 \001(\t\022\025\n\rendpoin" + "t_type\030\003 \001(\t\0229\n\020kpi_sample_types\030\004 \003(\0162\037" + ".kpi_sample_types.KpiSampleType\022,\n\021endpo" + "int_location\030\005 \001(\0132\021.context.Location\"{\n" + "\014EndPointName\022(\n\013endpoint_id\030\001 \001(\0132\023.con" + "text.EndPointId\022\023\n\013device_name\030\002 \001(\t\022\025\n\r" + "endpoint_name\030\003 \001(\t\022\025\n\rendpoint_type\030\004 \001" + "(\t\";\n\016EndPointIdList\022)\n\014endpoint_ids\030\001 \003" + "(\0132\023.context.EndPointId\"A\n\020EndPointNameL" + "ist\022-\n\016endpoint_names\030\001 \003(\0132\025.context.En" + "dPointName\"A\n\021ConfigRule_Custom\022\024\n\014resou" + "rce_key\030\001 \001(\t\022\026\n\016resource_value\030\002 \001(\t\"]\n" + "\016ConfigRule_ACL\022(\n\013endpoint_id\030\001 \001(\0132\023.c" + "ontext.EndPointId\022!\n\010rule_set\030\002 \001(\0132\017.ac" + "l.AclRuleSet\"\234\001\n\nConfigRule\022)\n\006action\030\001 " + "\001(\0162\031.context.ConfigActionEnum\022,\n\006custom" + "\030\002 \001(\0132\032.context.ConfigRule_CustomH\000\022&\n\003" + "acl\030\003 \001(\0132\027.context.ConfigRule_ACLH\000B\r\n\013" + "config_rule\"F\n\021Constraint_Custom\022\027\n\017cons" + "traint_type\030\001 \001(\t\022\030\n\020constraint_value\030\002 " + "\001(\t\"E\n\023Constraint_Schedule\022\027\n\017start_time" + "stamp\030\001 \001(\002\022\025\n\rduration_days\030\002 \001(\002\"3\n\014GP" + "S_Position\022\020\n\010latitude\030\001 \001(\002\022\021\n\tlongitud" + "e\030\002 \001(\002\"W\n\010Location\022\020\n\006region\030\001 \001(\tH\000\022-\n" + "\014gps_position\030\002 \001(\0132\025.context.GPS_Positi" + "onH\000B\n\n\010location\"l\n\033Constraint_EndPointL" + "ocation\022(\n\013endpoint_id\030\001 \001(\0132\023.context.E" + "ndPointId\022#\n\010location\030\002 \001(\0132\021.context.Lo" + "cation\"Y\n\033Constraint_EndPointPriority\022(\n" + "\013endpoint_id\030\001 \001(\0132\023.context.EndPointId\022" + "\020\n\010priority\030\002 \001(\r\"0\n\026Constraint_SLA_Late" + "ncy\022\026\n\016e2e_latency_ms\030\001 \001(\002\"0\n\027Constrain" + "t_SLA_Capacity\022\025\n\rcapacity_gbps\030\001 \001(\002\"c\n" + "\033Constraint_SLA_Availability\022\032\n\022num_disj" + "oint_paths\030\001 \001(\r\022\022\n\nall_active\030\002 \001(\010\022\024\n\014" + "availability\030\003 \001(\002\"V\n\036Constraint_SLA_Iso" + "lation_level\0224\n\017isolation_level\030\001 \003(\0162\033." + "context.IsolationLevelEnum\"\242\001\n\025Constrain" + "t_Exclusions\022\024\n\014is_permanent\030\001 \001(\010\022%\n\nde" + "vice_ids\030\002 \003(\0132\021.context.DeviceId\022)\n\014end" + "point_ids\030\003 \003(\0132\023.context.EndPointId\022!\n\010" + "link_ids\030\004 \003(\0132\017.context.LinkId\"\333\004\n\nCons" + "traint\022-\n\006action\030\001 \001(\0162\035.context.Constra" + "intActionEnum\022,\n\006custom\030\002 \001(\0132\032.context." + "Constraint_CustomH\000\0220\n\010schedule\030\003 \001(\0132\034." + "context.Constraint_ScheduleH\000\022A\n\021endpoin" + "t_location\030\004 \001(\0132$.context.Constraint_En" + "dPointLocationH\000\022A\n\021endpoint_priority\030\005 " + "\001(\0132$.context.Constraint_EndPointPriorit" + "yH\000\0228\n\014sla_capacity\030\006 \001(\0132 .context.Cons" + "traint_SLA_CapacityH\000\0226\n\013sla_latency\030\007 \001" + "(\0132\037.context.Constraint_SLA_LatencyH\000\022@\n" + "\020sla_availability\030\010 \001(\0132$.context.Constr" + "aint_SLA_AvailabilityH\000\022@\n\rsla_isolation" + "\030\t \001(\0132\'.context.Constraint_SLA_Isolatio" + "n_levelH\000\0224\n\nexclusions\030\n \001(\0132\036.context." + "Constraint_ExclusionsH\000B\014\n\nconstraint\"^\n" + "\022TeraFlowController\022&\n\ncontext_id\030\001 \001(\0132" + "\022.context.ContextId\022\022\n\nip_address\030\002 \001(\t\022" + "\014\n\004port\030\003 \001(\r\"U\n\024AuthenticationResult\022&\n" + "\ncontext_id\030\001 \001(\0132\022.context.ContextId\022\025\n" + "\rauthenticated\030\002 \001(\010\"-\n\017OpticalConfigId\022" + "\032\n\022opticalconfig_uuid\030\001 \001(\t\"S\n\rOpticalCo" + "nfig\0222\n\020opticalconfig_id\030\001 \001(\0132\030.context" + ".OpticalConfigId\022\016\n\006config\030\002 \001(\t\"C\n\021Opti" + "calConfigList\022.\n\016opticalconfigs\030\001 \003(\0132\026." + "context.OpticalConfig\"9\n\rOpticalLinkId\022(" + "\n\021optical_link_uuid\030\001 \001(\0132\r.context.Uuid" + "\",\n\007FiberId\022!\n\nfiber_uuid\030\001 \001(\0132\r.contex" + "t.Uuid\"\341\001\n\005Fiber\022\n\n\002ID\030\n \001(\t\022\020\n\010src_port" + "\030\001 \001(\t\022\020\n\010dst_port\030\002 \001(\t\022\027\n\017local_peer_p" + "ort\030\003 \001(\t\022\030\n\020remote_peer_port\030\004 \001(\t\022\017\n\007c" + "_slots\030\005 \003(\005\022\017\n\007l_slots\030\006 \003(\005\022\017\n\007s_slots" + "\030\007 \003(\005\022\016\n\006length\030\010 \001(\002\022\014\n\004used\030\t \001(\010\022$\n\n" + "fiber_uuid\030\013 \001(\0132\020.context.FiberId\"d\n\022Op" + "ticalLinkDetails\022\016\n\006length\030\001 \001(\002\022\016\n\006sour" + "ce\030\002 \001(\t\022\016\n\006target\030\003 \001(\t\022\036\n\006fibers\030\004 \003(\013" + "2\016.context.Fiber\"|\n\013OpticalLink\022\014\n\004name\030" + "\001 \001(\t\022,\n\007details\030\002 \001(\0132\033.context.Optical" + "LinkDetails\0221\n\021optical_link_uuid\030\003 \001(\0132\026" + ".context.OpticalLinkId*j\n\rEventTypeEnum\022" + "\027\n\023EVENTTYPE_UNDEFINED\020\000\022\024\n\020EVENTTYPE_CR" + "EATE\020\001\022\024\n\020EVENTTYPE_UPDATE\020\002\022\024\n\020EVENTTYP" + "E_REMOVE\020\003*\376\002\n\020DeviceDriverEnum\022\032\n\026DEVIC" + "EDRIVER_UNDEFINED\020\000\022\033\n\027DEVICEDRIVER_OPEN" + "CONFIG\020\001\022\036\n\032DEVICEDRIVER_TRANSPORT_API\020\002" + "\022\023\n\017DEVICEDRIVER_P4\020\003\022&\n\"DEVICEDRIVER_IE" + "TF_NETWORK_TOPOLOGY\020\004\022\033\n\027DEVICEDRIVER_ON" + "F_TR_532\020\005\022\023\n\017DEVICEDRIVER_XR\020\006\022\033\n\027DEVIC" + "EDRIVER_IETF_L2VPN\020\007\022 \n\034DEVICEDRIVER_GNM" + "I_OPENCONFIG\020\010\022\034\n\030DEVICEDRIVER_OPTICAL_T" + "FS\020\t\022\032\n\026DEVICEDRIVER_IETF_ACTN\020\n\022\023\n\017DEVI" + "CEDRIVER_OC\020\013\022\024\n\020DEVICEDRIVER_QKD\020\014*\217\001\n\033" + "DeviceOperationalStatusEnum\022%\n!DEVICEOPE" + "RATIONALSTATUS_UNDEFINED\020\000\022$\n DEVICEOPER" + "ATIONALSTATUS_DISABLED\020\001\022#\n\037DEVICEOPERAT" + "IONALSTATUS_ENABLED\020\002*\345\001\n\017ServiceTypeEnu" + "m\022\027\n\023SERVICETYPE_UNKNOWN\020\000\022\024\n\020SERVICETYP" + "E_L3NM\020\001\022\024\n\020SERVICETYPE_L2NM\020\002\022)\n%SERVIC" + "ETYPE_TAPI_CONNECTIVITY_SERVICE\020\003\022\022\n\016SER" + "VICETYPE_TE\020\004\022\023\n\017SERVICETYPE_E2E\020\005\022$\n SE" + "RVICETYPE_OPTICAL_CONNECTIVITY\020\006\022\023\n\017SERV" + "ICETYPE_QKD\020\007*\304\001\n\021ServiceStatusEnum\022\033\n\027S" + "ERVICESTATUS_UNDEFINED\020\000\022\031\n\025SERVICESTATU" + "S_PLANNED\020\001\022\030\n\024SERVICESTATUS_ACTIVE\020\002\022\032\n" + "\026SERVICESTATUS_UPDATING\020\003\022!\n\035SERVICESTAT" + "US_PENDING_REMOVAL\020\004\022\036\n\032SERVICESTATUS_SL" + "A_VIOLATED\020\005*\251\001\n\017SliceStatusEnum\022\031\n\025SLIC" + "ESTATUS_UNDEFINED\020\000\022\027\n\023SLICESTATUS_PLANN" + "ED\020\001\022\024\n\020SLICESTATUS_INIT\020\002\022\026\n\022SLICESTATU" + "S_ACTIVE\020\003\022\026\n\022SLICESTATUS_DEINIT\020\004\022\034\n\030SL" + "ICESTATUS_SLA_VIOLATED\020\005*]\n\020ConfigAction" + "Enum\022\032\n\026CONFIGACTION_UNDEFINED\020\000\022\024\n\020CONF" + "IGACTION_SET\020\001\022\027\n\023CONFIGACTION_DELETE\020\002*" + "m\n\024ConstraintActionEnum\022\036\n\032CONSTRAINTACT" + "ION_UNDEFINED\020\000\022\030\n\024CONSTRAINTACTION_SET\020" + "\001\022\033\n\027CONSTRAINTACTION_DELETE\020\002*\203\002\n\022Isola" + "tionLevelEnum\022\020\n\014NO_ISOLATION\020\000\022\026\n\022PHYSI" + "CAL_ISOLATION\020\001\022\025\n\021LOGICAL_ISOLATION\020\002\022\025" + "\n\021PROCESS_ISOLATION\020\003\022\035\n\031PHYSICAL_MEMORY" + "_ISOLATION\020\004\022\036\n\032PHYSICAL_NETWORK_ISOLATI" + "ON\020\005\022\036\n\032VIRTUAL_RESOURCE_ISOLATION\020\006\022\037\n\033" + "NETWORK_FUNCTIONS_ISOLATION\020\007\022\025\n\021SERVICE" + "_ISOLATION\020\0102\246\031\n\016ContextService\022:\n\016ListC" + "ontextIds\022\016.context.Empty\032\026.context.Cont" + "extIdList\"\000\0226\n\014ListContexts\022\016.context.Em" + "pty\032\024.context.ContextList\"\000\0224\n\nGetContex" + "t\022\022.context.ContextId\032\020.context.Context\"" + "\000\0224\n\nSetContext\022\020.context.Context\032\022.cont" + "ext.ContextId\"\000\0225\n\rRemoveContext\022\022.conte" + "xt.ContextId\032\016.context.Empty\"\000\022=\n\020GetCon" + "textEvents\022\016.context.Empty\032\025.context.Con" + "textEvent\"\0000\001\022@\n\017ListTopologyIds\022\022.conte" + "xt.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\022" + "E\n\022GetTopologyDetails\022\023.context.Topology" + "Id\032\030.context.TopologyDetails\"\000\0227\n\013SetTop" + "ology\022\021.context.Topology\032\023.context.Topol" + "ogyId\"\000\0227\n\016RemoveTopology\022\023.context.Topo" + "logyId\032\016.context.Empty\"\000\022?\n\021GetTopologyE" + "vents\022\016.context.Empty\032\026.context.Topology" + "Event\"\0000\001\0228\n\rListDeviceIds\022\016.context.Emp" + "ty\032\025.context.DeviceIdList\"\000\0224\n\013ListDevic" + "es\022\016.context.Empty\032\023.context.DeviceList\"" + "\000\0221\n\tGetDevice\022\021.context.DeviceId\032\017.cont" + "ext.Device\"\000\0221\n\tSetDevice\022\017.context.Devi" + "ce\032\021.context.DeviceId\"\000\0223\n\014RemoveDevice\022" + "\021.context.DeviceId\032\016.context.Empty\"\000\022;\n\017" + "GetDeviceEvents\022\016.context.Empty\032\024.contex" + "t.DeviceEvent\"\0000\001\022<\n\014SelectDevice\022\025.cont" + "ext.DeviceFilter\032\023.context.DeviceList\"\000\022" + "I\n\021ListEndPointNames\022\027.context.EndPointI" + "dList\032\031.context.EndPointNameList\"\000\0224\n\013Li" + "stLinkIds\022\016.context.Empty\032\023.context.Link" + "IdList\"\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.con" + "text.Link\032\017.context.LinkId\"\000\022/\n\nRemoveLi" + "nk\022\017.context.LinkId\032\016.context.Empty\"\000\0227\n" + "\rGetLinkEvents\022\016.context.Empty\032\022.context" + ".LinkEvent\"\0000\001\022>\n\016ListServiceIds\022\022.conte" + "xt.ContextId\032\026.context.ServiceIdList\"\000\022:" + "\n\014ListServices\022\022.context.ContextId\032\024.con" + "text.ServiceList\"\000\0224\n\nGetService\022\022.conte" + "xt.ServiceId\032\020.context.Service\"\000\0224\n\nSetS" + "ervice\022\020.context.Service\032\022.context.Servi" + "ceId\"\000\0226\n\014UnsetService\022\020.context.Service" + "\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.cont" + "ext.ServiceEvent\"\0000\001\022?\n\rSelectService\022\026." + "context.ServiceFilter\032\024.context.ServiceL" + "ist\"\000\022:\n\014ListSliceIds\022\022.context.ContextI" + "d\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.contex" + "t.Slice\"\000\022.\n\010SetSlice\022\016.context.Slice\032\020." + "context.SliceId\"\000\0220\n\nUnsetSlice\022\016.contex" + "t.Slice\032\020.context.SliceId\"\000\0221\n\013RemoveSli" + "ce\022\020.context.SliceId\032\016.context.Empty\"\000\0229" + "\n\016GetSliceEvents\022\016.context.Empty\032\023.conte" + "xt.SliceEvent\"\0000\001\0229\n\013SelectSlice\022\024.conte" + "xt.SliceFilter\032\022.context.SliceList\"\000\022D\n\021" + "ListConnectionIds\022\022.context.ServiceId\032\031." + "context.ConnectionIdList\"\000\022@\n\017ListConnec" + "tions\022\022.context.ServiceId\032\027.context.Conn" + "ectionList\"\000\022=\n\rGetConnection\022\025.context." + "ConnectionId\032\023.context.Connection\"\000\022=\n\rS" + "etConnection\022\023.context.Connection\032\025.cont" + "ext.ConnectionId\"\000\022;\n\020RemoveConnection\022\025" + ".context.ConnectionId\032\016.context.Empty\"\000\022" + "C\n\023GetConnectionEvents\022\016.context.Empty\032\030" + ".context.ConnectionEvent\"\0000\001\022@\n\020GetOptic" + "alConfig\022\016.context.Empty\032\032.context.Optic" + "alConfigList\"\000\022F\n\020SetOpticalConfig\022\026.con" + "text.OpticalConfig\032\030.context.OpticalConf" + "igId\"\000\022I\n\023SelectOpticalConfig\022\030.context." + "OpticalConfigId\032\026.context.OpticalConfig\"" + "\000\0228\n\016SetOpticalLink\022\024.context.OpticalLin" + "k\032\016.context.Empty\"\000\022@\n\016GetOpticalLink\022\026." + "context.OpticalLinkId\032\024.context.OpticalL" + "ink\"\000\022.\n\010GetFiber\022\020.context.FiberId\032\016.co" + "ntext.Fiber\"\000b\006proto3" }; + descriptor = com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom(descriptorData, new com.google.protobuf.Descriptors.FileDescriptor[] { acl.Acl.getDescriptor(), kpi_sample_types.KpiSampleTypes.getDescriptor() }); internal_static_context_Empty_descriptor = getDescriptor().getMessageTypes().get(0); internal_static_context_Empty_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Empty_descriptor, new java.lang.String[] {}); internal_static_context_Uuid_descriptor = getDescriptor().getMessageTypes().get(1); @@ -81193,7 +81501,7 @@ public final class ContextOuterClass { internal_static_context_LinkId_descriptor = getDescriptor().getMessageTypes().get(23); internal_static_context_LinkId_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_LinkId_descriptor, new java.lang.String[] { "LinkUuid" }); internal_static_context_LinkAttributes_descriptor = getDescriptor().getMessageTypes().get(24); - internal_static_context_LinkAttributes_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_LinkAttributes_descriptor, new java.lang.String[] { "TotalCapacityGbps", "UsedCapacityGbps" }); + internal_static_context_LinkAttributes_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_LinkAttributes_descriptor, new java.lang.String[] { "TotalCapacityGbps", "UsedCapacityGbps", "AvailableBw", "LinkDelay", "MinMaxLinkDelay", "DelayVariation" }); internal_static_context_Link_descriptor = getDescriptor().getMessageTypes().get(25); internal_static_context_Link_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Link_descriptor, new java.lang.String[] { "LinkId", "Name", "LinkType", "LinkEndpointIds", "Attributes" }); internal_static_context_LinkIdList_descriptor = getDescriptor().getMessageTypes().get(26); diff --git a/src/resource_manager/Dockerfile b/src/resource_manager/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..3d68292a79bd7fc9ac42728d80c2ea74d4aeece2 --- /dev/null +++ b/src/resource_manager/Dockerfile @@ -0,0 +1,74 @@ +# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/) +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +FROM python:3.9-slim + +# Actualizar e instalar wget para grpc_health_probe y compiladores si se necesitan +RUN apt-get update && \ + apt-get install -y wget g++ && \ + rm -rf /var/lib/apt/lists/* + +# Variable para logs Python no bufferizados +ENV PYTHONUNBUFFERED=0 + +# Descargar grpc_health_probe para readiness y liveness +RUN GRPC_HEALTH_PROBE_VERSION=v0.2.0 && \ + wget -qO/bin/grpc_health_probe https://github.com/grpc-ecosystem/grpc-health-probe/releases/download/${GRPC_HEALTH_PROBE_VERSION}/grpc_health_probe-linux-amd64 && \ + chmod +x /bin/grpc_health_probe + +# Instalar pip y herramientas necesarias +RUN python3 -m pip install --upgrade pip setuptools wheel pip-tools + +# Establecer directorio de trabajo +WORKDIR /var/teraflow + +COPY common_requirements.in common_requirements.in +RUN pip-compile --quiet --output-file=common_requirements.txt common_requirements.in +RUN python3 -m pip install -r common_requirements.txt + +# Add common files into working directory +WORKDIR /var/teraflow/common +COPY src/common/. ./ +RUN rm -rf proto + +# Create proto sub-folder, copy .proto files, and generate Python code +RUN mkdir -p /var/teraflow/common/proto +WORKDIR /var/teraflow/common/proto +RUN touch __init__.py +COPY proto/*.proto ./ +RUN python3 -m grpc_tools.protoc -I=. --python_out=. --grpc_python_out=. *.proto +RUN rm *.proto +RUN find . -type f -exec sed -i -E 's/(import\ .*)_pb2/from . \1_pb2/g' {} \; + + +# Create component sub-folders, get specific Python packages +RUN mkdir -p /var/teraflow/resource_manager +WORKDIR /var/teraflow/resource_manager +COPY src/resource_manager/requirements.in requirements.in +RUN pip-compile --quiet --output-file=requirements.txt requirements.in +RUN python3 -m pip install -r requirements.txt + +# Add component files into working directory +WORKDIR /var/teraflow +COPY src/context/. context/ +COPY src/device/. device/ +COPY src/pathcomp/frontend/. pathcomp/frontend/ +COPY src/service/. service/ +COPY src/resource_manager/. resource_manager/ + +# Exponer el puerto de gRPC +EXPOSE 40010 + +# Comando para arrancar el servicio +CMD ["python", "-m", "resource_manager.service"] diff --git a/src/resource_manager/README.txt b/src/resource_manager/README.txt new file mode 100644 index 0000000000000000000000000000000000000000..e330f158731308e243349c8fcae5bc58a80f2f21 --- /dev/null +++ b/src/resource_manager/README.txt @@ -0,0 +1,33 @@ +Overview: + +ResourceManager is a supporting microservice designed to manage network resources (IP and VLAN) within the SDN controller TFS. +Its main purpose is to verify the availability of such resources before deploying L2 or L3 services, acting as a safeguard to prevent conflicts or duplicate assignments. + +Current Status: + +The gRPC service has been implemented in Python. +The current logic supports: + Checking whether an IP or VLAN is already assigned on the router. + Assigning a new IP or VLAN (in-memory) if available. +Resource state is maintained in memory only, with no persistence. +The module is already integrated with the TFS controller, and is called before generating services for the NBI. + +Structure: + +├── Dockerfile # Docker image definition for the service +├── README.txt +├── requirements.in # Service dependencies (e.g., gRPC) +├── __init__.py +├── client/ +│ ├── ResourceManagerClient.py # gRPC client to test the service +│ └── __init__.py +└── service/ + ├── ResourceManagerService.py # gRPC service logic + ├── ResourceManagerServicerImpl.py # gRPC server implementation + ├── __init__.py + └── __main__.py # Main entry point (launches the server) + +proto/ +│ └── resource_manager.proto # gRPC service definition (messages & service interface) +manifest/ +│ └── resource-manager-deployment.yaml # Kubernetes Deployment & Service definition \ No newline at end of file diff --git a/src/resource_manager/__init__.py b/src/resource_manager/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/resource_manager/client/ResourceManagerClient.py b/src/resource_manager/client/ResourceManagerClient.py new file mode 100644 index 0000000000000000000000000000000000000000..b37190eb16f1bef548e2da7ec8df474ec6153bea --- /dev/null +++ b/src/resource_manager/client/ResourceManagerClient.py @@ -0,0 +1,50 @@ +import grpc, logging +from common.Constants import ServiceNameEnum +from common.Settings import get_service_host, get_service_port_grpc +from common.proto.resource_manager_pb2 import L2Request, L2Response, L3Request, L3Response +from common.proto.resource_manager_pb2_grpc import ResourceManagerStub +from common.tools.client.RetryDecorator import retry, delay_exponential +from common.tools.grpc.Tools import grpc_message_to_json_string + +LOGGER = logging.getLogger(__name__) +MAX_RETRIES = 15 +DELAY_FUNCTION = delay_exponential(initial=0.01, increment=2.0, maximum=5.0) +RETRY_DECORATOR = retry(max_retries=MAX_RETRIES, delay_function=DELAY_FUNCTION, prepare_method_name='connect') + + +class ResourceManagerClient: + def __init__(self, host=None, port=None): + if not host: + host = get_service_host(ServiceNameEnum.RESOURCE_MANAGER) + if not port: + port = get_service_port_grpc(ServiceNameEnum.RESOURCE_MANAGER) + self.endpoint = f"{host}:{port}" + LOGGER.info(f"Creating channel to {self.endpoint}...") + self.channel = None + self.stub = None + self.connect() + LOGGER.info("Channel created") + + def connect(self): + self.channel = grpc.insecure_channel(self.endpoint) + self.stub = ResourceManagerStub(self.channel) + + def close(self): + if self.channel is not None: + self.channel.close() + self.channel = None + self.stub = None + + @RETRY_DECORATOR + def VerifyAndAssignL2(self, request: L2Request) -> L2Response: + LOGGER.info(f"VerifyAndAssignL2 request: {grpc_message_to_json_string(request)}") + response = self.stub.VerifyAndAssignL2(request) + LOGGER.info(f"VerifyAndAssignL2 response: {grpc_message_to_json_string(response)}") + return response + + @RETRY_DECORATOR + def VerifyAndAssignL3(self, request: L3Request) -> L3Response: + LOGGER.info(f"VerifyAndAssignL3 request: {grpc_message_to_json_string(request)}") + response = self.stub.VerifyAndAssignL3(request) + LOGGER.info(f"VerifyAndAssignL3 response: {grpc_message_to_json_string(response)}") + return response \ No newline at end of file diff --git a/src/resource_manager/client/__init__.py b/src/resource_manager/client/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/resource_manager/requirements.in b/src/resource_manager/requirements.in new file mode 100644 index 0000000000000000000000000000000000000000..3ccbed1e2cf63dbf06c55eb8015fcb8589598de5 --- /dev/null +++ b/src/resource_manager/requirements.in @@ -0,0 +1,17 @@ +# Copyright 2022-2024 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/) +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +grpcio==1.47.* +protobuf==3.20.* \ No newline at end of file diff --git a/src/resource_manager/service/ResourceManagerService.py b/src/resource_manager/service/ResourceManagerService.py new file mode 100644 index 0000000000000000000000000000000000000000..b70310679663cd3f7e4ed1bd2f729f651088566d --- /dev/null +++ b/src/resource_manager/service/ResourceManagerService.py @@ -0,0 +1,35 @@ +# Copyright 2022-2024 ETSI OSG/SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import logging +from common.Constants import ServiceNameEnum +from common.Settings import get_service_port_grpc +from common.tools.service.GenericGrpcService import GenericGrpcService +from common.proto.resource_manager_pb2_grpc import add_ResourceManagerServicer_to_server +from .ResourceManagerServicerImpl import ResourceManagerServicerImpl + + +LOGGER = logging.getLogger(__name__) + + +class ResourceManagerService(GenericGrpcService): + def __init__(self, cls_name: str = __name__) -> None: + port = get_service_port_grpc(ServiceNameEnum.RESOURCEMANAGER) + super().__init__(port, cls_name=cls_name) + self.servicer = ResourceManagerServicerImpl() + + def install_servicers(self): + add_ResourceManagerServicer_to_server(self.servicer, self.server) + + diff --git a/src/resource_manager/service/ResourceManagerServicerImpl.py b/src/resource_manager/service/ResourceManagerServicerImpl.py new file mode 100644 index 0000000000000000000000000000000000000000..0f1006b79b8b1f1ec39eb0b91f8fd3684093f7e4 --- /dev/null +++ b/src/resource_manager/service/ResourceManagerServicerImpl.py @@ -0,0 +1,75 @@ +# Copyright 2022-2024 ETSI OSG/SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import grpc, logging +from common.method_wrappers.Decorator import MetricsPool, safe_and_metered_rpc_method + +from common.proto.resource_manager_pb2_grpc import ResourceManagerServicer +from common.proto.resource_manager_pb2 import ( + L2Request, L2Response, + L3Request, L3Response +) + +# Métricas +RESOURCE_POOL = MetricsPool('ResourceManager', 'RPC') +LOGGER = logging.getLogger(__name__) + + +class ResourceManagerServicerImpl(ResourceManagerServicer): + def __init__(self): + LOGGER.info("Initializing ResourceManagerServicerImpl") + + self.assigned_vlans = {} # (device_uuid, endpoint_uuid) -> vlan_id + self.assigned_ips = {} # (device_uuid, endpoint_uuid) -> ip_address + + @safe_and_metered_rpc_method(RESOURCE_POOL, LOGGER) + def VerifyAndAssignL2(self, request: L2Request, context: grpc.ServicerContext) -> L2Response: + key = (request.device_uuid, request.endpoint_uuid) + LOGGER.info("Vlanid: %s, Endpoint: %s", request.vlan_id, key) + if key in self.assigned_vlans: + assigned_vlan = self.assigned_vlans[key] + if assigned_vlan == request.vlan_id: + msg = f"VLAN {request.vlan_id} already assigned to endpoint {key}." + LOGGER.info(msg) + return L2Response(success=True, message=msg) + else: + msg = f"Conflict: endpoint {key} already has VLAN {assigned_vlan} assigned." + LOGGER.warning(msg) + return L2Response(success=False, message=msg) + else: + self.assigned_vlans[key] = request.vlan_id + msg = f"Assigned VLAN {request.vlan_id} to endpoint {key}." + LOGGER.info(msg) + return L2Response(success=True, message=msg) + + + @safe_and_metered_rpc_method(RESOURCE_POOL, LOGGER) + def VerifyAndAssignL3(self, request: L3Request, context: grpc.ServicerContext) -> L3Response: + key = (request.device_uuid, request.endpoint_uuid) + + if key in self.assigned_ips: + assigned_ip = self.assigned_ips[key] + if assigned_ip == request.ip_address: + msg = f"IP {request.ip_address} already assigned to endpoint {key}." + LOGGER.info(msg) + return L3Response(success=True, message=msg) + else: + msg = f"Conflict: endpoint {key} already has IP {assigned_ip} assigned." + LOGGER.warning(msg) + return L3Response(success=False, message=msg) + else: + self.assigned_ips[key] = request.ip_address + msg = f"Assigned IP {request.ip_address} to endpoint {key}." + LOGGER.info(msg) + return L3Response(success=True, message=msg) \ No newline at end of file diff --git a/src/resource_manager/service/__init__.py b/src/resource_manager/service/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..3ee6f7071f145e06c3aeaefc09a43ccd88e619e3 --- /dev/null +++ b/src/resource_manager/service/__init__.py @@ -0,0 +1,14 @@ +# Copyright 2022-2024 ETSI OSG/SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + diff --git a/src/resource_manager/service/__main__.py b/src/resource_manager/service/__main__.py new file mode 100644 index 0000000000000000000000000000000000000000..e26477627e854da08f5e1214dda3942b5cee5996 --- /dev/null +++ b/src/resource_manager/service/__main__.py @@ -0,0 +1,53 @@ +# Copyright 2022-2024 ETSI OSG/SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import logging, signal, sys, threading +from common.Settings import get_log_level +from .ResourceManagerService import ResourceManagerService + +terminate = threading.Event() +LOGGER = logging.getLogger(__name__) + +def signal_handler(signal, frame): # pylint: disable=redefined-outer-name + LOGGER.warning('Terminate signal received') + LOGGER.warning(signal) + terminate.set() + +def main(): + global LOGGER # pylint: disable=global-statement + + log_level = get_log_level() + logging.basicConfig(level=log_level) + LOGGER = logging.getLogger(__name__) + + signal.signal(signal.SIGINT, signal_handler) + signal.signal(signal.SIGTERM, signal_handler) + + LOGGER.debug('Starting...') + + grpc_service = ResourceManagerService() #Create instance of the GRPC Server + grpc_service.start() + + + # Wait for Ctrl+C or termination signal + while not terminate.wait(timeout=1.0): pass + + LOGGER.debug('Terminating...') + grpc_service.stop() + + LOGGER.debug('Bye') + return 0 + +if __name__ == '__main__': + sys.exit(main()) \ No newline at end of file diff --git a/src/service/Dockerfile b/src/service/Dockerfile index 080efb7970b2d093aa105dfb2b62b6c7e3bbb561..719a492d9d502efb07c6847ad2fff0c287b5956b 100644 --- a/src/service/Dockerfile +++ b/src/service/Dockerfile @@ -70,8 +70,8 @@ COPY src/pathcomp/frontend/__init__.py pathcomp/frontend/__init__.py COPY src/pathcomp/frontend/client/. pathcomp/frontend/client/ COPY src/e2e_orchestrator/__init__.py e2e_orchestrator/__init__.py COPY src/e2e_orchestrator/client/. e2e_orchestrator/client/ -COPY src/qkd_app/__init__.py qkd_app/__init__.py -COPY src/qkd_app/client/. qkd_app/client/ +COPY src/resource_manager/__init__.py resource_manager/__init__.py +COPY src/resource_manager/client/. resource_manager/client/ COPY src/service/. service/ # Start the service diff --git a/src/service/service/service_handlers/l2nm_openconfig/L2NMOpenConfigServiceHandler.py b/src/service/service/service_handlers/l2nm_openconfig/L2NMOpenConfigServiceHandler.py index 2f41a414d4cf8ba1a72b5f5debecccc493186e36..8d72a04cb40544b36f7f76ffac7c1af5e2eb6ee2 100644 --- a/src/service/service/service_handlers/l2nm_openconfig/L2NMOpenConfigServiceHandler.py +++ b/src/service/service/service_handlers/l2nm_openconfig/L2NMOpenConfigServiceHandler.py @@ -23,6 +23,7 @@ from service.service.service_handler_api._ServiceHandler import _ServiceHandler from service.service.service_handler_api.SettingsHandler import SettingsHandler from service.service.task_scheduler.TaskExecutor import TaskExecutor from .ConfigRules import setup_config_rules, teardown_config_rules +from resource_manager.client.ResourceManagerClient import ResourceManagerClient LOGGER = logging.getLogger(__name__) @@ -35,7 +36,8 @@ class L2NMOpenConfigServiceHandler(_ServiceHandler): self.__service = service self.__task_executor = task_executor self.__settings_handler = SettingsHandler(service.service_config, **settings) - + self.__resource_manager = ResourceManagerClient() + @metered_subclass_method(METRICS_POOL) def SetEndpoint( self, endpoints : List[Tuple[str, str, Optional[str]]], connection_uuid : Optional[str] = None @@ -57,6 +59,20 @@ class L2NMOpenConfigServiceHandler(_ServiceHandler): endpoint_acls = self.__settings_handler.get_endpoint_acls(device_obj, endpoint_obj) endpoint_name = endpoint_obj.name + + vlan_id = endpoint_settings.value('vlan_id') + resp = self.__resource_manager.verify_and_assign_l2( + device_uuid=device_uuid, + endpoint_uuid=endpoint_uuid, + vlan_id=vlan_id, + service_uuid=service_uuid, + connection_uuid=connection_uuid or 'default', + endpoint_name=endpoint_name + ) + + if not resp.success: + raise Exception(f"ResourceManager L2 error: {resp.message}") + json_config_rules = setup_config_rules( service_uuid, connection_uuid, device_uuid, endpoint_uuid, endpoint_name, settings, endpoint_settings, endpoint_acls) diff --git a/src/webui/service/templates/pcep/lspdb.html b/src/webui/service/templates/pcep/lspdb.html index 972d334e918e0764a066954827b7ef14754fe440..1fcf31bcd2fbeb4ec4427d0bba6b5afccb448874 100644 --- a/src/webui/service/templates/pcep/lspdb.html +++ b/src/webui/service/templates/pcep/lspdb.html @@ -14,13 +14,20 @@ limitations under the License. --> {% extends 'base.html' %} - +<style> + .dashed-table { + border-collapse: collapse; + } + .dashed-table td, .dashed-table th { + border: 1px dashed black !important; + } +</style> {% block content %} <h1>Label Switched Paths Database (LSPDB)</h1> <br> {% if lspdb %} - <table border="1"> + <table class="dashed-table" border="1"> <thead> <tr> <th>LSP UUID</th> @@ -35,9 +42,39 @@ <tr> <td>{{ lsp.lsp_uuid }}</td> <td>{{ lsp.srp }}</td> - <td>{{ lsp.lsp }}</td> - <td>{{ lsp.path }}</td> - <td>{{ lsp.associationlist }}</td> + <td> + <details> + <summary>{{ lsp.lsp.split('[')[1].split(']')[0].split(',')[0] }}</summary> + <div> + {% set before_lsp_identifiers = lsp.lsp[5:].split('lspIdentifiers_tlv=')[0] %}{# Remove "LSP [" from the beginning #} + {% for subfield in before_lsp_identifiers.split(',') %} + <div>{{ subfield }}</div> + {% endfor %} + {% set lsp_content = lsp.lsp[:-1].split('IPv4LSPIdentifiersTLV ')[1] %} + <div>lspIdentifiers_tlv=IPv4LSPIdentifiersTLV:</div> + {% for subfield in lsp_content.split(',') %} + <div>{{ subfield }}</div> + {% endfor %} + </div> + </details> + </td> + <td> + <details> + <summary>{{ lsp.path.split('[')[1].split(']')[0].split(',')[0] }}</summary> + <div> + {% set path_content = lsp.path[6:-1] %} {# Remove "Path [" from the beginning and "]" from the end #} + {% for subfield in path_content.split(',') %} + <div>{{ subfield }}</div> + {% endfor %} + </div> + </details> + </td> + <td> + <details> + <summary>Association List</summary> + <div>{{ lsp.associationlist }}</div> + </details> + </td> </tr> {% endfor %} </tbody> @@ -46,5 +83,12 @@ <p>No LSP data available.</p> {% endif %} {% endblock %} - - +<style> + .dashed-table td, .dashed-table th { + border-right: 1px dashed black; + } + + .dashed-table td:last-child, .dashed-table th:last-child { + border-right: none; + } +</style> \ No newline at end of file diff --git a/src/webui/service/templates/pcep/sendPath.html b/src/webui/service/templates/pcep/sendPath.html index ace2745ed5ee54522093d89fb3786ca20e5ca8a0..ae4b45b97a03af44a9f8547bfa01c1369624d4a5 100644 --- a/src/webui/service/templates/pcep/sendPath.html +++ b/src/webui/service/templates/pcep/sendPath.html @@ -13,43 +13,141 @@ See the License for the specific language governing permissions and limitations under the License. --> - {% extends 'base.html' %} {% block content %} - <h1>Send Path </h1> - <h5>Create, delete or modify paths</h5> - <div> - <form action='{{ url_for("pcep.sendPath")}}' method="post"> - {{ form.hidden_tag() }} - <fieldset> - <div class="row mb-3"> - {{ form.command.label(class="col-sm-2 col-form-label") }} - <div class="col-sm-10"> - {% if form.command.errors %} - {{ form.command(class="form-control is-invalid") }} - <div class="invalid-feedback"> - {% for error in form.command.errors %} - <span>{{ error }}</span> - {% endfor %} - </div> - {% else %} - {{ form.command(class="form-control") }} - {% endif %} - </div> - </div> - - </fieldset> - <button type="submit" class="btn btn-primary"> - <i class="bi bi-plus-circle-fill"></i> - Send Command - </button> - </form> - </div> - {% if response %} + <h1>Send Path </h1> + <h5>Create, delete or modify paths</h5> + <div> + <form action="{{ url_for('pcep.sendPath') }}" method="post" id="sendPathForm"> + {{ form.hidden_tag() }} + <fieldset> + <div class="row mb-3"> + {{ form.command.label(class="col-sm-2 col-form-label") }} + <div class="col-sm-10"> + {% if form.command.errors %} + {{ form.command(class="form-control is-invalid") }} + <div class="invalid-feedback"> + {% for error in form.command.errors %} + <span>{{ error }}</span> + {% endfor %} + </div> + {% else %} + {{ form.command(class="form-control") }} + {% endif %} + </div> + </div> + <div class="row mb-3"> + <label for="commandType" class="col-sm-2 col-form-label">Command</label> + <div class="col-sm-10"> + <select id="commandType" class="form-control" onchange="updateForm()"> + <option value="initiate lsp">Initiate LSP</option> + <option value="terminate lsp">Terminate LSP</option> + <option value="update lsp">Update LSP</option> + <option value="create candidatepath">Create Candidate Path</option> + </select> + </div> + </div> + <div id="dynamicFields"></div> + <!-- Campo oculto para almacenar el comando generado --> + <input type="hidden" id="command" name="command"> + </fieldset> + <button type="submit" class="btn btn-primary" onclick="assembleCommand(event)"> + <i class="bi bi-plus-circle-fill"></i> Send Command + </button> + </form> + </div> + + {% if response %} <div class="mt-4"> <h5>Response</h5> <p><strong>Success:</strong> {{ response.success }}</p> <p><strong>Error Message:</strong> {{ response.error_message }}</p> </div> {% endif %} -{% endblock %} + + <script> + function updateForm() { + let commandType = document.getElementById("commandType").value; + let dynamicFields = document.getElementById("dynamicFields"); + dynamicFields.innerHTML = ""; // Limpiar campos previos + + if (commandType === "initiate lsp") { + dynamicFields.innerHTML = ` + <div class='row mb-3'> + <label class='col-sm-2 col-form-label'>Nombre LSP</label> + <div class='col-sm-10'><input type='text' class='form-control' name='lsp_name' value='prueba'></div> + </div> + <div class='row mb-3'> + <label class='col-sm-2 col-form-label'>PCC IP</label> + <div class='col-sm-10'><input type='text' class='form-control' name='pcc_ip' value='10.95.90.56'></div> + </div> + <div class='row mb-3'> + <label class='col-sm-2 col-form-label'>Headpoint</label> + <div class='col-sm-10'><input type='text' class='form-control' name='headpoint' value='1.1.1.1'></div> + </div> + <div class='row mb-3'> + <label class='col-sm-2 col-form-label'>Endpoint</label> + <div class='col-sm-10'><input type='text' class='form-control' name='endpoint' value='1.1.1.2'></div> + </div> + <div class='row mb-3'> + <label class='col-sm-2 col-form-label'>SID ENLACE</label> + <div class='col-sm-10'><input type='text' class='form-control' name='SID' value='m1228800'></div> + </div> + <div class='row mb-3'> + <label class='col-sm-2 col-form-label'>na[dir.ip1]-[dir.ip2]</label> + <div class='col-sm-10'><input type='text' class='form-control' name='na' value='na192.168.3.11-192.168.3.13'></div> + </div> + <div class='row mb-3'> + <label class='col-sm-2 col-form-label'>SID ENLACE</label> + <div class='col-sm-10'><input type='text' class='form-control' name='SID' value='m819200'></div> + </div> + <div class='row mb-3'> + <label class='col-sm-2 col-form-label'>na[dir.ip1]-[dir.ip2]</label> + <div class='col-sm-10'><input type='text' class='form-control' name='na' value='na192.168.2.13-192.168.2.12'></div> + </div> + `; + } else if (commandType === "terminate lsp") { + dynamicFields.innerHTML = ` + <div class='row mb-3'> + <label class='col-sm-2 col-form-label'>IP PCC</label> + <div class='col-sm-10'><input type='text' class='form-control' name='lsp_name'></div> + </div> + <div class='row mb-3'> + <label class='col-sm-2 col-form-label'>LSP-ID</label> + <div class='col-sm-10'><input type='text' class='form-control' name='lsp_id'></div> + </div> + <div class='row mb-3'> + <label class='col-sm-2 col-form-label'>LSP Name</label> + <div class='col-sm-10'><input type='text' class='form-control' name='lsp_name'></div> + </div> + `; + } // Agregar más condiciones según sea necesario + } + + function assembleCommand(event) { + event.preventDefault(); // Evita que se envÃe el formulario inmediatamente + + // let commandType = document.getElementById("commandType").value; + let command = ""; // Comienza con el tipo de comando ya agregado + + // Obtén todos los elementos del formulario que no sean el campo oculto 'command' + let formElements = document.querySelectorAll("#sendPathForm input, #sendPathForm select"); + + formElements.forEach(function(element) { + let elementName = element.name; + let elementValue = element.value.trim(); // Obtener el valor y quitar espacios adicionales + + // Solo agregar al comando si el valor no está vacÃo, ni es el campo 'command' ni 'csrf_token' + if (elementValue && elementName !== 'command' && elementName !== 'csrf_token') { + command += ` ${elementValue}`; // Agrega el valor del campo al comando + } + }); + + // El campo oculto 'command' ya tiene el comando generado, asà que no lo sobreescribimos + document.getElementById("command").value = command.trim(); // Agrega el comando generado al campo oculto + + // EnvÃa el formulario + document.getElementById("sendPathForm").submit(); + } + </script> +{% endblock %} \ No newline at end of file diff --git a/src/ztp/target/generated-sources/grpc/context/ContextOuterClass.java b/src/ztp/target/generated-sources/grpc/context/ContextOuterClass.java index ef76aed1ae1e322a6bf02018b5634fac1681cc36..0a7670c301cc68f5bae96890e85bba6d49bdc794 100644 --- a/src/ztp/target/generated-sources/grpc/context/ContextOuterClass.java +++ b/src/ztp/target/generated-sources/grpc/context/ContextOuterClass.java @@ -23685,6 +23685,30 @@ public final class ContextOuterClass { * @return The usedCapacityGbps. */ float getUsedCapacityGbps(); + + /** + * <code>float available_bw = 3;</code> + * @return The availableBw. + */ + float getAvailableBw(); + + /** + * <code>float link_delay = 5;</code> + * @return The linkDelay. + */ + float getLinkDelay(); + + /** + * <code>float min_max_link_delay = 6;</code> + * @return The minMaxLinkDelay. + */ + float getMinMaxLinkDelay(); + + /** + * <code>float delay_variation = 7;</code> + * @return The delayVariation. + */ + float getDelayVariation(); } /** @@ -23744,6 +23768,58 @@ public final class ContextOuterClass { return usedCapacityGbps_; } + public static final int AVAILABLE_BW_FIELD_NUMBER = 3; + + private float availableBw_ = 0F; + + /** + * <code>float available_bw = 3;</code> + * @return The availableBw. + */ + @java.lang.Override + public float getAvailableBw() { + return availableBw_; + } + + public static final int LINK_DELAY_FIELD_NUMBER = 5; + + private float linkDelay_ = 0F; + + /** + * <code>float link_delay = 5;</code> + * @return The linkDelay. + */ + @java.lang.Override + public float getLinkDelay() { + return linkDelay_; + } + + public static final int MIN_MAX_LINK_DELAY_FIELD_NUMBER = 6; + + private float minMaxLinkDelay_ = 0F; + + /** + * <code>float min_max_link_delay = 6;</code> + * @return The minMaxLinkDelay. + */ + @java.lang.Override + public float getMinMaxLinkDelay() { + return minMaxLinkDelay_; + } + + public static final int DELAY_VARIATION_FIELD_NUMBER = 7; + + private float delayVariation_ = 0F; + + /** + * <code>float delay_variation = 7;</code> + * @return The delayVariation. + */ + @java.lang.Override + public float getDelayVariation() { + return delayVariation_; + } + private byte memoizedIsInitialized = -1; @java.lang.Override @@ -23765,6 +23841,18 @@ public final class ContextOuterClass { if (java.lang.Float.floatToRawIntBits(usedCapacityGbps_) != 0) { output.writeFloat(2, usedCapacityGbps_); } + if (java.lang.Float.floatToRawIntBits(availableBw_) != 0) { + output.writeFloat(3, availableBw_); + } + if (java.lang.Float.floatToRawIntBits(linkDelay_) != 0) { + output.writeFloat(5, linkDelay_); + } + if (java.lang.Float.floatToRawIntBits(minMaxLinkDelay_) != 0) { + output.writeFloat(6, minMaxLinkDelay_); + } + if (java.lang.Float.floatToRawIntBits(delayVariation_) != 0) { + output.writeFloat(7, delayVariation_); + } getUnknownFields().writeTo(output); } @@ -23780,6 +23868,18 @@ public final class ContextOuterClass { if (java.lang.Float.floatToRawIntBits(usedCapacityGbps_) != 0) { size += com.google.protobuf.CodedOutputStream.computeFloatSize(2, usedCapacityGbps_); } + if (java.lang.Float.floatToRawIntBits(availableBw_) != 0) { + size += com.google.protobuf.CodedOutputStream.computeFloatSize(3, availableBw_); + } + if (java.lang.Float.floatToRawIntBits(linkDelay_) != 0) { + size += com.google.protobuf.CodedOutputStream.computeFloatSize(5, linkDelay_); + } + if (java.lang.Float.floatToRawIntBits(minMaxLinkDelay_) != 0) { + size += com.google.protobuf.CodedOutputStream.computeFloatSize(6, minMaxLinkDelay_); + } + if (java.lang.Float.floatToRawIntBits(delayVariation_) != 0) { + size += com.google.protobuf.CodedOutputStream.computeFloatSize(7, delayVariation_); + } size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; @@ -23798,6 +23898,14 @@ public final class ContextOuterClass { return false; if (java.lang.Float.floatToIntBits(getUsedCapacityGbps()) != java.lang.Float.floatToIntBits(other.getUsedCapacityGbps())) return false; + if (java.lang.Float.floatToIntBits(getAvailableBw()) != java.lang.Float.floatToIntBits(other.getAvailableBw())) + return false; + if (java.lang.Float.floatToIntBits(getLinkDelay()) != java.lang.Float.floatToIntBits(other.getLinkDelay())) + return false; + if (java.lang.Float.floatToIntBits(getMinMaxLinkDelay()) != java.lang.Float.floatToIntBits(other.getMinMaxLinkDelay())) + return false; + if (java.lang.Float.floatToIntBits(getDelayVariation()) != java.lang.Float.floatToIntBits(other.getDelayVariation())) + return false; if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; @@ -23814,6 +23922,14 @@ public final class ContextOuterClass { hash = (53 * hash) + java.lang.Float.floatToIntBits(getTotalCapacityGbps()); hash = (37 * hash) + USED_CAPACITY_GBPS_FIELD_NUMBER; hash = (53 * hash) + java.lang.Float.floatToIntBits(getUsedCapacityGbps()); + hash = (37 * hash) + AVAILABLE_BW_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits(getAvailableBw()); + hash = (37 * hash) + LINK_DELAY_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits(getLinkDelay()); + hash = (37 * hash) + MIN_MAX_LINK_DELAY_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits(getMinMaxLinkDelay()); + hash = (37 * hash) + DELAY_VARIATION_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits(getDelayVariation()); hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; @@ -23920,6 +24036,10 @@ public final class ContextOuterClass { bitField0_ = 0; totalCapacityGbps_ = 0F; usedCapacityGbps_ = 0F; + availableBw_ = 0F; + linkDelay_ = 0F; + minMaxLinkDelay_ = 0F; + delayVariation_ = 0F; return this; } @@ -23960,6 +24080,18 @@ public final class ContextOuterClass { if (((from_bitField0_ & 0x00000002) != 0)) { result.usedCapacityGbps_ = usedCapacityGbps_; } + if (((from_bitField0_ & 0x00000004) != 0)) { + result.availableBw_ = availableBw_; + } + if (((from_bitField0_ & 0x00000008) != 0)) { + result.linkDelay_ = linkDelay_; + } + if (((from_bitField0_ & 0x00000010) != 0)) { + result.minMaxLinkDelay_ = minMaxLinkDelay_; + } + if (((from_bitField0_ & 0x00000020) != 0)) { + result.delayVariation_ = delayVariation_; + } } @java.lang.Override @@ -23981,6 +24113,18 @@ public final class ContextOuterClass { if (other.getUsedCapacityGbps() != 0F) { setUsedCapacityGbps(other.getUsedCapacityGbps()); } + if (other.getAvailableBw() != 0F) { + setAvailableBw(other.getAvailableBw()); + } + if (other.getLinkDelay() != 0F) { + setLinkDelay(other.getLinkDelay()); + } + if (other.getMinMaxLinkDelay() != 0F) { + setMinMaxLinkDelay(other.getMinMaxLinkDelay()); + } + if (other.getDelayVariation() != 0F) { + setDelayVariation(other.getDelayVariation()); + } this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; @@ -24018,6 +24162,34 @@ public final class ContextOuterClass { break; } // case 21 + case 29: + { + availableBw_ = input.readFloat(); + bitField0_ |= 0x00000004; + break; + } + // case 29 + case 45: + { + linkDelay_ = input.readFloat(); + bitField0_ |= 0x00000008; + break; + } + // case 45 + case 53: + { + minMaxLinkDelay_ = input.readFloat(); + bitField0_ |= 0x00000010; + break; + } + // case 53 + case 61: + { + delayVariation_ = input.readFloat(); + bitField0_ |= 0x00000020; + break; + } + // case 61 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { @@ -24109,6 +24281,142 @@ public final class ContextOuterClass { return this; } + private float availableBw_; + + /** + * <code>float available_bw = 3;</code> + * @return The availableBw. + */ + @java.lang.Override + public float getAvailableBw() { + return availableBw_; + } + + /** + * <code>float available_bw = 3;</code> + * @param value The availableBw to set. + * @return This builder for chaining. + */ + public Builder setAvailableBw(float value) { + availableBw_ = value; + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + + /** + * <code>float available_bw = 3;</code> + * @return This builder for chaining. + */ + public Builder clearAvailableBw() { + bitField0_ = (bitField0_ & ~0x00000004); + availableBw_ = 0F; + onChanged(); + return this; + } + + private float linkDelay_; + + /** + * <code>float link_delay = 5;</code> + * @return The linkDelay. + */ + @java.lang.Override + public float getLinkDelay() { + return linkDelay_; + } + + /** + * <code>float link_delay = 5;</code> + * @param value The linkDelay to set. + * @return This builder for chaining. + */ + public Builder setLinkDelay(float value) { + linkDelay_ = value; + bitField0_ |= 0x00000008; + onChanged(); + return this; + } + + /** + * <code>float link_delay = 5;</code> + * @return This builder for chaining. + */ + public Builder clearLinkDelay() { + bitField0_ = (bitField0_ & ~0x00000008); + linkDelay_ = 0F; + onChanged(); + return this; + } + + private float minMaxLinkDelay_; + + /** + * <code>float min_max_link_delay = 6;</code> + * @return The minMaxLinkDelay. + */ + @java.lang.Override + public float getMinMaxLinkDelay() { + return minMaxLinkDelay_; + } + + /** + * <code>float min_max_link_delay = 6;</code> + * @param value The minMaxLinkDelay to set. + * @return This builder for chaining. + */ + public Builder setMinMaxLinkDelay(float value) { + minMaxLinkDelay_ = value; + bitField0_ |= 0x00000010; + onChanged(); + return this; + } + + /** + * <code>float min_max_link_delay = 6;</code> + * @return This builder for chaining. + */ + public Builder clearMinMaxLinkDelay() { + bitField0_ = (bitField0_ & ~0x00000010); + minMaxLinkDelay_ = 0F; + onChanged(); + return this; + } + + private float delayVariation_; + + /** + * <code>float delay_variation = 7;</code> + * @return The delayVariation. + */ + @java.lang.Override + public float getDelayVariation() { + return delayVariation_; + } + + /** + * <code>float delay_variation = 7;</code> + * @param value The delayVariation to set. + * @return This builder for chaining. + */ + public Builder setDelayVariation(float value) { + delayVariation_ = value; + bitField0_ |= 0x00000020; + onChanged(); + return this; + } + + /** + * <code>float delay_variation = 7;</code> + * @return This builder for chaining. + */ + public Builder clearDelayVariation() { + bitField0_ = (bitField0_ & ~0x00000020); + delayVariation_ = 0F; + onChanged(); + return this; + } + @java.lang.Override public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.setUnknownFields(unknownFields); @@ -81206,8 +81514,8 @@ public final class ContextOuterClass { private static com.google.protobuf.Descriptors.FileDescriptor descriptor; static { - java.lang.String[] descriptorData = { "\n\rcontext.proto\022\007context\032\031google/protobu" + "f/any.proto\032\tacl.proto\032\026kpi_sample_types" + ".proto\"\007\n\005Empty\"\024\n\004Uuid\022\014\n\004uuid\030\001 \001(\t\"\036\n" + "\tTimestamp\022\021\n\ttimestamp\030\001 \001(\001\"Z\n\005Event\022%" + "\n\ttimestamp\030\001 \001(\0132\022.context.Timestamp\022*\n" + "\nevent_type\030\002 \001(\0162\026.context.EventTypeEnu" + "m\"0\n\tContextId\022#\n\014context_uuid\030\001 \001(\0132\r.c" + "ontext.Uuid\"\351\001\n\007Context\022&\n\ncontext_id\030\001 " + "\001(\0132\022.context.ContextId\022\014\n\004name\030\002 \001(\t\022)\n" + "\014topology_ids\030\003 \003(\0132\023.context.TopologyId" + "\022\'\n\013service_ids\030\004 \003(\0132\022.context.ServiceI" + "d\022#\n\tslice_ids\030\005 \003(\0132\020.context.SliceId\022/" + "\n\ncontroller\030\006 \001(\0132\033.context.TeraFlowCon" + "troller\"8\n\rContextIdList\022\'\n\013context_ids\030" + "\001 \003(\0132\022.context.ContextId\"1\n\013ContextList" + "\022\"\n\010contexts\030\001 \003(\0132\020.context.Context\"U\n\014" + "ContextEvent\022\035\n\005event\030\001 \001(\0132\016.context.Ev" + "ent\022&\n\ncontext_id\030\002 \001(\0132\022.context.Contex" + "tId\"Z\n\nTopologyId\022&\n\ncontext_id\030\001 \001(\0132\022." + "context.ContextId\022$\n\rtopology_uuid\030\002 \001(\013" + "2\r.context.Uuid\"\267\001\n\010Topology\022(\n\013topology" + "_id\030\001 \001(\0132\023.context.TopologyId\022\014\n\004name\030\002" + " \001(\t\022%\n\ndevice_ids\030\003 \003(\0132\021.context.Devic" + "eId\022!\n\010link_ids\030\004 \003(\0132\017.context.LinkId\022)" + "\n\020optical_link_ids\030\005 \003(\0132\017.context.LinkI" + "d\"\266\001\n\017TopologyDetails\022(\n\013topology_id\030\001 \001" + "(\0132\023.context.TopologyId\022\014\n\004name\030\002 \001(\t\022 \n" + "\007devices\030\003 \003(\0132\017.context.Device\022\034\n\005links" + "\030\004 \003(\0132\r.context.Link\022+\n\roptical_links\030\005" + " \003(\0132\024.context.OpticalLink\";\n\016TopologyId" + "List\022)\n\014topology_ids\030\001 \003(\0132\023.context.Top" + "ologyId\"5\n\014TopologyList\022%\n\ntopologies\030\001 " + "\003(\0132\021.context.Topology\"X\n\rTopologyEvent\022" + "\035\n\005event\030\001 \001(\0132\016.context.Event\022(\n\013topolo" + "gy_id\030\002 \001(\0132\023.context.TopologyId\".\n\010Devi" + "ceId\022\"\n\013device_uuid\030\001 \001(\0132\r.context.Uuid" + "\"\372\002\n\006Device\022$\n\tdevice_id\030\001 \001(\0132\021.context" + ".DeviceId\022\014\n\004name\030\002 \001(\t\022\023\n\013device_type\030\003" + " \001(\t\022,\n\rdevice_config\030\004 \001(\0132\025.context.De" + "viceConfig\022G\n\031device_operational_status\030" + "\005 \001(\0162$.context.DeviceOperationalStatusE" + "num\0221\n\016device_drivers\030\006 \003(\0162\031.context.De" + "viceDriverEnum\022+\n\020device_endpoints\030\007 \003(\013" + "2\021.context.EndPoint\022&\n\ncomponents\030\010 \003(\0132" + "\022.context.Component\022(\n\rcontroller_id\030\t \001" + "(\0132\021.context.DeviceId\"\311\001\n\tComponent\022%\n\016c" + "omponent_uuid\030\001 \001(\0132\r.context.Uuid\022\014\n\004na" + "me\030\002 \001(\t\022\014\n\004type\030\003 \001(\t\0226\n\nattributes\030\004 \003" + "(\0132\".context.Component.AttributesEntry\022\016" + "\n\006parent\030\005 \001(\t\0321\n\017AttributesEntry\022\013\n\003key" + "\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"9\n\014DeviceConfi" + "g\022)\n\014config_rules\030\001 \003(\0132\023.context.Config" + "Rule\"5\n\014DeviceIdList\022%\n\ndevice_ids\030\001 \003(\013" + "2\021.context.DeviceId\".\n\nDeviceList\022 \n\007dev" + "ices\030\001 \003(\0132\017.context.Device\"\216\001\n\014DeviceFi" + "lter\022)\n\ndevice_ids\030\001 \001(\0132\025.context.Devic" + "eIdList\022\031\n\021include_endpoints\030\002 \001(\010\022\034\n\024in" + "clude_config_rules\030\003 \001(\010\022\032\n\022include_comp" + "onents\030\004 \001(\010\"\200\001\n\013DeviceEvent\022\035\n\005event\030\001 " + "\001(\0132\016.context.Event\022$\n\tdevice_id\030\002 \001(\0132\021" + ".context.DeviceId\022,\n\rdevice_config\030\003 \001(\013" + "2\025.context.DeviceConfig\"*\n\006LinkId\022 \n\tlin" + "k_uuid\030\001 \001(\0132\r.context.Uuid\"I\n\016LinkAttri" + "butes\022\033\n\023total_capacity_gbps\030\001 \001(\002\022\032\n\022us" + "ed_capacity_gbps\030\002 \001(\002\"\275\001\n\004Link\022 \n\007link_" + "id\030\001 \001(\0132\017.context.LinkId\022\014\n\004name\030\002 \001(\t\022" + "(\n\tlink_type\030\003 \001(\0162\025.context.LinkTypeEnu" + "m\022.\n\021link_endpoint_ids\030\004 \003(\0132\023.context.E" + "ndPointId\022+\n\nattributes\030\005 \001(\0132\027.context." + "LinkAttributes\"/\n\nLinkIdList\022!\n\010link_ids" + "\030\001 \003(\0132\017.context.LinkId\"(\n\010LinkList\022\034\n\005l" + "inks\030\001 \003(\0132\r.context.Link\"L\n\tLinkEvent\022\035" + "\n\005event\030\001 \001(\0132\016.context.Event\022 \n\007link_id" + "\030\002 \001(\0132\017.context.LinkId\"X\n\tServiceId\022&\n\n" + "context_id\030\001 \001(\0132\022.context.ContextId\022#\n\014" + "service_uuid\030\002 \001(\0132\r.context.Uuid\"\333\002\n\007Se" + "rvice\022&\n\nservice_id\030\001 \001(\0132\022.context.Serv" + "iceId\022\014\n\004name\030\002 \001(\t\022.\n\014service_type\030\003 \001(" + "\0162\030.context.ServiceTypeEnum\0221\n\024service_e" + "ndpoint_ids\030\004 \003(\0132\023.context.EndPointId\0220" + "\n\023service_constraints\030\005 \003(\0132\023.context.Co" + "nstraint\022.\n\016service_status\030\006 \001(\0132\026.conte" + "xt.ServiceStatus\022.\n\016service_config\030\007 \001(\013" + "2\026.context.ServiceConfig\022%\n\ttimestamp\030\010 " + "\001(\0132\022.context.Timestamp\"C\n\rServiceStatus" + "\0222\n\016service_status\030\001 \001(\0162\032.context.Servi" + "ceStatusEnum\":\n\rServiceConfig\022)\n\014config_" + "rules\030\001 \003(\0132\023.context.ConfigRule\"8\n\rServ" + "iceIdList\022\'\n\013service_ids\030\001 \003(\0132\022.context" + ".ServiceId\"1\n\013ServiceList\022\"\n\010services\030\001 " + "\003(\0132\020.context.Service\"\225\001\n\rServiceFilter\022" + "+\n\013service_ids\030\001 \001(\0132\026.context.ServiceId" + "List\022\034\n\024include_endpoint_ids\030\002 \001(\010\022\033\n\023in" + "clude_constraints\030\003 \001(\010\022\034\n\024include_confi" + "g_rules\030\004 \001(\010\"U\n\014ServiceEvent\022\035\n\005event\030\001" + " \001(\0132\016.context.Event\022&\n\nservice_id\030\002 \001(\013" + "2\022.context.ServiceId\"T\n\007SliceId\022&\n\nconte" + "xt_id\030\001 \001(\0132\022.context.ContextId\022!\n\nslice" + "_uuid\030\002 \001(\0132\r.context.Uuid\"\240\003\n\005Slice\022\"\n\010" + "slice_id\030\001 \001(\0132\020.context.SliceId\022\014\n\004name" + "\030\002 \001(\t\022/\n\022slice_endpoint_ids\030\003 \003(\0132\023.con" + "text.EndPointId\022.\n\021slice_constraints\030\004 \003" + "(\0132\023.context.Constraint\022-\n\021slice_service" + "_ids\030\005 \003(\0132\022.context.ServiceId\022,\n\022slice_" + "subslice_ids\030\006 \003(\0132\020.context.SliceId\022*\n\014" + "slice_status\030\007 \001(\0132\024.context.SliceStatus" + "\022*\n\014slice_config\030\010 \001(\0132\024.context.SliceCo" + "nfig\022(\n\013slice_owner\030\t \001(\0132\023.context.Slic" + "eOwner\022%\n\ttimestamp\030\n \001(\0132\022.context.Time" + "stamp\"E\n\nSliceOwner\022!\n\nowner_uuid\030\001 \001(\0132" + "\r.context.Uuid\022\024\n\014owner_string\030\002 \001(\t\"=\n\013" + "SliceStatus\022.\n\014slice_status\030\001 \001(\0162\030.cont" + "ext.SliceStatusEnum\"8\n\013SliceConfig\022)\n\014co" + "nfig_rules\030\001 \003(\0132\023.context.ConfigRule\"2\n" + "\013SliceIdList\022#\n\tslice_ids\030\001 \003(\0132\020.contex" + "t.SliceId\"+\n\tSliceList\022\036\n\006slices\030\001 \003(\0132\016" + ".context.Slice\"\312\001\n\013SliceFilter\022\'\n\tslice_" + "ids\030\001 \001(\0132\024.context.SliceIdList\022\034\n\024inclu" + "de_endpoint_ids\030\002 \001(\010\022\033\n\023include_constra" + "ints\030\003 \001(\010\022\033\n\023include_service_ids\030\004 \001(\010\022" + "\034\n\024include_subslice_ids\030\005 \001(\010\022\034\n\024include" + "_config_rules\030\006 \001(\010\"O\n\nSliceEvent\022\035\n\005eve" + "nt\030\001 \001(\0132\016.context.Event\022\"\n\010slice_id\030\002 \001" + "(\0132\020.context.SliceId\"6\n\014ConnectionId\022&\n\017" + "connection_uuid\030\001 \001(\0132\r.context.Uuid\"2\n\025" + "ConnectionSettings_L0\022\031\n\021lsp_symbolic_na" + "me\030\001 \001(\t\"\236\001\n\025ConnectionSettings_L2\022\027\n\017sr" + "c_mac_address\030\001 \001(\t\022\027\n\017dst_mac_address\030\002" + " \001(\t\022\022\n\nether_type\030\003 \001(\r\022\017\n\007vlan_id\030\004 \001(" + "\r\022\022\n\nmpls_label\030\005 \001(\r\022\032\n\022mpls_traffic_cl" + "ass\030\006 \001(\r\"t\n\025ConnectionSettings_L3\022\026\n\016sr" + "c_ip_address\030\001 \001(\t\022\026\n\016dst_ip_address\030\002 \001" + "(\t\022\014\n\004dscp\030\003 \001(\r\022\020\n\010protocol\030\004 \001(\r\022\013\n\003tt" + "l\030\005 \001(\r\"[\n\025ConnectionSettings_L4\022\020\n\010src_" + "port\030\001 \001(\r\022\020\n\010dst_port\030\002 \001(\r\022\021\n\ttcp_flag" + "s\030\003 \001(\r\022\013\n\003ttl\030\004 \001(\r\"\304\001\n\022ConnectionSetti" + "ngs\022*\n\002l0\030\001 \001(\0132\036.context.ConnectionSett" + "ings_L0\022*\n\002l2\030\002 \001(\0132\036.context.Connection" + "Settings_L2\022*\n\002l3\030\003 \001(\0132\036.context.Connec" + "tionSettings_L3\022*\n\002l4\030\004 \001(\0132\036.context.Co" + "nnectionSettings_L4\"\363\001\n\nConnection\022,\n\rco" + "nnection_id\030\001 \001(\0132\025.context.ConnectionId" + "\022&\n\nservice_id\030\002 \001(\0132\022.context.ServiceId" + "\0223\n\026path_hops_endpoint_ids\030\003 \003(\0132\023.conte" + "xt.EndPointId\022+\n\017sub_service_ids\030\004 \003(\0132\022" + ".context.ServiceId\022-\n\010settings\030\005 \001(\0132\033.c" + "ontext.ConnectionSettings\"A\n\020ConnectionI" + "dList\022-\n\016connection_ids\030\001 \003(\0132\025.context." + "ConnectionId\":\n\016ConnectionList\022(\n\013connec" + "tions\030\001 \003(\0132\023.context.Connection\"^\n\017Conn" + "ectionEvent\022\035\n\005event\030\001 \001(\0132\016.context.Eve" + "nt\022,\n\rconnection_id\030\002 \001(\0132\025.context.Conn" + "ectionId\"\202\001\n\nEndPointId\022(\n\013topology_id\030\001" + " \001(\0132\023.context.TopologyId\022$\n\tdevice_id\030\002" + " \001(\0132\021.context.DeviceId\022$\n\rendpoint_uuid" + "\030\003 \001(\0132\r.context.Uuid\"\310\002\n\010EndPoint\022(\n\013en" + "dpoint_id\030\001 \001(\0132\023.context.EndPointId\022\014\n\004" + "name\030\002 \001(\t\022\025\n\rendpoint_type\030\003 \001(\t\0229\n\020kpi" + "_sample_types\030\004 \003(\0162\037.kpi_sample_types.K" + "piSampleType\022,\n\021endpoint_location\030\005 \001(\0132" + "\021.context.Location\0229\n\014capabilities\030\006 \003(\013" + "2#.context.EndPoint.CapabilitiesEntry\032I\n" + "\021CapabilitiesEntry\022\013\n\003key\030\001 \001(\t\022#\n\005value" + "\030\002 \001(\0132\024.google.protobuf.Any:\0028\001\"{\n\014EndP" + "ointName\022(\n\013endpoint_id\030\001 \001(\0132\023.context." + "EndPointId\022\023\n\013device_name\030\002 \001(\t\022\025\n\rendpo" + "int_name\030\003 \001(\t\022\025\n\rendpoint_type\030\004 \001(\t\";\n" + "\016EndPointIdList\022)\n\014endpoint_ids\030\001 \003(\0132\023." + "context.EndPointId\"A\n\020EndPointNameList\022-" + "\n\016endpoint_names\030\001 \003(\0132\025.context.EndPoin" + "tName\"A\n\021ConfigRule_Custom\022\024\n\014resource_k" + "ey\030\001 \001(\t\022\026\n\016resource_value\030\002 \001(\t\"]\n\016Conf" + "igRule_ACL\022(\n\013endpoint_id\030\001 \001(\0132\023.contex" + "t.EndPointId\022!\n\010rule_set\030\002 \001(\0132\017.acl.Acl" + "RuleSet\"\234\001\n\nConfigRule\022)\n\006action\030\001 \001(\0162\031" + ".context.ConfigActionEnum\022,\n\006custom\030\002 \001(" + "\0132\032.context.ConfigRule_CustomH\000\022&\n\003acl\030\003" + " \001(\0132\027.context.ConfigRule_ACLH\000B\r\n\013confi" + "g_rule\"F\n\021Constraint_Custom\022\027\n\017constrain" + "t_type\030\001 \001(\t\022\030\n\020constraint_value\030\002 \001(\t\"E" + "\n\023Constraint_Schedule\022\027\n\017start_timestamp" + "\030\001 \001(\001\022\025\n\rduration_days\030\002 \001(\002\"3\n\014GPS_Pos" + "ition\022\020\n\010latitude\030\001 \001(\002\022\021\n\tlongitude\030\002 \001" + "(\002\"\204\001\n\010Location\022\020\n\006region\030\001 \001(\tH\000\022-\n\014gps" + "_position\030\002 \001(\0132\025.context.GPS_PositionH\000" + "\022\023\n\tinterface\030\003 \001(\tH\000\022\026\n\014circuit_pack\030\004 " + "\001(\tH\000B\n\n\010location\"l\n\033Constraint_EndPoint" + "Location\022(\n\013endpoint_id\030\001 \001(\0132\023.context." + "EndPointId\022#\n\010location\030\002 \001(\0132\021.context.L" + "ocation\"Y\n\033Constraint_EndPointPriority\022(" + "\n\013endpoint_id\030\001 \001(\0132\023.context.EndPointId" + "\022\020\n\010priority\030\002 \001(\r\"0\n\026Constraint_SLA_Lat" + "ency\022\026\n\016e2e_latency_ms\030\001 \001(\002\"0\n\027Constrai" + "nt_SLA_Capacity\022\025\n\rcapacity_gbps\030\001 \001(\002\"c" + "\n\033Constraint_SLA_Availability\022\032\n\022num_dis" + "joint_paths\030\001 \001(\r\022\022\n\nall_active\030\002 \001(\010\022\024\n" + "\014availability\030\003 \001(\002\"V\n\036Constraint_SLA_Is" + "olation_level\0224\n\017isolation_level\030\001 \003(\0162\033" + ".context.IsolationLevelEnum\"\242\001\n\025Constrai" + "nt_Exclusions\022\024\n\014is_permanent\030\001 \001(\010\022%\n\nd" + "evice_ids\030\002 \003(\0132\021.context.DeviceId\022)\n\014en" + "dpoint_ids\030\003 \003(\0132\023.context.EndPointId\022!\n" + "\010link_ids\030\004 \003(\0132\017.context.LinkId\"5\n\014QoSP" + "rofileId\022%\n\016qos_profile_id\030\001 \001(\0132\r.conte" + "xt.Uuid\"`\n\025Constraint_QoSProfile\022-\n\016qos_" + "profile_id\030\001 \001(\0132\025.context.QoSProfileId\022" + "\030\n\020qos_profile_name\030\002 \001(\t\"\222\005\n\nConstraint" + "\022-\n\006action\030\001 \001(\0162\035.context.ConstraintAct" + "ionEnum\022,\n\006custom\030\002 \001(\0132\032.context.Constr" + "aint_CustomH\000\0220\n\010schedule\030\003 \001(\0132\034.contex" + "t.Constraint_ScheduleH\000\022A\n\021endpoint_loca" + "tion\030\004 \001(\0132$.context.Constraint_EndPoint" + "LocationH\000\022A\n\021endpoint_priority\030\005 \001(\0132$." + "context.Constraint_EndPointPriorityH\000\0228\n" + "\014sla_capacity\030\006 \001(\0132 .context.Constraint" + "_SLA_CapacityH\000\0226\n\013sla_latency\030\007 \001(\0132\037.c" + "ontext.Constraint_SLA_LatencyH\000\022@\n\020sla_a" + "vailability\030\010 \001(\0132$.context.Constraint_S" + "LA_AvailabilityH\000\022@\n\rsla_isolation\030\t \001(\013" + "2\'.context.Constraint_SLA_Isolation_leve" + "lH\000\0224\n\nexclusions\030\n \001(\0132\036.context.Constr" + "aint_ExclusionsH\000\0225\n\013qos_profile\030\013 \001(\0132\036" + ".context.Constraint_QoSProfileH\000B\014\n\ncons" + "traint\"^\n\022TeraFlowController\022&\n\ncontext_" + "id\030\001 \001(\0132\022.context.ContextId\022\022\n\nip_addre" + "ss\030\002 \001(\t\022\014\n\004port\030\003 \001(\r\"U\n\024Authentication" + "Result\022&\n\ncontext_id\030\001 \001(\0132\022.context.Con" + "textId\022\025\n\rauthenticated\030\002 \001(\010\"-\n\017Optical" + "ConfigId\022\032\n\022opticalconfig_uuid\030\001 \001(\t\"y\n\r" + "OpticalConfig\0222\n\020opticalconfig_id\030\001 \001(\0132" + "\030.context.OpticalConfigId\022\016\n\006config\030\002 \001(" + "\t\022$\n\tdevice_id\030\003 \001(\0132\021.context.DeviceId\"" + "C\n\021OpticalConfigList\022.\n\016opticalconfigs\030\001" + " \003(\0132\026.context.OpticalConfig\"g\n\022OpticalC" + "onfigEvent\022\035\n\005event\030\001 \001(\0132\016.context.Even" + "t\0222\n\020opticalconfig_id\030\002 \001(\0132\030.context.Op" + "ticalConfigId\"_\n\021OpticalEndPointId\022$\n\tde" + "vice_id\030\002 \001(\0132\021.context.DeviceId\022$\n\rendp" + "oint_uuid\030\003 \001(\0132\r.context.Uuid\">\n\017Optica" + "lLinkList\022+\n\roptical_links\030\001 \003(\0132\024.conte" + "xt.OpticalLink\"\304\003\n\022OpticalLinkDetails\022\016\n" + "\006length\030\001 \001(\002\022\020\n\010src_port\030\002 \001(\t\022\020\n\010dst_p" + "ort\030\003 \001(\t\022\027\n\017local_peer_port\030\004 \001(\t\022\030\n\020re" + "mote_peer_port\030\005 \001(\t\022\014\n\004used\030\006 \001(\010\0228\n\007c_" + "slots\030\007 \003(\0132\'.context.OpticalLinkDetails" + ".CSlotsEntry\0228\n\007l_slots\030\010 \003(\0132\'.context." + "OpticalLinkDetails.LSlotsEntry\0228\n\007s_slot" + "s\030\t \003(\0132\'.context.OpticalLinkDetails.SSl" + "otsEntry\032-\n\013CSlotsEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005" + "value\030\002 \001(\005:\0028\001\032-\n\013LSlotsEntry\022\013\n\003key\030\001 " + "\001(\t\022\r\n\005value\030\002 \001(\005:\0028\001\032-\n\013SSlotsEntry\022\013\n" + "\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\005:\0028\001\"\243\001\n\013Optica" + "lLink\022\014\n\004name\030\001 \001(\t\0224\n\017optical_details\030\002" + " \001(\0132\033.context.OpticalLinkDetails\022 \n\007lin" + "k_id\030\003 \001(\0132\017.context.LinkId\022.\n\021link_endp" + "oint_ids\030\004 \003(\0132\023.context.EndPointId\"r\n\021S" + "erviceConfigRule\022&\n\nservice_id\030\001 \001(\0132\022.c" + "ontext.ServiceId\0225\n\021configrule_custom\030\002 " + "\001(\0132\032.context.ConfigRule_Custom*j\n\rEvent" + "TypeEnum\022\027\n\023EVENTTYPE_UNDEFINED\020\000\022\024\n\020EVE" + "NTTYPE_CREATE\020\001\022\024\n\020EVENTTYPE_UPDATE\020\002\022\024\n" + "\020EVENTTYPE_REMOVE\020\003*\232\004\n\020DeviceDriverEnum" + "\022\032\n\026DEVICEDRIVER_UNDEFINED\020\000\022\033\n\027DEVICEDR" + "IVER_OPENCONFIG\020\001\022\036\n\032DEVICEDRIVER_TRANSP" + "ORT_API\020\002\022\023\n\017DEVICEDRIVER_P4\020\003\022&\n\"DEVICE" + "DRIVER_IETF_NETWORK_TOPOLOGY\020\004\022\033\n\027DEVICE" + "DRIVER_ONF_TR_532\020\005\022\023\n\017DEVICEDRIVER_XR\020\006" + "\022\033\n\027DEVICEDRIVER_IETF_L2VPN\020\007\022 \n\034DEVICED" + "RIVER_GNMI_OPENCONFIG\020\010\022\034\n\030DEVICEDRIVER_" + "OPTICAL_TFS\020\t\022\032\n\026DEVICEDRIVER_IETF_ACTN\020" + "\n\022\023\n\017DEVICEDRIVER_OC\020\013\022\024\n\020DEVICEDRIVER_Q" + "KD\020\014\022\033\n\027DEVICEDRIVER_IETF_L3VPN\020\r\022\033\n\027DEV" + "ICEDRIVER_IETF_SLICE\020\016\022\024\n\020DEVICEDRIVER_N" + "CE\020\017\022\031\n\025DEVICEDRIVER_SMARTNIC\020\020\022\031\n\025DEVIC" + "EDRIVER_MORPHEUS\020\021\022\024\n\020DEVICEDRIVER_RYU\020\022" + "*\217\001\n\033DeviceOperationalStatusEnum\022%\n!DEVI" + "CEOPERATIONALSTATUS_UNDEFINED\020\000\022$\n DEVIC" + "EOPERATIONALSTATUS_DISABLED\020\001\022#\n\037DEVICEO" + "PERATIONALSTATUS_ENABLED\020\002*\220\001\n\014LinkTypeE" + "num\022\024\n\020LINKTYPE_UNKNOWN\020\000\022\023\n\017LINKTYPE_CO" + "PPER\020\001\022\022\n\016LINKTYPE_FIBER\020\002\022\022\n\016LINKTYPE_R" + "ADIO\020\003\022\024\n\020LINKTYPE_VIRTUAL\020\004\022\027\n\023LINKTYPE" + "_MANAGEMENT\020\005*\245\002\n\017ServiceTypeEnum\022\027\n\023SER" + "VICETYPE_UNKNOWN\020\000\022\024\n\020SERVICETYPE_L3NM\020\001" + "\022\024\n\020SERVICETYPE_L2NM\020\002\022)\n%SERVICETYPE_TA" + "PI_CONNECTIVITY_SERVICE\020\003\022\022\n\016SERVICETYPE" + "_TE\020\004\022\023\n\017SERVICETYPE_E2E\020\005\022$\n SERVICETYP" + "E_OPTICAL_CONNECTIVITY\020\006\022\023\n\017SERVICETYPE_" + "QKD\020\007\022\024\n\020SERVICETYPE_L1NM\020\010\022\023\n\017SERVICETY" + "PE_INT\020\t\022\023\n\017SERVICETYPE_ACL\020\n*\304\001\n\021Servic" + "eStatusEnum\022\033\n\027SERVICESTATUS_UNDEFINED\020\000" + "\022\031\n\025SERVICESTATUS_PLANNED\020\001\022\030\n\024SERVICEST" + "ATUS_ACTIVE\020\002\022\032\n\026SERVICESTATUS_UPDATING\020" + "\003\022!\n\035SERVICESTATUS_PENDING_REMOVAL\020\004\022\036\n\032" + "SERVICESTATUS_SLA_VIOLATED\020\005*\251\001\n\017SliceSt" + "atusEnum\022\031\n\025SLICESTATUS_UNDEFINED\020\000\022\027\n\023S" + "LICESTATUS_PLANNED\020\001\022\024\n\020SLICESTATUS_INIT" + "\020\002\022\026\n\022SLICESTATUS_ACTIVE\020\003\022\026\n\022SLICESTATU" + "S_DEINIT\020\004\022\034\n\030SLICESTATUS_SLA_VIOLATED\020\005" + "*]\n\020ConfigActionEnum\022\032\n\026CONFIGACTION_UND" + "EFINED\020\000\022\024\n\020CONFIGACTION_SET\020\001\022\027\n\023CONFIG" + "ACTION_DELETE\020\002*m\n\024ConstraintActionEnum\022" + "\036\n\032CONSTRAINTACTION_UNDEFINED\020\000\022\030\n\024CONST" + "RAINTACTION_SET\020\001\022\033\n\027CONSTRAINTACTION_DE" + "LETE\020\002*\203\002\n\022IsolationLevelEnum\022\020\n\014NO_ISOL" + "ATION\020\000\022\026\n\022PHYSICAL_ISOLATION\020\001\022\025\n\021LOGIC" + "AL_ISOLATION\020\002\022\025\n\021PROCESS_ISOLATION\020\003\022\035\n" + "\031PHYSICAL_MEMORY_ISOLATION\020\004\022\036\n\032PHYSICAL" + "_NETWORK_ISOLATION\020\005\022\036\n\032VIRTUAL_RESOURCE" + "_ISOLATION\020\006\022\037\n\033NETWORK_FUNCTIONS_ISOLAT" + "ION\020\007\022\025\n\021SERVICE_ISOLATION\020\0102\202\034\n\016Context" + "Service\022:\n\016ListContextIds\022\016.context.Empt" + "y\032\026.context.ContextIdList\"\000\0226\n\014ListConte" + "xts\022\016.context.Empty\032\024.context.ContextLis" + "t\"\000\0224\n\nGetContext\022\022.context.ContextId\032\020." + "context.Context\"\000\0224\n\nSetContext\022\020.contex" + "t.Context\032\022.context.ContextId\"\000\0225\n\rRemov" + "eContext\022\022.context.ContextId\032\016.context.E" + "mpty\"\000\022=\n\020GetContextEvents\022\016.context.Emp" + "ty\032\025.context.ContextEvent\"\0000\001\022@\n\017ListTop" + "ologyIds\022\022.context.ContextId\032\027.context.T" + "opologyIdList\"\000\022=\n\016ListTopologies\022\022.cont" + "ext.ContextId\032\025.context.TopologyList\"\000\0227" + "\n\013GetTopology\022\023.context.TopologyId\032\021.con" + "text.Topology\"\000\022E\n\022GetTopologyDetails\022\023." + "context.TopologyId\032\030.context.TopologyDet" + "ails\"\000\0227\n\013SetTopology\022\021.context.Topology" + "\032\023.context.TopologyId\"\000\0227\n\016RemoveTopolog" + "y\022\023.context.TopologyId\032\016.context.Empty\"\000" + "\022?\n\021GetTopologyEvents\022\016.context.Empty\032\026." + "context.TopologyEvent\"\0000\001\0228\n\rListDeviceI" + "ds\022\016.context.Empty\032\025.context.DeviceIdLis" + "t\"\000\0224\n\013ListDevices\022\016.context.Empty\032\023.con" + "text.DeviceList\"\000\0221\n\tGetDevice\022\021.context" + ".DeviceId\032\017.context.Device\"\000\0221\n\tSetDevic" + "e\022\017.context.Device\032\021.context.DeviceId\"\000\022" + "3\n\014RemoveDevice\022\021.context.DeviceId\032\016.con" + "text.Empty\"\000\022;\n\017GetDeviceEvents\022\016.contex" + "t.Empty\032\024.context.DeviceEvent\"\0000\001\022<\n\014Sel" + "ectDevice\022\025.context.DeviceFilter\032\023.conte" + "xt.DeviceList\"\000\022I\n\021ListEndPointNames\022\027.c" + "ontext.EndPointIdList\032\031.context.EndPoint" + "NameList\"\000\0224\n\013ListLinkIds\022\016.context.Empt" + "y\032\023.context.LinkIdList\"\000\0220\n\tListLinks\022\016." + "context.Empty\032\021.context.LinkList\"\000\022+\n\007Ge" + "tLink\022\017.context.LinkId\032\r.context.Link\"\000\022" + "+\n\007SetLink\022\r.context.Link\032\017.context.Link" + "Id\"\000\022/\n\nRemoveLink\022\017.context.LinkId\032\016.co" + "ntext.Empty\"\000\0227\n\rGetLinkEvents\022\016.context" + ".Empty\032\022.context.LinkEvent\"\0000\001\022>\n\016ListSe" + "rviceIds\022\022.context.ContextId\032\026.context.S" + "erviceIdList\"\000\022:\n\014ListServices\022\022.context" + ".ContextId\032\024.context.ServiceList\"\000\0224\n\nGe" + "tService\022\022.context.ServiceId\032\020.context.S" + "ervice\"\000\0224\n\nSetService\022\020.context.Service" + "\032\022.context.ServiceId\"\000\0226\n\014UnsetService\022\020" + ".context.Service\032\022.context.ServiceId\"\000\0225" + "\n\rRemoveService\022\022.context.ServiceId\032\016.co" + "ntext.Empty\"\000\022=\n\020GetServiceEvents\022\016.cont" + "ext.Empty\032\025.context.ServiceEvent\"\0000\001\022?\n\r" + "SelectService\022\026.context.ServiceFilter\032\024." + "context.ServiceList\"\000\022:\n\014ListSliceIds\022\022." + "context.ContextId\032\024.context.SliceIdList\"" + "\000\0226\n\nListSlices\022\022.context.ContextId\032\022.co" + "ntext.SliceList\"\000\022.\n\010GetSlice\022\020.context." + "SliceId\032\016.context.Slice\"\000\022.\n\010SetSlice\022\016." + "context.Slice\032\020.context.SliceId\"\000\0220\n\nUns" + "etSlice\022\016.context.Slice\032\020.context.SliceI" + "d\"\000\0221\n\013RemoveSlice\022\020.context.SliceId\032\016.c" + "ontext.Empty\"\000\0229\n\016GetSliceEvents\022\016.conte" + "xt.Empty\032\023.context.SliceEvent\"\0000\001\0229\n\013Sel" + "ectSlice\022\024.context.SliceFilter\032\022.context" + ".SliceList\"\000\022D\n\021ListConnectionIds\022\022.cont" + "ext.ServiceId\032\031.context.ConnectionIdList" + "\"\000\022@\n\017ListConnections\022\022.context.ServiceI" + "d\032\027.context.ConnectionList\"\000\022=\n\rGetConne" + "ction\022\025.context.ConnectionId\032\023.context.C" + "onnection\"\000\022=\n\rSetConnection\022\023.context.C" + "onnection\032\025.context.ConnectionId\"\000\022;\n\020Re" + "moveConnection\022\025.context.ConnectionId\032\016." + "context.Empty\"\000\022C\n\023GetConnectionEvents\022\016" + ".context.Empty\032\030.context.ConnectionEvent" + "\"\0000\001\022@\n\020GetOpticalConfig\022\016.context.Empty" + "\032\032.context.OpticalConfigList\"\000\022F\n\020SetOpt" + "icalConfig\022\026.context.OpticalConfig\032\030.con" + "text.OpticalConfigId\"\000\022I\n\023UpdateOpticalC" + "onfig\022\026.context.OpticalConfig\032\030.context." + "OpticalConfigId\"\000\022I\n\023SelectOpticalConfig" + "\022\030.context.OpticalConfigId\032\026.context.Opt" + "icalConfig\"\000\022A\n\023DeleteOpticalConfig\022\030.co" + "ntext.OpticalConfigId\032\016.context.Empty\"\000\022" + "@\n\024DeleteOpticalChannel\022\026.context.Optica" + "lConfig\032\016.context.Empty\"\000\0228\n\016SetOpticalL" + "ink\022\024.context.OpticalLink\032\016.context.Empt" + "y\"\000\0229\n\016GetOpticalLink\022\017.context.LinkId\032\024" + ".context.OpticalLink\"\000\0226\n\021DeleteOpticalL" + "ink\022\017.context.LinkId\032\016.context.Empty\"\000\022@" + "\n\022GetOpticalLinkList\022\016.context.Empty\032\030.c" + "ontext.OpticalLinkList\"\000\022G\n\027DeleteServic" + "eConfigRule\022\032.context.ServiceConfigRule\032", "\016.context.Empty\"\000b\006proto3" }; - descriptor = com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom(descriptorData, new com.google.protobuf.Descriptors.FileDescriptor[] { com.google.protobuf.AnyProto.getDescriptor(), acl.Acl.getDescriptor(), kpi_sample_types.KpiSampleTypes.getDescriptor() }); + java.lang.String[] descriptorData = { "\n\rcontext.proto\022\007context\032\tacl.proto\032\026kpi" + "_sample_types.proto\"\007\n\005Empty\"\024\n\004Uuid\022\014\n\004" + "uuid\030\001 \001(\t\"\036\n\tTimestamp\022\021\n\ttimestamp\030\001 \001" + "(\001\"Z\n\005Event\022%\n\ttimestamp\030\001 \001(\0132\022.context" + ".Timestamp\022*\n\nevent_type\030\002 \001(\0162\026.context" + ".EventTypeEnum\"0\n\tContextId\022#\n\014context_u" + "uid\030\001 \001(\0132\r.context.Uuid\"\351\001\n\007Context\022&\n\n" + "context_id\030\001 \001(\0132\022.context.ContextId\022\014\n\004" + "name\030\002 \001(\t\022)\n\014topology_ids\030\003 \003(\0132\023.conte" + "xt.TopologyId\022\'\n\013service_ids\030\004 \003(\0132\022.con" + "text.ServiceId\022#\n\tslice_ids\030\005 \003(\0132\020.cont" + "ext.SliceId\022/\n\ncontroller\030\006 \001(\0132\033.contex" + "t.TeraFlowController\"8\n\rContextIdList\022\'\n" + "\013context_ids\030\001 \003(\0132\022.context.ContextId\"1" + "\n\013ContextList\022\"\n\010contexts\030\001 \003(\0132\020.contex" + "t.Context\"U\n\014ContextEvent\022\035\n\005event\030\001 \001(\013" + "2\016.context.Event\022&\n\ncontext_id\030\002 \001(\0132\022.c" + "ontext.ContextId\"Z\n\nTopologyId\022&\n\ncontex" + "t_id\030\001 \001(\0132\022.context.ContextId\022$\n\rtopolo" + "gy_uuid\030\002 \001(\0132\r.context.Uuid\"\214\001\n\010Topolog" + "y\022(\n\013topology_id\030\001 \001(\0132\023.context.Topolog" + "yId\022\014\n\004name\030\002 \001(\t\022%\n\ndevice_ids\030\003 \003(\0132\021." + "context.DeviceId\022!\n\010link_ids\030\004 \003(\0132\017.con" + "text.LinkId\"\211\001\n\017TopologyDetails\022(\n\013topol" + "ogy_id\030\001 \001(\0132\023.context.TopologyId\022\014\n\004nam" + "e\030\002 \001(\t\022 \n\007devices\030\003 \003(\0132\017.context.Devic" + "e\022\034\n\005links\030\004 \003(\0132\r.context.Link\";\n\016Topol" + "ogyIdList\022)\n\014topology_ids\030\001 \003(\0132\023.contex" + "t.TopologyId\"5\n\014TopologyList\022%\n\ntopologi" + "es\030\001 \003(\0132\021.context.Topology\"X\n\rTopologyE" + "vent\022\035\n\005event\030\001 \001(\0132\016.context.Event\022(\n\013t" + "opology_id\030\002 \001(\0132\023.context.TopologyId\".\n" + "\010DeviceId\022\"\n\013device_uuid\030\001 \001(\0132\r.context" + ".Uuid\"\372\002\n\006Device\022$\n\tdevice_id\030\001 \001(\0132\021.co" + "ntext.DeviceId\022\014\n\004name\030\002 \001(\t\022\023\n\013device_t" + "ype\030\003 \001(\t\022,\n\rdevice_config\030\004 \001(\0132\025.conte" + "xt.DeviceConfig\022G\n\031device_operational_st" + "atus\030\005 \001(\0162$.context.DeviceOperationalSt" + "atusEnum\0221\n\016device_drivers\030\006 \003(\0162\031.conte" + "xt.DeviceDriverEnum\022+\n\020device_endpoints\030" + "\007 \003(\0132\021.context.EndPoint\022&\n\ncomponents\030\010" + " \003(\0132\022.context.Component\022(\n\rcontroller_i" + "d\030\t \001(\0132\021.context.DeviceId\"\311\001\n\tComponent" + "\022%\n\016component_uuid\030\001 \001(\0132\r.context.Uuid\022" + "\014\n\004name\030\002 \001(\t\022\014\n\004type\030\003 \001(\t\0226\n\nattribute" + "s\030\004 \003(\0132\".context.Component.AttributesEn" + "try\022\016\n\006parent\030\005 \001(\t\0321\n\017AttributesEntry\022\013" + "\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"9\n\014Device" + "Config\022)\n\014config_rules\030\001 \003(\0132\023.context.C" + "onfigRule\"5\n\014DeviceIdList\022%\n\ndevice_ids\030" + "\001 \003(\0132\021.context.DeviceId\".\n\nDeviceList\022 " + "\n\007devices\030\001 \003(\0132\017.context.Device\"\216\001\n\014Dev" + "iceFilter\022)\n\ndevice_ids\030\001 \001(\0132\025.context." + "DeviceIdList\022\031\n\021include_endpoints\030\002 \001(\010\022" + "\034\n\024include_config_rules\030\003 \001(\010\022\032\n\022include" + "_components\030\004 \001(\010\"\200\001\n\013DeviceEvent\022\035\n\005eve" + "nt\030\001 \001(\0132\016.context.Event\022$\n\tdevice_id\030\002 " + "\001(\0132\021.context.DeviceId\022,\n\rdevice_config\030" + "\003 \001(\0132\025.context.DeviceConfig\"*\n\006LinkId\022 " + "\n\tlink_uuid\030\001 \001(\0132\r.context.Uuid\"\250\001\n\016Lin" + "kAttributes\022\033\n\023total_capacity_gbps\030\001 \001(\002" + "\022\032\n\022used_capacity_gbps\030\002 \001(\002\022\024\n\014availabl" + "e_bw\030\003 \001(\002\022\022\n\nlink_delay\030\005 \001(\002\022\032\n\022min_ma" + "x_link_delay\030\006 \001(\002\022\027\n\017delay_variation\030\007 " + "\001(\002\"\223\001\n\004Link\022 \n\007link_id\030\001 \001(\0132\017.context." + "LinkId\022\014\n\004name\030\002 \001(\t\022.\n\021link_endpoint_id" + "s\030\003 \003(\0132\023.context.EndPointId\022+\n\nattribut" + "es\030\004 \001(\0132\027.context.LinkAttributes\"/\n\nLin" + "kIdList\022!\n\010link_ids\030\001 \003(\0132\017.context.Link" + "Id\"(\n\010LinkList\022\034\n\005links\030\001 \003(\0132\r.context." + "Link\"L\n\tLinkEvent\022\035\n\005event\030\001 \001(\0132\016.conte" + "xt.Event\022 \n\007link_id\030\002 \001(\0132\017.context.Link" + "Id\"X\n\tServiceId\022&\n\ncontext_id\030\001 \001(\0132\022.co" + "ntext.ContextId\022#\n\014service_uuid\030\002 \001(\0132\r." + "context.Uuid\"\333\002\n\007Service\022&\n\nservice_id\030\001" + " \001(\0132\022.context.ServiceId\022\014\n\004name\030\002 \001(\t\022." + "\n\014service_type\030\003 \001(\0162\030.context.ServiceTy" + "peEnum\0221\n\024service_endpoint_ids\030\004 \003(\0132\023.c" + "ontext.EndPointId\0220\n\023service_constraints" + "\030\005 \003(\0132\023.context.Constraint\022.\n\016service_s" + "tatus\030\006 \001(\0132\026.context.ServiceStatus\022.\n\016s" + "ervice_config\030\007 \001(\0132\026.context.ServiceCon" + "fig\022%\n\ttimestamp\030\010 \001(\0132\022.context.Timesta" + "mp\"C\n\rServiceStatus\0222\n\016service_status\030\001 " + "\001(\0162\032.context.ServiceStatusEnum\":\n\rServi" + "ceConfig\022)\n\014config_rules\030\001 \003(\0132\023.context" + ".ConfigRule\"8\n\rServiceIdList\022\'\n\013service_" + "ids\030\001 \003(\0132\022.context.ServiceId\"1\n\013Service" + "List\022\"\n\010services\030\001 \003(\0132\020.context.Service" + "\"\225\001\n\rServiceFilter\022+\n\013service_ids\030\001 \001(\0132" + "\026.context.ServiceIdList\022\034\n\024include_endpo" + "int_ids\030\002 \001(\010\022\033\n\023include_constraints\030\003 \001" + "(\010\022\034\n\024include_config_rules\030\004 \001(\010\"U\n\014Serv" + "iceEvent\022\035\n\005event\030\001 \001(\0132\016.context.Event\022" + "&\n\nservice_id\030\002 \001(\0132\022.context.ServiceId\"" + "T\n\007SliceId\022&\n\ncontext_id\030\001 \001(\0132\022.context" + ".ContextId\022!\n\nslice_uuid\030\002 \001(\0132\r.context" + ".Uuid\"\240\003\n\005Slice\022\"\n\010slice_id\030\001 \001(\0132\020.cont" + "ext.SliceId\022\014\n\004name\030\002 \001(\t\022/\n\022slice_endpo" + "int_ids\030\003 \003(\0132\023.context.EndPointId\022.\n\021sl" + "ice_constraints\030\004 \003(\0132\023.context.Constrai" + "nt\022-\n\021slice_service_ids\030\005 \003(\0132\022.context." + "ServiceId\022,\n\022slice_subslice_ids\030\006 \003(\0132\020." + "context.SliceId\022*\n\014slice_status\030\007 \001(\0132\024." + "context.SliceStatus\022*\n\014slice_config\030\010 \001(" + "\0132\024.context.SliceConfig\022(\n\013slice_owner\030\t" + " \001(\0132\023.context.SliceOwner\022%\n\ttimestamp\030\n" + " \001(\0132\022.context.Timestamp\"E\n\nSliceOwner\022!" + "\n\nowner_uuid\030\001 \001(\0132\r.context.Uuid\022\024\n\014own" + "er_string\030\002 \001(\t\"=\n\013SliceStatus\022.\n\014slice_" + "status\030\001 \001(\0162\030.context.SliceStatusEnum\"8" + "\n\013SliceConfig\022)\n\014config_rules\030\001 \003(\0132\023.co" + "ntext.ConfigRule\"2\n\013SliceIdList\022#\n\tslice" + "_ids\030\001 \003(\0132\020.context.SliceId\"+\n\tSliceLis" + "t\022\036\n\006slices\030\001 \003(\0132\016.context.Slice\"\312\001\n\013Sl" + "iceFilter\022\'\n\tslice_ids\030\001 \001(\0132\024.context.S" + "liceIdList\022\034\n\024include_endpoint_ids\030\002 \001(\010" + "\022\033\n\023include_constraints\030\003 \001(\010\022\033\n\023include" + "_service_ids\030\004 \001(\010\022\034\n\024include_subslice_i" + "ds\030\005 \001(\010\022\034\n\024include_config_rules\030\006 \001(\010\"O" + "\n\nSliceEvent\022\035\n\005event\030\001 \001(\0132\016.context.Ev" + "ent\022\"\n\010slice_id\030\002 \001(\0132\020.context.SliceId\"" + "6\n\014ConnectionId\022&\n\017connection_uuid\030\001 \001(\013" + "2\r.context.Uuid\"2\n\025ConnectionSettings_L0" + "\022\031\n\021lsp_symbolic_name\030\001 \001(\t\"\236\001\n\025Connecti" + "onSettings_L2\022\027\n\017src_mac_address\030\001 \001(\t\022\027" + "\n\017dst_mac_address\030\002 \001(\t\022\022\n\nether_type\030\003 " + "\001(\r\022\017\n\007vlan_id\030\004 \001(\r\022\022\n\nmpls_label\030\005 \001(\r" + "\022\032\n\022mpls_traffic_class\030\006 \001(\r\"t\n\025Connecti" + "onSettings_L3\022\026\n\016src_ip_address\030\001 \001(\t\022\026\n" + "\016dst_ip_address\030\002 \001(\t\022\014\n\004dscp\030\003 \001(\r\022\020\n\010p" + "rotocol\030\004 \001(\r\022\013\n\003ttl\030\005 \001(\r\"[\n\025Connection" + "Settings_L4\022\020\n\010src_port\030\001 \001(\r\022\020\n\010dst_por" + "t\030\002 \001(\r\022\021\n\ttcp_flags\030\003 \001(\r\022\013\n\003ttl\030\004 \001(\r\"" + "\304\001\n\022ConnectionSettings\022*\n\002l0\030\001 \001(\0132\036.con" + "text.ConnectionSettings_L0\022*\n\002l2\030\002 \001(\0132\036" + ".context.ConnectionSettings_L2\022*\n\002l3\030\003 \001" + "(\0132\036.context.ConnectionSettings_L3\022*\n\002l4" + "\030\004 \001(\0132\036.context.ConnectionSettings_L4\"\363" + "\001\n\nConnection\022,\n\rconnection_id\030\001 \001(\0132\025.c" + "ontext.ConnectionId\022&\n\nservice_id\030\002 \001(\0132" + "\022.context.ServiceId\0223\n\026path_hops_endpoin" + "t_ids\030\003 \003(\0132\023.context.EndPointId\022+\n\017sub_" + "service_ids\030\004 \003(\0132\022.context.ServiceId\022-\n" + "\010settings\030\005 \001(\0132\033.context.ConnectionSett" + "ings\"A\n\020ConnectionIdList\022-\n\016connection_i" + "ds\030\001 \003(\0132\025.context.ConnectionId\":\n\016Conne" + "ctionList\022(\n\013connections\030\001 \003(\0132\023.context" + ".Connection\"^\n\017ConnectionEvent\022\035\n\005event\030" + "\001 \001(\0132\016.context.Event\022,\n\rconnection_id\030\002" + " \001(\0132\025.context.ConnectionId\"\202\001\n\nEndPoint" + "Id\022(\n\013topology_id\030\001 \001(\0132\023.context.Topolo" + "gyId\022$\n\tdevice_id\030\002 \001(\0132\021.context.Device" + "Id\022$\n\rendpoint_uuid\030\003 \001(\0132\r.context.Uuid" + "\"\302\001\n\010EndPoint\022(\n\013endpoint_id\030\001 \001(\0132\023.con" + "text.EndPointId\022\014\n\004name\030\002 \001(\t\022\025\n\rendpoin" + "t_type\030\003 \001(\t\0229\n\020kpi_sample_types\030\004 \003(\0162\037" + ".kpi_sample_types.KpiSampleType\022,\n\021endpo" + "int_location\030\005 \001(\0132\021.context.Location\"{\n" + "\014EndPointName\022(\n\013endpoint_id\030\001 \001(\0132\023.con" + "text.EndPointId\022\023\n\013device_name\030\002 \001(\t\022\025\n\r" + "endpoint_name\030\003 \001(\t\022\025\n\rendpoint_type\030\004 \001" + "(\t\";\n\016EndPointIdList\022)\n\014endpoint_ids\030\001 \003" + "(\0132\023.context.EndPointId\"A\n\020EndPointNameL" + "ist\022-\n\016endpoint_names\030\001 \003(\0132\025.context.En" + "dPointName\"A\n\021ConfigRule_Custom\022\024\n\014resou" + "rce_key\030\001 \001(\t\022\026\n\016resource_value\030\002 \001(\t\"]\n" + "\016ConfigRule_ACL\022(\n\013endpoint_id\030\001 \001(\0132\023.c" + "ontext.EndPointId\022!\n\010rule_set\030\002 \001(\0132\017.ac" + "l.AclRuleSet\"\234\001\n\nConfigRule\022)\n\006action\030\001 " + "\001(\0162\031.context.ConfigActionEnum\022,\n\006custom" + "\030\002 \001(\0132\032.context.ConfigRule_CustomH\000\022&\n\003" + "acl\030\003 \001(\0132\027.context.ConfigRule_ACLH\000B\r\n\013" + "config_rule\"F\n\021Constraint_Custom\022\027\n\017cons" + "traint_type\030\001 \001(\t\022\030\n\020constraint_value\030\002 " + "\001(\t\"E\n\023Constraint_Schedule\022\027\n\017start_time" + "stamp\030\001 \001(\002\022\025\n\rduration_days\030\002 \001(\002\"3\n\014GP" + "S_Position\022\020\n\010latitude\030\001 \001(\002\022\021\n\tlongitud" + "e\030\002 \001(\002\"W\n\010Location\022\020\n\006region\030\001 \001(\tH\000\022-\n" + "\014gps_position\030\002 \001(\0132\025.context.GPS_Positi" + "onH\000B\n\n\010location\"l\n\033Constraint_EndPointL" + "ocation\022(\n\013endpoint_id\030\001 \001(\0132\023.context.E" + "ndPointId\022#\n\010location\030\002 \001(\0132\021.context.Lo" + "cation\"Y\n\033Constraint_EndPointPriority\022(\n" + "\013endpoint_id\030\001 \001(\0132\023.context.EndPointId\022" + "\020\n\010priority\030\002 \001(\r\"0\n\026Constraint_SLA_Late" + "ncy\022\026\n\016e2e_latency_ms\030\001 \001(\002\"0\n\027Constrain" + "t_SLA_Capacity\022\025\n\rcapacity_gbps\030\001 \001(\002\"c\n" + "\033Constraint_SLA_Availability\022\032\n\022num_disj" + "oint_paths\030\001 \001(\r\022\022\n\nall_active\030\002 \001(\010\022\024\n\014" + "availability\030\003 \001(\002\"V\n\036Constraint_SLA_Iso" + "lation_level\0224\n\017isolation_level\030\001 \003(\0162\033." + "context.IsolationLevelEnum\"\242\001\n\025Constrain" + "t_Exclusions\022\024\n\014is_permanent\030\001 \001(\010\022%\n\nde" + "vice_ids\030\002 \003(\0132\021.context.DeviceId\022)\n\014end" + "point_ids\030\003 \003(\0132\023.context.EndPointId\022!\n\010" + "link_ids\030\004 \003(\0132\017.context.LinkId\"\333\004\n\nCons" + "traint\022-\n\006action\030\001 \001(\0162\035.context.Constra" + "intActionEnum\022,\n\006custom\030\002 \001(\0132\032.context." + "Constraint_CustomH\000\0220\n\010schedule\030\003 \001(\0132\034." + "context.Constraint_ScheduleH\000\022A\n\021endpoin" + "t_location\030\004 \001(\0132$.context.Constraint_En" + "dPointLocationH\000\022A\n\021endpoint_priority\030\005 " + "\001(\0132$.context.Constraint_EndPointPriorit" + "yH\000\0228\n\014sla_capacity\030\006 \001(\0132 .context.Cons" + "traint_SLA_CapacityH\000\0226\n\013sla_latency\030\007 \001" + "(\0132\037.context.Constraint_SLA_LatencyH\000\022@\n" + "\020sla_availability\030\010 \001(\0132$.context.Constr" + "aint_SLA_AvailabilityH\000\022@\n\rsla_isolation" + "\030\t \001(\0132\'.context.Constraint_SLA_Isolatio" + "n_levelH\000\0224\n\nexclusions\030\n \001(\0132\036.context." + "Constraint_ExclusionsH\000B\014\n\nconstraint\"^\n" + "\022TeraFlowController\022&\n\ncontext_id\030\001 \001(\0132" + "\022.context.ContextId\022\022\n\nip_address\030\002 \001(\t\022" + "\014\n\004port\030\003 \001(\r\"U\n\024AuthenticationResult\022&\n" + "\ncontext_id\030\001 \001(\0132\022.context.ContextId\022\025\n" + "\rauthenticated\030\002 \001(\010\"-\n\017OpticalConfigId\022" + "\032\n\022opticalconfig_uuid\030\001 \001(\t\"S\n\rOpticalCo" + "nfig\0222\n\020opticalconfig_id\030\001 \001(\0132\030.context" + ".OpticalConfigId\022\016\n\006config\030\002 \001(\t\"C\n\021Opti" + "calConfigList\022.\n\016opticalconfigs\030\001 \003(\0132\026." + "context.OpticalConfig\"9\n\rOpticalLinkId\022(" + "\n\021optical_link_uuid\030\001 \001(\0132\r.context.Uuid" + "\",\n\007FiberId\022!\n\nfiber_uuid\030\001 \001(\0132\r.contex" + "t.Uuid\"\341\001\n\005Fiber\022\n\n\002ID\030\n \001(\t\022\020\n\010src_port" + "\030\001 \001(\t\022\020\n\010dst_port\030\002 \001(\t\022\027\n\017local_peer_p" + "ort\030\003 \001(\t\022\030\n\020remote_peer_port\030\004 \001(\t\022\017\n\007c" + "_slots\030\005 \003(\005\022\017\n\007l_slots\030\006 \003(\005\022\017\n\007s_slots" + "\030\007 \003(\005\022\016\n\006length\030\010 \001(\002\022\014\n\004used\030\t \001(\010\022$\n\n" + "fiber_uuid\030\013 \001(\0132\020.context.FiberId\"d\n\022Op" + "ticalLinkDetails\022\016\n\006length\030\001 \001(\002\022\016\n\006sour" + "ce\030\002 \001(\t\022\016\n\006target\030\003 \001(\t\022\036\n\006fibers\030\004 \003(\013" + "2\016.context.Fiber\"|\n\013OpticalLink\022\014\n\004name\030" + "\001 \001(\t\022,\n\007details\030\002 \001(\0132\033.context.Optical" + "LinkDetails\0221\n\021optical_link_uuid\030\003 \001(\0132\026" + ".context.OpticalLinkId*j\n\rEventTypeEnum\022" + "\027\n\023EVENTTYPE_UNDEFINED\020\000\022\024\n\020EVENTTYPE_CR" + "EATE\020\001\022\024\n\020EVENTTYPE_UPDATE\020\002\022\024\n\020EVENTTYP" + "E_REMOVE\020\003*\376\002\n\020DeviceDriverEnum\022\032\n\026DEVIC" + "EDRIVER_UNDEFINED\020\000\022\033\n\027DEVICEDRIVER_OPEN" + "CONFIG\020\001\022\036\n\032DEVICEDRIVER_TRANSPORT_API\020\002" + "\022\023\n\017DEVICEDRIVER_P4\020\003\022&\n\"DEVICEDRIVER_IE" + "TF_NETWORK_TOPOLOGY\020\004\022\033\n\027DEVICEDRIVER_ON" + "F_TR_532\020\005\022\023\n\017DEVICEDRIVER_XR\020\006\022\033\n\027DEVIC" + "EDRIVER_IETF_L2VPN\020\007\022 \n\034DEVICEDRIVER_GNM" + "I_OPENCONFIG\020\010\022\034\n\030DEVICEDRIVER_OPTICAL_T" + "FS\020\t\022\032\n\026DEVICEDRIVER_IETF_ACTN\020\n\022\023\n\017DEVI" + "CEDRIVER_OC\020\013\022\024\n\020DEVICEDRIVER_QKD\020\014*\217\001\n\033" + "DeviceOperationalStatusEnum\022%\n!DEVICEOPE" + "RATIONALSTATUS_UNDEFINED\020\000\022$\n DEVICEOPER" + "ATIONALSTATUS_DISABLED\020\001\022#\n\037DEVICEOPERAT" + "IONALSTATUS_ENABLED\020\002*\345\001\n\017ServiceTypeEnu" + "m\022\027\n\023SERVICETYPE_UNKNOWN\020\000\022\024\n\020SERVICETYP" + "E_L3NM\020\001\022\024\n\020SERVICETYPE_L2NM\020\002\022)\n%SERVIC" + "ETYPE_TAPI_CONNECTIVITY_SERVICE\020\003\022\022\n\016SER" + "VICETYPE_TE\020\004\022\023\n\017SERVICETYPE_E2E\020\005\022$\n SE" + "RVICETYPE_OPTICAL_CONNECTIVITY\020\006\022\023\n\017SERV" + "ICETYPE_QKD\020\007*\304\001\n\021ServiceStatusEnum\022\033\n\027S" + "ERVICESTATUS_UNDEFINED\020\000\022\031\n\025SERVICESTATU" + "S_PLANNED\020\001\022\030\n\024SERVICESTATUS_ACTIVE\020\002\022\032\n" + "\026SERVICESTATUS_UPDATING\020\003\022!\n\035SERVICESTAT" + "US_PENDING_REMOVAL\020\004\022\036\n\032SERVICESTATUS_SL" + "A_VIOLATED\020\005*\251\001\n\017SliceStatusEnum\022\031\n\025SLIC" + "ESTATUS_UNDEFINED\020\000\022\027\n\023SLICESTATUS_PLANN" + "ED\020\001\022\024\n\020SLICESTATUS_INIT\020\002\022\026\n\022SLICESTATU" + "S_ACTIVE\020\003\022\026\n\022SLICESTATUS_DEINIT\020\004\022\034\n\030SL" + "ICESTATUS_SLA_VIOLATED\020\005*]\n\020ConfigAction" + "Enum\022\032\n\026CONFIGACTION_UNDEFINED\020\000\022\024\n\020CONF" + "IGACTION_SET\020\001\022\027\n\023CONFIGACTION_DELETE\020\002*" + "m\n\024ConstraintActionEnum\022\036\n\032CONSTRAINTACT" + "ION_UNDEFINED\020\000\022\030\n\024CONSTRAINTACTION_SET\020" + "\001\022\033\n\027CONSTRAINTACTION_DELETE\020\002*\203\002\n\022Isola" + "tionLevelEnum\022\020\n\014NO_ISOLATION\020\000\022\026\n\022PHYSI" + "CAL_ISOLATION\020\001\022\025\n\021LOGICAL_ISOLATION\020\002\022\025" + "\n\021PROCESS_ISOLATION\020\003\022\035\n\031PHYSICAL_MEMORY" + "_ISOLATION\020\004\022\036\n\032PHYSICAL_NETWORK_ISOLATI" + "ON\020\005\022\036\n\032VIRTUAL_RESOURCE_ISOLATION\020\006\022\037\n\033" + "NETWORK_FUNCTIONS_ISOLATION\020\007\022\025\n\021SERVICE" + "_ISOLATION\020\0102\246\031\n\016ContextService\022:\n\016ListC" + "ontextIds\022\016.context.Empty\032\026.context.Cont" + "extIdList\"\000\0226\n\014ListContexts\022\016.context.Em" + "pty\032\024.context.ContextList\"\000\0224\n\nGetContex" + "t\022\022.context.ContextId\032\020.context.Context\"" + "\000\0224\n\nSetContext\022\020.context.Context\032\022.cont" + "ext.ContextId\"\000\0225\n\rRemoveContext\022\022.conte" + "xt.ContextId\032\016.context.Empty\"\000\022=\n\020GetCon" + "textEvents\022\016.context.Empty\032\025.context.Con" + "textEvent\"\0000\001\022@\n\017ListTopologyIds\022\022.conte" + "xt.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\022" + "E\n\022GetTopologyDetails\022\023.context.Topology" + "Id\032\030.context.TopologyDetails\"\000\0227\n\013SetTop" + "ology\022\021.context.Topology\032\023.context.Topol" + "ogyId\"\000\0227\n\016RemoveTopology\022\023.context.Topo" + "logyId\032\016.context.Empty\"\000\022?\n\021GetTopologyE" + "vents\022\016.context.Empty\032\026.context.Topology" + "Event\"\0000\001\0228\n\rListDeviceIds\022\016.context.Emp" + "ty\032\025.context.DeviceIdList\"\000\0224\n\013ListDevic" + "es\022\016.context.Empty\032\023.context.DeviceList\"" + "\000\0221\n\tGetDevice\022\021.context.DeviceId\032\017.cont" + "ext.Device\"\000\0221\n\tSetDevice\022\017.context.Devi" + "ce\032\021.context.DeviceId\"\000\0223\n\014RemoveDevice\022" + "\021.context.DeviceId\032\016.context.Empty\"\000\022;\n\017" + "GetDeviceEvents\022\016.context.Empty\032\024.contex" + "t.DeviceEvent\"\0000\001\022<\n\014SelectDevice\022\025.cont" + "ext.DeviceFilter\032\023.context.DeviceList\"\000\022" + "I\n\021ListEndPointNames\022\027.context.EndPointI" + "dList\032\031.context.EndPointNameList\"\000\0224\n\013Li" + "stLinkIds\022\016.context.Empty\032\023.context.Link" + "IdList\"\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.con" + "text.Link\032\017.context.LinkId\"\000\022/\n\nRemoveLi" + "nk\022\017.context.LinkId\032\016.context.Empty\"\000\0227\n" + "\rGetLinkEvents\022\016.context.Empty\032\022.context" + ".LinkEvent\"\0000\001\022>\n\016ListServiceIds\022\022.conte" + "xt.ContextId\032\026.context.ServiceIdList\"\000\022:" + "\n\014ListServices\022\022.context.ContextId\032\024.con" + "text.ServiceList\"\000\0224\n\nGetService\022\022.conte" + "xt.ServiceId\032\020.context.Service\"\000\0224\n\nSetS" + "ervice\022\020.context.Service\032\022.context.Servi" + "ceId\"\000\0226\n\014UnsetService\022\020.context.Service" + "\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.cont" + "ext.ServiceEvent\"\0000\001\022?\n\rSelectService\022\026." + "context.ServiceFilter\032\024.context.ServiceL" + "ist\"\000\022:\n\014ListSliceIds\022\022.context.ContextI" + "d\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.contex" + "t.Slice\"\000\022.\n\010SetSlice\022\016.context.Slice\032\020." + "context.SliceId\"\000\0220\n\nUnsetSlice\022\016.contex" + "t.Slice\032\020.context.SliceId\"\000\0221\n\013RemoveSli" + "ce\022\020.context.SliceId\032\016.context.Empty\"\000\0229" + "\n\016GetSliceEvents\022\016.context.Empty\032\023.conte" + "xt.SliceEvent\"\0000\001\0229\n\013SelectSlice\022\024.conte" + "xt.SliceFilter\032\022.context.SliceList\"\000\022D\n\021" + "ListConnectionIds\022\022.context.ServiceId\032\031." + "context.ConnectionIdList\"\000\022@\n\017ListConnec" + "tions\022\022.context.ServiceId\032\027.context.Conn" + "ectionList\"\000\022=\n\rGetConnection\022\025.context." + "ConnectionId\032\023.context.Connection\"\000\022=\n\rS" + "etConnection\022\023.context.Connection\032\025.cont" + "ext.ConnectionId\"\000\022;\n\020RemoveConnection\022\025" + ".context.ConnectionId\032\016.context.Empty\"\000\022" + "C\n\023GetConnectionEvents\022\016.context.Empty\032\030" + ".context.ConnectionEvent\"\0000\001\022@\n\020GetOptic" + "alConfig\022\016.context.Empty\032\032.context.Optic" + "alConfigList\"\000\022F\n\020SetOpticalConfig\022\026.con" + "text.OpticalConfig\032\030.context.OpticalConf" + "igId\"\000\022I\n\023SelectOpticalConfig\022\030.context." + "OpticalConfigId\032\026.context.OpticalConfig\"" + "\000\0228\n\016SetOpticalLink\022\024.context.OpticalLin" + "k\032\016.context.Empty\"\000\022@\n\016GetOpticalLink\022\026." + "context.OpticalLinkId\032\024.context.OpticalL" + "ink\"\000\022.\n\010GetFiber\022\020.context.FiberId\032\016.co" + "ntext.Fiber\"\000b\006proto3" }; + descriptor = com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom(descriptorData, new com.google.protobuf.Descriptors.FileDescriptor[] { acl.Acl.getDescriptor(), kpi_sample_types.KpiSampleTypes.getDescriptor() }); internal_static_context_Empty_descriptor = getDescriptor().getMessageTypes().get(0); internal_static_context_Empty_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Empty_descriptor, new java.lang.String[] {}); internal_static_context_Uuid_descriptor = getDescriptor().getMessageTypes().get(1); @@ -81259,7 +81567,7 @@ public final class ContextOuterClass { internal_static_context_LinkId_descriptor = getDescriptor().getMessageTypes().get(23); internal_static_context_LinkId_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_LinkId_descriptor, new java.lang.String[] { "LinkUuid" }); internal_static_context_LinkAttributes_descriptor = getDescriptor().getMessageTypes().get(24); - internal_static_context_LinkAttributes_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_LinkAttributes_descriptor, new java.lang.String[] { "TotalCapacityGbps", "UsedCapacityGbps" }); + internal_static_context_LinkAttributes_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_LinkAttributes_descriptor, new java.lang.String[] { "TotalCapacityGbps", "UsedCapacityGbps", "AvailableBw", "LinkDelay", "MinMaxLinkDelay", "DelayVariation" }); internal_static_context_Link_descriptor = getDescriptor().getMessageTypes().get(25); internal_static_context_Link_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Link_descriptor, new java.lang.String[] { "LinkId", "Name", "LinkType", "LinkEndpointIds", "Attributes" }); internal_static_context_LinkIdList_descriptor = getDescriptor().getMessageTypes().get(26);