View status of individual PON ports

Change-Id: I051799fe46828b8eda6db49c9765eb0a697a74be
diff --git a/VERSION b/VERSION
index 38f77a6..8041668 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-2.0.1
+2.0.1-dev0
diff --git a/core/grpc_service.go b/core/grpc_service.go
index e18dfa5..38f9539 100644
--- a/core/grpc_service.go
+++ b/core/grpc_service.go
@@ -318,6 +318,20 @@
 	return new(openolt.Empty), nil
 }
 
+func (s *Server) GetPonIf(c context.Context, intf *openolt.Interface) (*openolt.IntfIndication, error){
+	logger.Debug("OLT %d receives GetPonIf().", s.Olt.ID)
+	stat := new(openolt.IntfIndication)
+
+	if intf.IntfId > (s.Olt.NumPonIntf-1){
+		logger.Error("PON ID %d out of bounds. %d ports total", intf.IntfId, s.Olt.NumPonIntf)
+		return stat, status.Errorf(codes.OutOfRange, "PON ID %d out of bounds. %d ports total (indexing starts at 0)", intf.IntfId, s.Olt.NumPonIntf)
+	} else{
+		stat.IntfId = intf.IntfId
+		stat.OperState = "up"
+		return stat, nil
+	}
+}
+
 func (s *Server) DisablePonIf(c context.Context, intf *openolt.Interface) (*openolt.Empty, error) {
 	logger.Debug("OLT %d receives DisablePonIf().", s.Olt.ID)
 	return new(openolt.Empty), nil
diff --git a/openolt.proto b/openolt.proto
index ddc8f74..12f1db0 100644
--- a/openolt.proto
+++ b/openolt.proto
@@ -102,6 +102,13 @@
         };
     }
 
+    rpc GetPonIf(Interface) returns (IntfIndication) {
+        option (google.api.http) = {
+            post: "/v1/GetPonIf"
+            body: "*"
+        };
+    }
+
     rpc DisablePonIf(Interface) returns (Empty) {
         option (google.api.http) = {
             post: "/v1/DisablePonIf"