Created RegionService and added unit tests.
Change-Id: If3735d160ead9269b8bb327a99d6dad85e5c57d0
diff --git a/incubator/protobuf/services/nb/src/main/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbDeviceService.java b/incubator/protobuf/services/nb/src/main/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbDeviceService.java
index 0ba9e48..4ca0e03 100644
--- a/incubator/protobuf/services/nb/src/main/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbDeviceService.java
+++ b/incubator/protobuf/services/nb/src/main/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbDeviceService.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.onosproject.grpc.nb.net.device;
+package org.onosproject.incubator.protobuf.services.nb;
import com.google.common.annotations.Beta;
@@ -84,7 +84,7 @@
@Override
public void getDeviceCount(
getDeviceCountRequest request,
- StreamObserver<DeviceServiceNb.getDeviceCountReply> responseObserver) {
+ StreamObserver<getDeviceCountReply> responseObserver) {
responseObserver
.onNext(getDeviceCountReply
.newBuilder()
@@ -97,7 +97,7 @@
//FIXME NOTE: this will be switched to a streaming version.
@Override
public void getDevices(getDevicesRequest request,
- StreamObserver<DeviceServiceNb.getDevicesReply> responseObserver) {
+ StreamObserver<getDevicesReply> responseObserver) {
getDevicesReply.Builder replyBuilder = getDevicesReply.newBuilder();
deviceService.getDevices().forEach(d -> {
replyBuilder.addDevice(
@@ -122,7 +122,7 @@
@Override
public void getAvailableDevices(getAvailableDevicesRequest request,
StreamObserver
- <DeviceServiceNb.getAvailableDevicesReply> responseObserver) {
+ <getAvailableDevicesReply> responseObserver) {
getAvailableDevicesReply.Builder replyBuilder = getAvailableDevicesReply.newBuilder();
deviceService.getAvailableDevices().forEach(d -> {
replyBuilder.addDevice(
@@ -144,7 +144,7 @@
@Override
public void getDevice(getDeviceRequest request,
- io.grpc.stub.StreamObserver<DeviceServiceNb.getDeviceReply> responseObserver) {
+ io.grpc.stub.StreamObserver<getDeviceReply> responseObserver) {
org.onosproject.net.Device device = deviceService.getDevice(
DeviceId.deviceId(request.getDeviceId()));
responseObserver.onNext(
@@ -166,7 +166,7 @@
@Override
public void getRole(getRoleRequest request,
- StreamObserver<DeviceServiceNb.getRoleReply> responseObserver) {
+ StreamObserver<getRoleReply> responseObserver) {
DeviceId deviceId = DeviceId.deviceId(request.getDeviceId());
MastershipRole role = deviceService.getRole(deviceId);
DeviceEnumsProto.MastershipRoleProto mastershipRole =
diff --git a/incubator/protobuf/services/nb/src/main/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbRegionService.java b/incubator/protobuf/services/nb/src/main/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbRegionService.java
new file mode 100644
index 0000000..744941f
--- /dev/null
+++ b/incubator/protobuf/services/nb/src/main/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbRegionService.java
@@ -0,0 +1,169 @@
+/*
+* Copyright 2017-present Open Networking Foundation
+*
+* 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 org.onosproject.incubator.protobuf.services.nb;
+import org.onosproject.incubator.protobuf.models.net.RegionProtoTranslator;
+
+import com.google.common.annotations.Beta;
+import io.grpc.Server;
+import io.grpc.ServerBuilder;
+import io.grpc.stub.StreamObserver;
+import org.apache.felix.scr.annotations.Activate;
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Deactivate;
+import org.apache.felix.scr.annotations.Reference;
+import org.apache.felix.scr.annotations.ReferenceCardinality;
+import org.onosproject.grpc.nb.net.region.RegionServiceGrpc.RegionServiceImplBase;
+import org.onosproject.net.DeviceId;
+import org.onosproject.net.region.RegionId;
+import org.onosproject.net.region.Region;
+import org.onosproject.net.region.RegionService;
+
+
+import java.io.IOException;
+
+import org.onosproject.grpc.nb.net.region.RegionServiceNb.getRegionsRequest;
+import org.onosproject.grpc.nb.net.region.RegionServiceNb.getRegionsReply;
+
+import org.onosproject.grpc.nb.net.region.RegionServiceNb.getRegionRequest;
+import org.onosproject.grpc.nb.net.region.RegionServiceNb.getRegionReply;
+
+import org.onosproject.grpc.nb.net.region.RegionServiceNb.getRegionForDeviceRequest;
+import org.onosproject.grpc.nb.net.region.RegionServiceNb.getRegionForDeviceReply;
+
+import org.onosproject.grpc.nb.net.region.RegionServiceNb.getRegionDevicesRequest;
+import org.onosproject.grpc.nb.net.region.RegionServiceNb.getRegionDevicesReply;
+
+import org.onosproject.grpc.nb.net.region.RegionServiceNb.getRegionHostsRequest;
+import org.onosproject.grpc.nb.net.region.RegionServiceNb.getRegionHostsReply;
+import org.slf4j.Logger;
+
+import static org.slf4j.LoggerFactory.getLogger;
+
+/**
+ * A server that provides access to the methods exposed by {@link RegionService}.
+ */
+@Beta
+@Component(immediate = true)
+public class GrpcNbRegionService {
+
+ private Server server;
+ private final Logger log = getLogger(getClass());
+ private RegionServiceNBServerInternal innerClassInstance = null;
+
+ @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+ protected RegionService regionService;
+
+ @Activate
+ public void activate() {
+ server = ServerBuilder.forPort(64000).addService(new RegionServiceNBServerInternal()).build();
+ try {
+ server.start();
+ } catch (IOException e) {
+ log.error("Failed to start server", e);
+ throw new RuntimeException("Failed to start server", e);
+ }
+ }
+
+ @Deactivate
+ public void deactivate() {
+ server.shutdown();
+ }
+
+ public class RegionServiceNBServerInternal extends RegionServiceImplBase {
+ /**
+ * Service for interacting with inventory of network control regions.
+ */
+ @Override
+ public void getRegions(getRegionsRequest request,
+ StreamObserver<getRegionsReply> responseObserver) {
+ getRegionsReply.Builder builder = getRegionsReply.newBuilder();
+ regionService.getRegions().forEach(r -> {
+ builder.addRegion(RegionProtoTranslator.translate(r));
+ });
+ responseObserver.onNext(builder.build());
+ responseObserver.onCompleted();
+ }
+
+ @Override
+ public void getRegion(getRegionRequest request,
+ StreamObserver<getRegionReply> responseObserver) {
+ RegionId regionId = RegionId.regionId(request.getRegionId());
+ Region region = regionService.getRegion(regionId);
+
+ getRegionReply reply = getRegionReply.newBuilder()
+ .setRegion(RegionProtoTranslator.translate(region)).build();
+
+ responseObserver.onNext(reply);
+ responseObserver.onCompleted();
+ }
+
+ @Override
+ public void getRegionForDevice(getRegionForDeviceRequest request,
+ StreamObserver<getRegionForDeviceReply> responseObserver) {
+ DeviceId deviceId = DeviceId.deviceId(request.getDeviceId());
+ Region region = regionService.getRegionForDevice(deviceId);
+
+ getRegionForDeviceReply reply = getRegionForDeviceReply.newBuilder()
+ .setRegion(RegionProtoTranslator.translate(region)).build();
+
+ responseObserver.onNext(reply);
+ responseObserver.onCompleted();
+ }
+
+ @Override
+ public void getRegionDevices(getRegionDevicesRequest request,
+ StreamObserver<getRegionDevicesReply> responseObserver) {
+ RegionId regionId = RegionId.regionId(request.getRegionId());
+ getRegionDevicesReply.Builder builder = getRegionDevicesReply.newBuilder();
+
+ regionService.getRegionDevices(regionId).forEach(d -> {
+ builder.addDeviceId(d.toString());
+ });
+
+ responseObserver.onNext(builder.build());
+ responseObserver.onCompleted();
+ }
+
+ @Override
+ public void getRegionHosts(getRegionHostsRequest request,
+ StreamObserver<getRegionHostsReply> responseObserver) {
+ RegionId regionId = RegionId.regionId(request.getRegionId());
+ getRegionHostsReply.Builder builder = getRegionHostsReply.newBuilder();
+
+ regionService.getRegionHosts(regionId).forEach(h -> {
+ builder.addHostId(h.toString());
+ });
+
+ responseObserver.onNext(builder.build());
+ responseObserver.onCompleted();
+ }
+ }
+
+ public RegionServiceNBServerInternal getInnerClassInstance() {
+ if (innerClassInstance == null) {
+ innerClassInstance = new RegionServiceNBServerInternal();
+ }
+ return innerClassInstance;
+ }
+}
+
+
+
+
+
+
+