# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
"""Client and server classes corresponding to protobuf-defined services."""
import grpc

from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
from voltha_protos import adapter_pb2 as voltha__protos_dot_adapter__pb2
from voltha_protos import common_pb2 as voltha__protos_dot_common__pb2
from voltha_protos import device_pb2 as voltha__protos_dot_device__pb2
from voltha_protos import logical_device_pb2 as voltha__protos_dot_logical__device__pb2
from voltha_protos import omci_alarm_db_pb2 as voltha__protos_dot_omci__alarm__db__pb2
from voltha_protos import omci_mib_db_pb2 as voltha__protos_dot_omci__mib__db__pb2
from voltha_protos import openflow_13_pb2 as voltha__protos_dot_openflow__13__pb2
from voltha_protos import voltha_pb2 as voltha__protos_dot_voltha__pb2


class VolthaServiceStub(object):
    """
    Voltha APIs

    """

    def __init__(self, channel):
        """Constructor.

        Args:
            channel: A grpc.Channel.
        """
        self.GetMembership = channel.unary_unary(
                '/voltha.VolthaService/GetMembership',
                request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
                response_deserializer=voltha__protos_dot_voltha__pb2.Membership.FromString,
                )
        self.UpdateMembership = channel.unary_unary(
                '/voltha.VolthaService/UpdateMembership',
                request_serializer=voltha__protos_dot_voltha__pb2.Membership.SerializeToString,
                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                )
        self.GetVoltha = channel.unary_unary(
                '/voltha.VolthaService/GetVoltha',
                request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
                response_deserializer=voltha__protos_dot_voltha__pb2.Voltha.FromString,
                )
        self.ListCoreInstances = channel.unary_unary(
                '/voltha.VolthaService/ListCoreInstances',
                request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
                response_deserializer=voltha__protos_dot_voltha__pb2.CoreInstances.FromString,
                )
        self.GetCoreInstance = channel.unary_unary(
                '/voltha.VolthaService/GetCoreInstance',
                request_serializer=voltha__protos_dot_common__pb2.ID.SerializeToString,
                response_deserializer=voltha__protos_dot_voltha__pb2.CoreInstance.FromString,
                )
        self.ListAdapters = channel.unary_unary(
                '/voltha.VolthaService/ListAdapters',
                request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
                response_deserializer=voltha__protos_dot_adapter__pb2.Adapters.FromString,
                )
        self.ListLogicalDevices = channel.unary_unary(
                '/voltha.VolthaService/ListLogicalDevices',
                request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
                response_deserializer=voltha__protos_dot_logical__device__pb2.LogicalDevices.FromString,
                )
        self.GetLogicalDevice = channel.unary_unary(
                '/voltha.VolthaService/GetLogicalDevice',
                request_serializer=voltha__protos_dot_common__pb2.ID.SerializeToString,
                response_deserializer=voltha__protos_dot_logical__device__pb2.LogicalDevice.FromString,
                )
        self.ListLogicalDevicePorts = channel.unary_unary(
                '/voltha.VolthaService/ListLogicalDevicePorts',
                request_serializer=voltha__protos_dot_common__pb2.ID.SerializeToString,
                response_deserializer=voltha__protos_dot_logical__device__pb2.LogicalPorts.FromString,
                )
        self.GetLogicalDevicePort = channel.unary_unary(
                '/voltha.VolthaService/GetLogicalDevicePort',
                request_serializer=voltha__protos_dot_logical__device__pb2.LogicalPortId.SerializeToString,
                response_deserializer=voltha__protos_dot_logical__device__pb2.LogicalPort.FromString,
                )
        self.EnableLogicalDevicePort = channel.unary_unary(
                '/voltha.VolthaService/EnableLogicalDevicePort',
                request_serializer=voltha__protos_dot_logical__device__pb2.LogicalPortId.SerializeToString,
                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                )
        self.DisableLogicalDevicePort = channel.unary_unary(
                '/voltha.VolthaService/DisableLogicalDevicePort',
                request_serializer=voltha__protos_dot_logical__device__pb2.LogicalPortId.SerializeToString,
                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                )
        self.ListLogicalDeviceFlows = channel.unary_unary(
                '/voltha.VolthaService/ListLogicalDeviceFlows',
                request_serializer=voltha__protos_dot_common__pb2.ID.SerializeToString,
                response_deserializer=voltha__protos_dot_openflow__13__pb2.Flows.FromString,
                )
        self.UpdateLogicalDeviceFlowTable = channel.unary_unary(
                '/voltha.VolthaService/UpdateLogicalDeviceFlowTable',
                request_serializer=voltha__protos_dot_openflow__13__pb2.FlowTableUpdate.SerializeToString,
                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                )
        self.UpdateLogicalDeviceMeterTable = channel.unary_unary(
                '/voltha.VolthaService/UpdateLogicalDeviceMeterTable',
                request_serializer=voltha__protos_dot_openflow__13__pb2.MeterModUpdate.SerializeToString,
                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                )
        self.ListLogicalDeviceMeters = channel.unary_unary(
                '/voltha.VolthaService/ListLogicalDeviceMeters',
                request_serializer=voltha__protos_dot_common__pb2.ID.SerializeToString,
                response_deserializer=voltha__protos_dot_openflow__13__pb2.Meters.FromString,
                )
        self.ListLogicalDeviceFlowGroups = channel.unary_unary(
                '/voltha.VolthaService/ListLogicalDeviceFlowGroups',
                request_serializer=voltha__protos_dot_common__pb2.ID.SerializeToString,
                response_deserializer=voltha__protos_dot_openflow__13__pb2.FlowGroups.FromString,
                )
        self.UpdateLogicalDeviceFlowGroupTable = channel.unary_unary(
                '/voltha.VolthaService/UpdateLogicalDeviceFlowGroupTable',
                request_serializer=voltha__protos_dot_openflow__13__pb2.FlowGroupTableUpdate.SerializeToString,
                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                )
        self.ListDevices = channel.unary_unary(
                '/voltha.VolthaService/ListDevices',
                request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
                response_deserializer=voltha__protos_dot_device__pb2.Devices.FromString,
                )
        self.ListDeviceIds = channel.unary_unary(
                '/voltha.VolthaService/ListDeviceIds',
                request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
                response_deserializer=voltha__protos_dot_common__pb2.IDs.FromString,
                )
        self.ReconcileDevices = channel.unary_unary(
                '/voltha.VolthaService/ReconcileDevices',
                request_serializer=voltha__protos_dot_common__pb2.IDs.SerializeToString,
                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                )
        self.GetDevice = channel.unary_unary(
                '/voltha.VolthaService/GetDevice',
                request_serializer=voltha__protos_dot_common__pb2.ID.SerializeToString,
                response_deserializer=voltha__protos_dot_device__pb2.Device.FromString,
                )
        self.CreateDevice = channel.unary_unary(
                '/voltha.VolthaService/CreateDevice',
                request_serializer=voltha__protos_dot_device__pb2.Device.SerializeToString,
                response_deserializer=voltha__protos_dot_device__pb2.Device.FromString,
                )
        self.EnableDevice = channel.unary_unary(
                '/voltha.VolthaService/EnableDevice',
                request_serializer=voltha__protos_dot_common__pb2.ID.SerializeToString,
                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                )
        self.DisableDevice = channel.unary_unary(
                '/voltha.VolthaService/DisableDevice',
                request_serializer=voltha__protos_dot_common__pb2.ID.SerializeToString,
                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                )
        self.RebootDevice = channel.unary_unary(
                '/voltha.VolthaService/RebootDevice',
                request_serializer=voltha__protos_dot_common__pb2.ID.SerializeToString,
                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                )
        self.DeleteDevice = channel.unary_unary(
                '/voltha.VolthaService/DeleteDevice',
                request_serializer=voltha__protos_dot_common__pb2.ID.SerializeToString,
                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                )
        self.ForceDeleteDevice = channel.unary_unary(
                '/voltha.VolthaService/ForceDeleteDevice',
                request_serializer=voltha__protos_dot_common__pb2.ID.SerializeToString,
                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                )
        self.DownloadImage = channel.unary_unary(
                '/voltha.VolthaService/DownloadImage',
                request_serializer=voltha__protos_dot_device__pb2.ImageDownload.SerializeToString,
                response_deserializer=voltha__protos_dot_common__pb2.OperationResp.FromString,
                )
        self.GetImageDownloadStatus = channel.unary_unary(
                '/voltha.VolthaService/GetImageDownloadStatus',
                request_serializer=voltha__protos_dot_device__pb2.ImageDownload.SerializeToString,
                response_deserializer=voltha__protos_dot_device__pb2.ImageDownload.FromString,
                )
        self.GetImageDownload = channel.unary_unary(
                '/voltha.VolthaService/GetImageDownload',
                request_serializer=voltha__protos_dot_device__pb2.ImageDownload.SerializeToString,
                response_deserializer=voltha__protos_dot_device__pb2.ImageDownload.FromString,
                )
        self.ListImageDownloads = channel.unary_unary(
                '/voltha.VolthaService/ListImageDownloads',
                request_serializer=voltha__protos_dot_common__pb2.ID.SerializeToString,
                response_deserializer=voltha__protos_dot_device__pb2.ImageDownloads.FromString,
                )
        self.CancelImageDownload = channel.unary_unary(
                '/voltha.VolthaService/CancelImageDownload',
                request_serializer=voltha__protos_dot_device__pb2.ImageDownload.SerializeToString,
                response_deserializer=voltha__protos_dot_common__pb2.OperationResp.FromString,
                )
        self.ActivateImageUpdate = channel.unary_unary(
                '/voltha.VolthaService/ActivateImageUpdate',
                request_serializer=voltha__protos_dot_device__pb2.ImageDownload.SerializeToString,
                response_deserializer=voltha__protos_dot_common__pb2.OperationResp.FromString,
                )
        self.RevertImageUpdate = channel.unary_unary(
                '/voltha.VolthaService/RevertImageUpdate',
                request_serializer=voltha__protos_dot_device__pb2.ImageDownload.SerializeToString,
                response_deserializer=voltha__protos_dot_common__pb2.OperationResp.FromString,
                )
        self.ListDevicePorts = channel.unary_unary(
                '/voltha.VolthaService/ListDevicePorts',
                request_serializer=voltha__protos_dot_common__pb2.ID.SerializeToString,
                response_deserializer=voltha__protos_dot_device__pb2.Ports.FromString,
                )
        self.ListDevicePmConfigs = channel.unary_unary(
                '/voltha.VolthaService/ListDevicePmConfigs',
                request_serializer=voltha__protos_dot_common__pb2.ID.SerializeToString,
                response_deserializer=voltha__protos_dot_device__pb2.PmConfigs.FromString,
                )
        self.UpdateDevicePmConfigs = channel.unary_unary(
                '/voltha.VolthaService/UpdateDevicePmConfigs',
                request_serializer=voltha__protos_dot_device__pb2.PmConfigs.SerializeToString,
                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                )
        self.ListDeviceFlows = channel.unary_unary(
                '/voltha.VolthaService/ListDeviceFlows',
                request_serializer=voltha__protos_dot_common__pb2.ID.SerializeToString,
                response_deserializer=voltha__protos_dot_openflow__13__pb2.Flows.FromString,
                )
        self.ListDeviceFlowGroups = channel.unary_unary(
                '/voltha.VolthaService/ListDeviceFlowGroups',
                request_serializer=voltha__protos_dot_common__pb2.ID.SerializeToString,
                response_deserializer=voltha__protos_dot_openflow__13__pb2.FlowGroups.FromString,
                )
        self.ListDeviceTypes = channel.unary_unary(
                '/voltha.VolthaService/ListDeviceTypes',
                request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
                response_deserializer=voltha__protos_dot_device__pb2.DeviceTypes.FromString,
                )
        self.GetDeviceType = channel.unary_unary(
                '/voltha.VolthaService/GetDeviceType',
                request_serializer=voltha__protos_dot_common__pb2.ID.SerializeToString,
                response_deserializer=voltha__protos_dot_device__pb2.DeviceType.FromString,
                )
        self.ListDeviceGroups = channel.unary_unary(
                '/voltha.VolthaService/ListDeviceGroups',
                request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
                response_deserializer=voltha__protos_dot_voltha__pb2.DeviceGroups.FromString,
                )
        self.StreamPacketsOut = channel.stream_unary(
                '/voltha.VolthaService/StreamPacketsOut',
                request_serializer=voltha__protos_dot_openflow__13__pb2.PacketOut.SerializeToString,
                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                )
        self.ReceivePacketsIn = channel.unary_stream(
                '/voltha.VolthaService/ReceivePacketsIn',
                request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
                response_deserializer=voltha__protos_dot_openflow__13__pb2.PacketIn.FromString,
                )
        self.ReceiveChangeEvents = channel.unary_stream(
                '/voltha.VolthaService/ReceiveChangeEvents',
                request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
                response_deserializer=voltha__protos_dot_openflow__13__pb2.ChangeEvent.FromString,
                )
        self.GetDeviceGroup = channel.unary_unary(
                '/voltha.VolthaService/GetDeviceGroup',
                request_serializer=voltha__protos_dot_common__pb2.ID.SerializeToString,
                response_deserializer=voltha__protos_dot_voltha__pb2.DeviceGroup.FromString,
                )
        self.CreateEventFilter = channel.unary_unary(
                '/voltha.VolthaService/CreateEventFilter',
                request_serializer=voltha__protos_dot_voltha__pb2.EventFilter.SerializeToString,
                response_deserializer=voltha__protos_dot_voltha__pb2.EventFilter.FromString,
                )
        self.GetEventFilter = channel.unary_unary(
                '/voltha.VolthaService/GetEventFilter',
                request_serializer=voltha__protos_dot_common__pb2.ID.SerializeToString,
                response_deserializer=voltha__protos_dot_voltha__pb2.EventFilters.FromString,
                )
        self.UpdateEventFilter = channel.unary_unary(
                '/voltha.VolthaService/UpdateEventFilter',
                request_serializer=voltha__protos_dot_voltha__pb2.EventFilter.SerializeToString,
                response_deserializer=voltha__protos_dot_voltha__pb2.EventFilter.FromString,
                )
        self.DeleteEventFilter = channel.unary_unary(
                '/voltha.VolthaService/DeleteEventFilter',
                request_serializer=voltha__protos_dot_voltha__pb2.EventFilter.SerializeToString,
                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                )
        self.ListEventFilters = channel.unary_unary(
                '/voltha.VolthaService/ListEventFilters',
                request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
                response_deserializer=voltha__protos_dot_voltha__pb2.EventFilters.FromString,
                )
        self.GetImages = channel.unary_unary(
                '/voltha.VolthaService/GetImages',
                request_serializer=voltha__protos_dot_common__pb2.ID.SerializeToString,
                response_deserializer=voltha__protos_dot_device__pb2.Images.FromString,
                )
        self.SelfTest = channel.unary_unary(
                '/voltha.VolthaService/SelfTest',
                request_serializer=voltha__protos_dot_common__pb2.ID.SerializeToString,
                response_deserializer=voltha__protos_dot_voltha__pb2.SelfTestResponse.FromString,
                )
        self.GetMibDeviceData = channel.unary_unary(
                '/voltha.VolthaService/GetMibDeviceData',
                request_serializer=voltha__protos_dot_common__pb2.ID.SerializeToString,
                response_deserializer=voltha__protos_dot_omci__mib__db__pb2.MibDeviceData.FromString,
                )
        self.GetAlarmDeviceData = channel.unary_unary(
                '/voltha.VolthaService/GetAlarmDeviceData',
                request_serializer=voltha__protos_dot_common__pb2.ID.SerializeToString,
                response_deserializer=voltha__protos_dot_omci__alarm__db__pb2.AlarmDeviceData.FromString,
                )
        self.SimulateAlarm = channel.unary_unary(
                '/voltha.VolthaService/SimulateAlarm',
                request_serializer=voltha__protos_dot_device__pb2.SimulateAlarmRequest.SerializeToString,
                response_deserializer=voltha__protos_dot_common__pb2.OperationResp.FromString,
                )
        self.Subscribe = channel.unary_unary(
                '/voltha.VolthaService/Subscribe',
                request_serializer=voltha__protos_dot_voltha__pb2.OfAgentSubscriber.SerializeToString,
                response_deserializer=voltha__protos_dot_voltha__pb2.OfAgentSubscriber.FromString,
                )
        self.EnablePort = channel.unary_unary(
                '/voltha.VolthaService/EnablePort',
                request_serializer=voltha__protos_dot_device__pb2.Port.SerializeToString,
                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                )
        self.DisablePort = channel.unary_unary(
                '/voltha.VolthaService/DisablePort',
                request_serializer=voltha__protos_dot_device__pb2.Port.SerializeToString,
                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                )
        self.GetExtValue = channel.unary_unary(
                '/voltha.VolthaService/GetExtValue',
                request_serializer=voltha__protos_dot_common__pb2.ValueSpecifier.SerializeToString,
                response_deserializer=voltha__protos_dot_common__pb2.ReturnValues.FromString,
                )
        self.SetExtValue = channel.unary_unary(
                '/voltha.VolthaService/SetExtValue',
                request_serializer=voltha__protos_dot_voltha__pb2.ValueSet.SerializeToString,
                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                )
        self.StartOmciTestAction = channel.unary_unary(
                '/voltha.VolthaService/StartOmciTestAction',
                request_serializer=voltha__protos_dot_voltha__pb2.OmciTestRequest.SerializeToString,
                response_deserializer=voltha__protos_dot_voltha__pb2.TestResponse.FromString,
                )


class VolthaServiceServicer(object):
    """
    Voltha APIs

    """

    def GetMembership(self, request, context):
        """Get the membership group of a Voltha Core
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def UpdateMembership(self, request, context):
        """Set the membership group of a Voltha Core
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetVoltha(self, request, context):
        """Get high level information on the Voltha cluster
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ListCoreInstances(self, request, context):
        """List all Voltha cluster core instances
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetCoreInstance(self, request, context):
        """Get details on a Voltha cluster instance
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ListAdapters(self, request, context):
        """List all active adapters (plugins) in the Voltha cluster
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ListLogicalDevices(self, request, context):
        """List all logical devices managed by the Voltha cluster
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetLogicalDevice(self, request, context):
        """Get additional information on a given logical device
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ListLogicalDevicePorts(self, request, context):
        """List ports of a logical device
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetLogicalDevicePort(self, request, context):
        """Gets a logical device port
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def EnableLogicalDevicePort(self, request, context):
        """Enables a logical device port
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def DisableLogicalDevicePort(self, request, context):
        """Disables a logical device port
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ListLogicalDeviceFlows(self, request, context):
        """List all flows of a logical device
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def UpdateLogicalDeviceFlowTable(self, request, context):
        """Update flow table for logical device
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def UpdateLogicalDeviceMeterTable(self, request, context):
        """Update meter table for logical device
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ListLogicalDeviceMeters(self, request, context):
        """List all meters of a logical device
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ListLogicalDeviceFlowGroups(self, request, context):
        """List all flow groups of a logical device
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def UpdateLogicalDeviceFlowGroupTable(self, request, context):
        """Update group table for device
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ListDevices(self, request, context):
        """List all physical devices controlled by the Voltha cluster
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ListDeviceIds(self, request, context):
        """List all physical devices IDs controlled by the Voltha cluster
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ReconcileDevices(self, request, context):
        """Request to a voltha Core to reconcile a set of devices based on their IDs
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetDevice(self, request, context):
        """Get more information on a given physical device
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def CreateDevice(self, request, context):
        """Pre-provision a new physical device
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def EnableDevice(self, request, context):
        """Enable a device.  If the device was in pre-provisioned state then it
        will transition to ENABLED state.  If it was is DISABLED state then it
        will transition to ENABLED state as well.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def DisableDevice(self, request, context):
        """Disable a device
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def RebootDevice(self, request, context):
        """Reboot a device
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def DeleteDevice(self, request, context):
        """Delete a device
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ForceDeleteDevice(self, request, context):
        """Forcefully delete a device
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def DownloadImage(self, request, context):
        """Request an image download to the standby partition
        of a device.
        Note that the call is expected to be non-blocking.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetImageDownloadStatus(self, request, context):
        """Get image download status on a device
        The request retrieves progress on device and updates db record
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetImageDownload(self, request, context):
        """Get image download db record
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ListImageDownloads(self, request, context):
        """List image download db records for a given device
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def CancelImageDownload(self, request, context):
        """Cancel an existing image download process on a device
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ActivateImageUpdate(self, request, context):
        """Activate the specified image at a standby partition
        to active partition.
        Depending on the device implementation, this call
        may or may not cause device reboot.
        If no reboot, then a reboot is required to make the
        activated image running on device
        Note that the call is expected to be non-blocking.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def RevertImageUpdate(self, request, context):
        """Revert the specified image at standby partition
        to active partition, and revert to previous image
        Depending on the device implementation, this call
        may or may not cause device reboot.
        If no reboot, then a reboot is required to make the
        previous image running on device
        Note that the call is expected to be non-blocking.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ListDevicePorts(self, request, context):
        """List ports of a device
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ListDevicePmConfigs(self, request, context):
        """List pm config of a device
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def UpdateDevicePmConfigs(self, request, context):
        """Update the pm config of a device
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ListDeviceFlows(self, request, context):
        """List all flows of a device
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ListDeviceFlowGroups(self, request, context):
        """List all flow groups of a device
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ListDeviceTypes(self, request, context):
        """List device types known to Voltha
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetDeviceType(self, request, context):
        """Get additional information on a device type
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ListDeviceGroups(self, request, context):
        """List all device sharding groups
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def StreamPacketsOut(self, request_iterator, context):
        """Stream control packets to the dataplane
        This does not have an HTTP representation
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ReceivePacketsIn(self, request, context):
        """Receive control packet stream
        This does not have an HTTP representation
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ReceiveChangeEvents(self, request, context):
        """This does not have an HTTP representation
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetDeviceGroup(self, request, context):
        """Get additional information on a device group
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def CreateEventFilter(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetEventFilter(self, request, context):
        """Get all filters present for a device
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def UpdateEventFilter(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def DeleteEventFilter(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ListEventFilters(self, request, context):
        """Get all the filters present
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetImages(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def SelfTest(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetMibDeviceData(self, request, context):
        """OpenOMCI MIB information
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetAlarmDeviceData(self, request, context):
        """OpenOMCI ALARM information
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def SimulateAlarm(self, request, context):
        """Simulate an Alarm
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def Subscribe(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def EnablePort(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def DisablePort(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetExtValue(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def SetExtValue(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def StartOmciTestAction(self, request, context):
        """omci start and stop cli implementation
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')


def add_VolthaServiceServicer_to_server(servicer, server):
    rpc_method_handlers = {
            'GetMembership': grpc.unary_unary_rpc_method_handler(
                    servicer.GetMembership,
                    request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                    response_serializer=voltha__protos_dot_voltha__pb2.Membership.SerializeToString,
            ),
            'UpdateMembership': grpc.unary_unary_rpc_method_handler(
                    servicer.UpdateMembership,
                    request_deserializer=voltha__protos_dot_voltha__pb2.Membership.FromString,
                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            ),
            'GetVoltha': grpc.unary_unary_rpc_method_handler(
                    servicer.GetVoltha,
                    request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                    response_serializer=voltha__protos_dot_voltha__pb2.Voltha.SerializeToString,
            ),
            'ListCoreInstances': grpc.unary_unary_rpc_method_handler(
                    servicer.ListCoreInstances,
                    request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                    response_serializer=voltha__protos_dot_voltha__pb2.CoreInstances.SerializeToString,
            ),
            'GetCoreInstance': grpc.unary_unary_rpc_method_handler(
                    servicer.GetCoreInstance,
                    request_deserializer=voltha__protos_dot_common__pb2.ID.FromString,
                    response_serializer=voltha__protos_dot_voltha__pb2.CoreInstance.SerializeToString,
            ),
            'ListAdapters': grpc.unary_unary_rpc_method_handler(
                    servicer.ListAdapters,
                    request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                    response_serializer=voltha__protos_dot_adapter__pb2.Adapters.SerializeToString,
            ),
            'ListLogicalDevices': grpc.unary_unary_rpc_method_handler(
                    servicer.ListLogicalDevices,
                    request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                    response_serializer=voltha__protos_dot_logical__device__pb2.LogicalDevices.SerializeToString,
            ),
            'GetLogicalDevice': grpc.unary_unary_rpc_method_handler(
                    servicer.GetLogicalDevice,
                    request_deserializer=voltha__protos_dot_common__pb2.ID.FromString,
                    response_serializer=voltha__protos_dot_logical__device__pb2.LogicalDevice.SerializeToString,
            ),
            'ListLogicalDevicePorts': grpc.unary_unary_rpc_method_handler(
                    servicer.ListLogicalDevicePorts,
                    request_deserializer=voltha__protos_dot_common__pb2.ID.FromString,
                    response_serializer=voltha__protos_dot_logical__device__pb2.LogicalPorts.SerializeToString,
            ),
            'GetLogicalDevicePort': grpc.unary_unary_rpc_method_handler(
                    servicer.GetLogicalDevicePort,
                    request_deserializer=voltha__protos_dot_logical__device__pb2.LogicalPortId.FromString,
                    response_serializer=voltha__protos_dot_logical__device__pb2.LogicalPort.SerializeToString,
            ),
            'EnableLogicalDevicePort': grpc.unary_unary_rpc_method_handler(
                    servicer.EnableLogicalDevicePort,
                    request_deserializer=voltha__protos_dot_logical__device__pb2.LogicalPortId.FromString,
                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            ),
            'DisableLogicalDevicePort': grpc.unary_unary_rpc_method_handler(
                    servicer.DisableLogicalDevicePort,
                    request_deserializer=voltha__protos_dot_logical__device__pb2.LogicalPortId.FromString,
                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            ),
            'ListLogicalDeviceFlows': grpc.unary_unary_rpc_method_handler(
                    servicer.ListLogicalDeviceFlows,
                    request_deserializer=voltha__protos_dot_common__pb2.ID.FromString,
                    response_serializer=voltha__protos_dot_openflow__13__pb2.Flows.SerializeToString,
            ),
            'UpdateLogicalDeviceFlowTable': grpc.unary_unary_rpc_method_handler(
                    servicer.UpdateLogicalDeviceFlowTable,
                    request_deserializer=voltha__protos_dot_openflow__13__pb2.FlowTableUpdate.FromString,
                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            ),
            'UpdateLogicalDeviceMeterTable': grpc.unary_unary_rpc_method_handler(
                    servicer.UpdateLogicalDeviceMeterTable,
                    request_deserializer=voltha__protos_dot_openflow__13__pb2.MeterModUpdate.FromString,
                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            ),
            'ListLogicalDeviceMeters': grpc.unary_unary_rpc_method_handler(
                    servicer.ListLogicalDeviceMeters,
                    request_deserializer=voltha__protos_dot_common__pb2.ID.FromString,
                    response_serializer=voltha__protos_dot_openflow__13__pb2.Meters.SerializeToString,
            ),
            'ListLogicalDeviceFlowGroups': grpc.unary_unary_rpc_method_handler(
                    servicer.ListLogicalDeviceFlowGroups,
                    request_deserializer=voltha__protos_dot_common__pb2.ID.FromString,
                    response_serializer=voltha__protos_dot_openflow__13__pb2.FlowGroups.SerializeToString,
            ),
            'UpdateLogicalDeviceFlowGroupTable': grpc.unary_unary_rpc_method_handler(
                    servicer.UpdateLogicalDeviceFlowGroupTable,
                    request_deserializer=voltha__protos_dot_openflow__13__pb2.FlowGroupTableUpdate.FromString,
                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            ),
            'ListDevices': grpc.unary_unary_rpc_method_handler(
                    servicer.ListDevices,
                    request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                    response_serializer=voltha__protos_dot_device__pb2.Devices.SerializeToString,
            ),
            'ListDeviceIds': grpc.unary_unary_rpc_method_handler(
                    servicer.ListDeviceIds,
                    request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                    response_serializer=voltha__protos_dot_common__pb2.IDs.SerializeToString,
            ),
            'ReconcileDevices': grpc.unary_unary_rpc_method_handler(
                    servicer.ReconcileDevices,
                    request_deserializer=voltha__protos_dot_common__pb2.IDs.FromString,
                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            ),
            'GetDevice': grpc.unary_unary_rpc_method_handler(
                    servicer.GetDevice,
                    request_deserializer=voltha__protos_dot_common__pb2.ID.FromString,
                    response_serializer=voltha__protos_dot_device__pb2.Device.SerializeToString,
            ),
            'CreateDevice': grpc.unary_unary_rpc_method_handler(
                    servicer.CreateDevice,
                    request_deserializer=voltha__protos_dot_device__pb2.Device.FromString,
                    response_serializer=voltha__protos_dot_device__pb2.Device.SerializeToString,
            ),
            'EnableDevice': grpc.unary_unary_rpc_method_handler(
                    servicer.EnableDevice,
                    request_deserializer=voltha__protos_dot_common__pb2.ID.FromString,
                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            ),
            'DisableDevice': grpc.unary_unary_rpc_method_handler(
                    servicer.DisableDevice,
                    request_deserializer=voltha__protos_dot_common__pb2.ID.FromString,
                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            ),
            'RebootDevice': grpc.unary_unary_rpc_method_handler(
                    servicer.RebootDevice,
                    request_deserializer=voltha__protos_dot_common__pb2.ID.FromString,
                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            ),
            'DeleteDevice': grpc.unary_unary_rpc_method_handler(
                    servicer.DeleteDevice,
                    request_deserializer=voltha__protos_dot_common__pb2.ID.FromString,
                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            ),
            'ForceDeleteDevice': grpc.unary_unary_rpc_method_handler(
                    servicer.ForceDeleteDevice,
                    request_deserializer=voltha__protos_dot_common__pb2.ID.FromString,
                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            ),
            'DownloadImage': grpc.unary_unary_rpc_method_handler(
                    servicer.DownloadImage,
                    request_deserializer=voltha__protos_dot_device__pb2.ImageDownload.FromString,
                    response_serializer=voltha__protos_dot_common__pb2.OperationResp.SerializeToString,
            ),
            'GetImageDownloadStatus': grpc.unary_unary_rpc_method_handler(
                    servicer.GetImageDownloadStatus,
                    request_deserializer=voltha__protos_dot_device__pb2.ImageDownload.FromString,
                    response_serializer=voltha__protos_dot_device__pb2.ImageDownload.SerializeToString,
            ),
            'GetImageDownload': grpc.unary_unary_rpc_method_handler(
                    servicer.GetImageDownload,
                    request_deserializer=voltha__protos_dot_device__pb2.ImageDownload.FromString,
                    response_serializer=voltha__protos_dot_device__pb2.ImageDownload.SerializeToString,
            ),
            'ListImageDownloads': grpc.unary_unary_rpc_method_handler(
                    servicer.ListImageDownloads,
                    request_deserializer=voltha__protos_dot_common__pb2.ID.FromString,
                    response_serializer=voltha__protos_dot_device__pb2.ImageDownloads.SerializeToString,
            ),
            'CancelImageDownload': grpc.unary_unary_rpc_method_handler(
                    servicer.CancelImageDownload,
                    request_deserializer=voltha__protos_dot_device__pb2.ImageDownload.FromString,
                    response_serializer=voltha__protos_dot_common__pb2.OperationResp.SerializeToString,
            ),
            'ActivateImageUpdate': grpc.unary_unary_rpc_method_handler(
                    servicer.ActivateImageUpdate,
                    request_deserializer=voltha__protos_dot_device__pb2.ImageDownload.FromString,
                    response_serializer=voltha__protos_dot_common__pb2.OperationResp.SerializeToString,
            ),
            'RevertImageUpdate': grpc.unary_unary_rpc_method_handler(
                    servicer.RevertImageUpdate,
                    request_deserializer=voltha__protos_dot_device__pb2.ImageDownload.FromString,
                    response_serializer=voltha__protos_dot_common__pb2.OperationResp.SerializeToString,
            ),
            'ListDevicePorts': grpc.unary_unary_rpc_method_handler(
                    servicer.ListDevicePorts,
                    request_deserializer=voltha__protos_dot_common__pb2.ID.FromString,
                    response_serializer=voltha__protos_dot_device__pb2.Ports.SerializeToString,
            ),
            'ListDevicePmConfigs': grpc.unary_unary_rpc_method_handler(
                    servicer.ListDevicePmConfigs,
                    request_deserializer=voltha__protos_dot_common__pb2.ID.FromString,
                    response_serializer=voltha__protos_dot_device__pb2.PmConfigs.SerializeToString,
            ),
            'UpdateDevicePmConfigs': grpc.unary_unary_rpc_method_handler(
                    servicer.UpdateDevicePmConfigs,
                    request_deserializer=voltha__protos_dot_device__pb2.PmConfigs.FromString,
                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            ),
            'ListDeviceFlows': grpc.unary_unary_rpc_method_handler(
                    servicer.ListDeviceFlows,
                    request_deserializer=voltha__protos_dot_common__pb2.ID.FromString,
                    response_serializer=voltha__protos_dot_openflow__13__pb2.Flows.SerializeToString,
            ),
            'ListDeviceFlowGroups': grpc.unary_unary_rpc_method_handler(
                    servicer.ListDeviceFlowGroups,
                    request_deserializer=voltha__protos_dot_common__pb2.ID.FromString,
                    response_serializer=voltha__protos_dot_openflow__13__pb2.FlowGroups.SerializeToString,
            ),
            'ListDeviceTypes': grpc.unary_unary_rpc_method_handler(
                    servicer.ListDeviceTypes,
                    request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                    response_serializer=voltha__protos_dot_device__pb2.DeviceTypes.SerializeToString,
            ),
            'GetDeviceType': grpc.unary_unary_rpc_method_handler(
                    servicer.GetDeviceType,
                    request_deserializer=voltha__protos_dot_common__pb2.ID.FromString,
                    response_serializer=voltha__protos_dot_device__pb2.DeviceType.SerializeToString,
            ),
            'ListDeviceGroups': grpc.unary_unary_rpc_method_handler(
                    servicer.ListDeviceGroups,
                    request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                    response_serializer=voltha__protos_dot_voltha__pb2.DeviceGroups.SerializeToString,
            ),
            'StreamPacketsOut': grpc.stream_unary_rpc_method_handler(
                    servicer.StreamPacketsOut,
                    request_deserializer=voltha__protos_dot_openflow__13__pb2.PacketOut.FromString,
                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            ),
            'ReceivePacketsIn': grpc.unary_stream_rpc_method_handler(
                    servicer.ReceivePacketsIn,
                    request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                    response_serializer=voltha__protos_dot_openflow__13__pb2.PacketIn.SerializeToString,
            ),
            'ReceiveChangeEvents': grpc.unary_stream_rpc_method_handler(
                    servicer.ReceiveChangeEvents,
                    request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                    response_serializer=voltha__protos_dot_openflow__13__pb2.ChangeEvent.SerializeToString,
            ),
            'GetDeviceGroup': grpc.unary_unary_rpc_method_handler(
                    servicer.GetDeviceGroup,
                    request_deserializer=voltha__protos_dot_common__pb2.ID.FromString,
                    response_serializer=voltha__protos_dot_voltha__pb2.DeviceGroup.SerializeToString,
            ),
            'CreateEventFilter': grpc.unary_unary_rpc_method_handler(
                    servicer.CreateEventFilter,
                    request_deserializer=voltha__protos_dot_voltha__pb2.EventFilter.FromString,
                    response_serializer=voltha__protos_dot_voltha__pb2.EventFilter.SerializeToString,
            ),
            'GetEventFilter': grpc.unary_unary_rpc_method_handler(
                    servicer.GetEventFilter,
                    request_deserializer=voltha__protos_dot_common__pb2.ID.FromString,
                    response_serializer=voltha__protos_dot_voltha__pb2.EventFilters.SerializeToString,
            ),
            'UpdateEventFilter': grpc.unary_unary_rpc_method_handler(
                    servicer.UpdateEventFilter,
                    request_deserializer=voltha__protos_dot_voltha__pb2.EventFilter.FromString,
                    response_serializer=voltha__protos_dot_voltha__pb2.EventFilter.SerializeToString,
            ),
            'DeleteEventFilter': grpc.unary_unary_rpc_method_handler(
                    servicer.DeleteEventFilter,
                    request_deserializer=voltha__protos_dot_voltha__pb2.EventFilter.FromString,
                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            ),
            'ListEventFilters': grpc.unary_unary_rpc_method_handler(
                    servicer.ListEventFilters,
                    request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                    response_serializer=voltha__protos_dot_voltha__pb2.EventFilters.SerializeToString,
            ),
            'GetImages': grpc.unary_unary_rpc_method_handler(
                    servicer.GetImages,
                    request_deserializer=voltha__protos_dot_common__pb2.ID.FromString,
                    response_serializer=voltha__protos_dot_device__pb2.Images.SerializeToString,
            ),
            'SelfTest': grpc.unary_unary_rpc_method_handler(
                    servicer.SelfTest,
                    request_deserializer=voltha__protos_dot_common__pb2.ID.FromString,
                    response_serializer=voltha__protos_dot_voltha__pb2.SelfTestResponse.SerializeToString,
            ),
            'GetMibDeviceData': grpc.unary_unary_rpc_method_handler(
                    servicer.GetMibDeviceData,
                    request_deserializer=voltha__protos_dot_common__pb2.ID.FromString,
                    response_serializer=voltha__protos_dot_omci__mib__db__pb2.MibDeviceData.SerializeToString,
            ),
            'GetAlarmDeviceData': grpc.unary_unary_rpc_method_handler(
                    servicer.GetAlarmDeviceData,
                    request_deserializer=voltha__protos_dot_common__pb2.ID.FromString,
                    response_serializer=voltha__protos_dot_omci__alarm__db__pb2.AlarmDeviceData.SerializeToString,
            ),
            'SimulateAlarm': grpc.unary_unary_rpc_method_handler(
                    servicer.SimulateAlarm,
                    request_deserializer=voltha__protos_dot_device__pb2.SimulateAlarmRequest.FromString,
                    response_serializer=voltha__protos_dot_common__pb2.OperationResp.SerializeToString,
            ),
            'Subscribe': grpc.unary_unary_rpc_method_handler(
                    servicer.Subscribe,
                    request_deserializer=voltha__protos_dot_voltha__pb2.OfAgentSubscriber.FromString,
                    response_serializer=voltha__protos_dot_voltha__pb2.OfAgentSubscriber.SerializeToString,
            ),
            'EnablePort': grpc.unary_unary_rpc_method_handler(
                    servicer.EnablePort,
                    request_deserializer=voltha__protos_dot_device__pb2.Port.FromString,
                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            ),
            'DisablePort': grpc.unary_unary_rpc_method_handler(
                    servicer.DisablePort,
                    request_deserializer=voltha__protos_dot_device__pb2.Port.FromString,
                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            ),
            'GetExtValue': grpc.unary_unary_rpc_method_handler(
                    servicer.GetExtValue,
                    request_deserializer=voltha__protos_dot_common__pb2.ValueSpecifier.FromString,
                    response_serializer=voltha__protos_dot_common__pb2.ReturnValues.SerializeToString,
            ),
            'SetExtValue': grpc.unary_unary_rpc_method_handler(
                    servicer.SetExtValue,
                    request_deserializer=voltha__protos_dot_voltha__pb2.ValueSet.FromString,
                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            ),
            'StartOmciTestAction': grpc.unary_unary_rpc_method_handler(
                    servicer.StartOmciTestAction,
                    request_deserializer=voltha__protos_dot_voltha__pb2.OmciTestRequest.FromString,
                    response_serializer=voltha__protos_dot_voltha__pb2.TestResponse.SerializeToString,
            ),
    }
    generic_handler = grpc.method_handlers_generic_handler(
            'voltha.VolthaService', rpc_method_handlers)
    server.add_generic_rpc_handlers((generic_handler,))


 # This class is part of an EXPERIMENTAL API.
class VolthaService(object):
    """
    Voltha APIs

    """

    @staticmethod
    def GetMembership(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/GetMembership',
            google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            voltha__protos_dot_voltha__pb2.Membership.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def UpdateMembership(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/UpdateMembership',
            voltha__protos_dot_voltha__pb2.Membership.SerializeToString,
            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def GetVoltha(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/GetVoltha',
            google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            voltha__protos_dot_voltha__pb2.Voltha.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def ListCoreInstances(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/ListCoreInstances',
            google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            voltha__protos_dot_voltha__pb2.CoreInstances.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def GetCoreInstance(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/GetCoreInstance',
            voltha__protos_dot_common__pb2.ID.SerializeToString,
            voltha__protos_dot_voltha__pb2.CoreInstance.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def ListAdapters(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/ListAdapters',
            google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            voltha__protos_dot_adapter__pb2.Adapters.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def ListLogicalDevices(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/ListLogicalDevices',
            google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            voltha__protos_dot_logical__device__pb2.LogicalDevices.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def GetLogicalDevice(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/GetLogicalDevice',
            voltha__protos_dot_common__pb2.ID.SerializeToString,
            voltha__protos_dot_logical__device__pb2.LogicalDevice.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def ListLogicalDevicePorts(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/ListLogicalDevicePorts',
            voltha__protos_dot_common__pb2.ID.SerializeToString,
            voltha__protos_dot_logical__device__pb2.LogicalPorts.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def GetLogicalDevicePort(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/GetLogicalDevicePort',
            voltha__protos_dot_logical__device__pb2.LogicalPortId.SerializeToString,
            voltha__protos_dot_logical__device__pb2.LogicalPort.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def EnableLogicalDevicePort(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/EnableLogicalDevicePort',
            voltha__protos_dot_logical__device__pb2.LogicalPortId.SerializeToString,
            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def DisableLogicalDevicePort(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/DisableLogicalDevicePort',
            voltha__protos_dot_logical__device__pb2.LogicalPortId.SerializeToString,
            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def ListLogicalDeviceFlows(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/ListLogicalDeviceFlows',
            voltha__protos_dot_common__pb2.ID.SerializeToString,
            voltha__protos_dot_openflow__13__pb2.Flows.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def UpdateLogicalDeviceFlowTable(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/UpdateLogicalDeviceFlowTable',
            voltha__protos_dot_openflow__13__pb2.FlowTableUpdate.SerializeToString,
            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def UpdateLogicalDeviceMeterTable(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/UpdateLogicalDeviceMeterTable',
            voltha__protos_dot_openflow__13__pb2.MeterModUpdate.SerializeToString,
            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def ListLogicalDeviceMeters(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/ListLogicalDeviceMeters',
            voltha__protos_dot_common__pb2.ID.SerializeToString,
            voltha__protos_dot_openflow__13__pb2.Meters.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def ListLogicalDeviceFlowGroups(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/ListLogicalDeviceFlowGroups',
            voltha__protos_dot_common__pb2.ID.SerializeToString,
            voltha__protos_dot_openflow__13__pb2.FlowGroups.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def UpdateLogicalDeviceFlowGroupTable(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/UpdateLogicalDeviceFlowGroupTable',
            voltha__protos_dot_openflow__13__pb2.FlowGroupTableUpdate.SerializeToString,
            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def ListDevices(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/ListDevices',
            google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            voltha__protos_dot_device__pb2.Devices.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def ListDeviceIds(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/ListDeviceIds',
            google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            voltha__protos_dot_common__pb2.IDs.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def ReconcileDevices(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/ReconcileDevices',
            voltha__protos_dot_common__pb2.IDs.SerializeToString,
            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def GetDevice(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/GetDevice',
            voltha__protos_dot_common__pb2.ID.SerializeToString,
            voltha__protos_dot_device__pb2.Device.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def CreateDevice(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/CreateDevice',
            voltha__protos_dot_device__pb2.Device.SerializeToString,
            voltha__protos_dot_device__pb2.Device.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def EnableDevice(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/EnableDevice',
            voltha__protos_dot_common__pb2.ID.SerializeToString,
            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def DisableDevice(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/DisableDevice',
            voltha__protos_dot_common__pb2.ID.SerializeToString,
            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def RebootDevice(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/RebootDevice',
            voltha__protos_dot_common__pb2.ID.SerializeToString,
            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def DeleteDevice(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/DeleteDevice',
            voltha__protos_dot_common__pb2.ID.SerializeToString,
            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def ForceDeleteDevice(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/ForceDeleteDevice',
            voltha__protos_dot_common__pb2.ID.SerializeToString,
            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def DownloadImage(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/DownloadImage',
            voltha__protos_dot_device__pb2.ImageDownload.SerializeToString,
            voltha__protos_dot_common__pb2.OperationResp.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def GetImageDownloadStatus(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/GetImageDownloadStatus',
            voltha__protos_dot_device__pb2.ImageDownload.SerializeToString,
            voltha__protos_dot_device__pb2.ImageDownload.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def GetImageDownload(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/GetImageDownload',
            voltha__protos_dot_device__pb2.ImageDownload.SerializeToString,
            voltha__protos_dot_device__pb2.ImageDownload.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def ListImageDownloads(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/ListImageDownloads',
            voltha__protos_dot_common__pb2.ID.SerializeToString,
            voltha__protos_dot_device__pb2.ImageDownloads.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def CancelImageDownload(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/CancelImageDownload',
            voltha__protos_dot_device__pb2.ImageDownload.SerializeToString,
            voltha__protos_dot_common__pb2.OperationResp.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def ActivateImageUpdate(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/ActivateImageUpdate',
            voltha__protos_dot_device__pb2.ImageDownload.SerializeToString,
            voltha__protos_dot_common__pb2.OperationResp.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def RevertImageUpdate(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/RevertImageUpdate',
            voltha__protos_dot_device__pb2.ImageDownload.SerializeToString,
            voltha__protos_dot_common__pb2.OperationResp.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def ListDevicePorts(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/ListDevicePorts',
            voltha__protos_dot_common__pb2.ID.SerializeToString,
            voltha__protos_dot_device__pb2.Ports.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def ListDevicePmConfigs(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/ListDevicePmConfigs',
            voltha__protos_dot_common__pb2.ID.SerializeToString,
            voltha__protos_dot_device__pb2.PmConfigs.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def UpdateDevicePmConfigs(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/UpdateDevicePmConfigs',
            voltha__protos_dot_device__pb2.PmConfigs.SerializeToString,
            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def ListDeviceFlows(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/ListDeviceFlows',
            voltha__protos_dot_common__pb2.ID.SerializeToString,
            voltha__protos_dot_openflow__13__pb2.Flows.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def ListDeviceFlowGroups(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/ListDeviceFlowGroups',
            voltha__protos_dot_common__pb2.ID.SerializeToString,
            voltha__protos_dot_openflow__13__pb2.FlowGroups.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def ListDeviceTypes(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/ListDeviceTypes',
            google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            voltha__protos_dot_device__pb2.DeviceTypes.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def GetDeviceType(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/GetDeviceType',
            voltha__protos_dot_common__pb2.ID.SerializeToString,
            voltha__protos_dot_device__pb2.DeviceType.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def ListDeviceGroups(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/ListDeviceGroups',
            google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            voltha__protos_dot_voltha__pb2.DeviceGroups.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def StreamPacketsOut(request_iterator,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.stream_unary(request_iterator, target, '/voltha.VolthaService/StreamPacketsOut',
            voltha__protos_dot_openflow__13__pb2.PacketOut.SerializeToString,
            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def ReceivePacketsIn(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_stream(request, target, '/voltha.VolthaService/ReceivePacketsIn',
            google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            voltha__protos_dot_openflow__13__pb2.PacketIn.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def ReceiveChangeEvents(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_stream(request, target, '/voltha.VolthaService/ReceiveChangeEvents',
            google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            voltha__protos_dot_openflow__13__pb2.ChangeEvent.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def GetDeviceGroup(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/GetDeviceGroup',
            voltha__protos_dot_common__pb2.ID.SerializeToString,
            voltha__protos_dot_voltha__pb2.DeviceGroup.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def CreateEventFilter(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/CreateEventFilter',
            voltha__protos_dot_voltha__pb2.EventFilter.SerializeToString,
            voltha__protos_dot_voltha__pb2.EventFilter.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def GetEventFilter(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/GetEventFilter',
            voltha__protos_dot_common__pb2.ID.SerializeToString,
            voltha__protos_dot_voltha__pb2.EventFilters.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def UpdateEventFilter(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/UpdateEventFilter',
            voltha__protos_dot_voltha__pb2.EventFilter.SerializeToString,
            voltha__protos_dot_voltha__pb2.EventFilter.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def DeleteEventFilter(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/DeleteEventFilter',
            voltha__protos_dot_voltha__pb2.EventFilter.SerializeToString,
            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def ListEventFilters(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/ListEventFilters',
            google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            voltha__protos_dot_voltha__pb2.EventFilters.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def GetImages(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/GetImages',
            voltha__protos_dot_common__pb2.ID.SerializeToString,
            voltha__protos_dot_device__pb2.Images.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def SelfTest(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/SelfTest',
            voltha__protos_dot_common__pb2.ID.SerializeToString,
            voltha__protos_dot_voltha__pb2.SelfTestResponse.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def GetMibDeviceData(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/GetMibDeviceData',
            voltha__protos_dot_common__pb2.ID.SerializeToString,
            voltha__protos_dot_omci__mib__db__pb2.MibDeviceData.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def GetAlarmDeviceData(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/GetAlarmDeviceData',
            voltha__protos_dot_common__pb2.ID.SerializeToString,
            voltha__protos_dot_omci__alarm__db__pb2.AlarmDeviceData.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def SimulateAlarm(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/SimulateAlarm',
            voltha__protos_dot_device__pb2.SimulateAlarmRequest.SerializeToString,
            voltha__protos_dot_common__pb2.OperationResp.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def Subscribe(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/Subscribe',
            voltha__protos_dot_voltha__pb2.OfAgentSubscriber.SerializeToString,
            voltha__protos_dot_voltha__pb2.OfAgentSubscriber.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def EnablePort(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/EnablePort',
            voltha__protos_dot_device__pb2.Port.SerializeToString,
            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def DisablePort(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/DisablePort',
            voltha__protos_dot_device__pb2.Port.SerializeToString,
            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def GetExtValue(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/GetExtValue',
            voltha__protos_dot_common__pb2.ValueSpecifier.SerializeToString,
            voltha__protos_dot_common__pb2.ReturnValues.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def SetExtValue(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/SetExtValue',
            voltha__protos_dot_voltha__pb2.ValueSet.SerializeToString,
            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def StartOmciTestAction(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/voltha.VolthaService/StartOmciTestAction',
            voltha__protos_dot_voltha__pb2.OmciTestRequest.SerializeToString,
            voltha__protos_dot_voltha__pb2.TestResponse.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
