VOL-172: Support configuration of  traffic descriptor profile for upstream BW allocation to ONU

 * As an operator, I should be able to configure traffic descriptor profiles for upstream BW configuration.
 * As an operator, I should be able to retrieve the configured traffic descriptor profiles.

Additional Notes:
 * xPON Handler and xPON Agent should be able to handle the traffic descriptor configuration.
 * This story does not have impact on adapters until the traffic descriptor is referenced by a TCONT
 * The traffic descriptor profiles should be saved to the database(in memory until config/restore feature is ready).
 * The impact to HA-proxy for load-balancing & distributing of workload is still TBD. As of now, it can be assumed that profiles are available to all VOLTHA instances.

VOL-173: Support configuration of TCONTs as per WT-385 and auto-allocation of alloc-ids

 * As an operator, I should be able to provision a TCONT for the ONU with an existing traffic descriptor profile
 * As an operator, I should be able to retrieve the provisioned TCONT
 * As an operator, I should be able to change the traffic descriptor profile for a TCONT

Additional Notes:

 * alloc-ids should be allocated for the TCONT
 * generic IAdapter interface to be provided that will be used by OLT and ONU adapters for TCONT/alloc-id/BW configuration
 * In the best interest of schedules/timing, in the first step(e.g. POC-3 & trial), assume the queueing model to be supported (to be detailed)  (i.e. no configuration of queueing model)
 * The concerned ONU should receive upstream grants upon provisioning of  TCONT for the ONU

VOL-174: Support configuration of GEMs as per WT-385 and auto-allocation of gemport-ids

 * As an operator, I should be able to provision a GEMPORT object for the ONU and assign to a UNI
 * As an operator, I should be able to retrieve the provisioned GEMPORT

Additional Notes:

 * gemport-ids should be auto-allocated for the GEMPORT object
 * generic IAdapter interface to be provided that will be used by OLT and ONU adapters for GEM port configuration
 * In the best interest of schedules/timing, in the first step(e.g. POC-3 & trial), assume the queueing model to be supported (to be detailed) (i.e. no configuration of queueing model)
 * The concerned OLT and ONU should be configured with the allocated gemport-ids

Change-Id: I451cd7c0eda57c7b9fa1d65d02c749ff2bf0db4b
diff --git a/ponsim/ponsim_servicer.py b/ponsim/ponsim_servicer.py
index b7a524f..ccfec38 100644
--- a/ponsim/ponsim_servicer.py
+++ b/ponsim/ponsim_servicer.py
@@ -69,3 +69,57 @@
     def RemoveInterface(self, request, context):
         self.x_pon_sim.RemoveInterface(request)
         return Empty()
+
+    def CreateTcont(self, request, context):
+        self.x_pon_sim.CreateTcont(
+            request.tconts_config_data,
+            request.traffic_descriptor_profile_config_data)
+        return Empty()
+
+    def UpdateTcont(self, request, context):
+        self.x_pon_sim.UpdateTcont(
+            request.tconts_config_data,
+            request.traffic_descriptor_profile_config_data)
+        return Empty()
+
+    def RemoveTcont(self, request, context):
+        self.x_pon_sim.RemoveTcont(
+            request.tconts_config_data,
+            request.traffic_descriptor_profile_config_data)
+        return Empty()
+
+    def CreateGemport(self, request, context):
+        self.x_pon_sim.CreateGemport(request)
+        return Empty()
+
+    def UpdateGemport(self, request, context):
+        self.x_pon_sim.UpdateGemport(request)
+        return Empty()
+
+    def RemoveGemport(self, request, context):
+        self.x_pon_sim.RemoveGemport(request)
+        return Empty()
+
+    def CreateMulticastGemport(self, request, context):
+        self.x_pon_sim.CreateMulticastGemport(request)
+        return Empty()
+
+    def UpdateMulticastGemport(self, request, context):
+        self.x_pon_sim.UpdateMulticastGemport(request)
+        return Empty()
+
+    def RemoveMulticastGemport(self, request, context):
+        self.x_pon_sim.RemoveMulticastGemport(request)
+        return Empty()
+
+    def CreateMulticastDistributionSet(self, request, context):
+        self.x_pon_sim.CreateMulticastDistributionSet(request)
+        return Empty()
+
+    def UpdateMulticastDistributionSet(self, request, context):
+        self.x_pon_sim.UpdateMulticastDistributionSet(request)
+        return Empty()
+
+    def RemoveMulticastDistributionSet(self, request, context):
+        self.x_pon_sim.RemoveMulticastDistributionSet(request)
+        return Empty()