blob: 3bfb9efd4a2faf575240d47785a6500bc73c4341 [file] [log] [blame]
/*
* Top-level Voltha API definition
*
* For details, see individual definition files.
*/
syntax = "proto3";
option go_package = "github.com/opencord/voltha/protos/go/voltha";
package voltha;
import "google/protobuf/empty.proto";
import "google/protobuf/any.proto";
import "google/api/annotations.proto";
import "yang_options.proto";
import public "meta.proto";
import public "common.proto";
import public "health.proto";
import public "logical_device.proto";
import public "device.proto";
import public "adapter.proto";
import public "openflow_13.proto";
import "bbf_fiber.proto";
import "bbf_fiber_base.proto";
import "bbf_fiber_gemport_body.proto";
import "bbf_fiber_multicast_distribution_set_body.proto";
import "bbf_fiber_multicast_gemport_body.proto";
import "bbf_fiber_tcont_body.proto";
import "bbf_fiber_traffic_descriptor_profile_body.proto";
import "omci_mib_db.proto";
import "omci_alarm_db.proto";
option java_package = "org.opencord.voltha";
option java_outer_classname = "VolthaProtos";
option csharp_namespace = "Opencord.Voltha.Voltha";
message DeviceGroup {
string id = 1 [(access) = READ_ONLY];
repeated LogicalDevice logical_devices = 2 [(child_node) = {key: "id"}];
repeated Device devices = 3 [(child_node) = {key: "id"}];
}
message DeviceGroups {
repeated DeviceGroup items = 1;
}
message AlarmFilterRuleKey {
option (yang_child_rule) = MOVE_TO_PARENT_LEVEL;
enum AlarmFilterRuleKey {
id = 0;
type = 1;
severity = 2;
resource_id = 3;
category = 4;
device_id = 5;
}
}
message AlarmFilterRule {
AlarmFilterRuleKey.AlarmFilterRuleKey key = 1;
string value = 2;
}
message AlarmFilter {
string id = 1 [(access) = READ_ONLY];
repeated AlarmFilterRule rules = 2;
}
message AlarmFilters {
repeated AlarmFilter filters = 1;
}
// Top-level (root) node for a Voltha Instance
message VolthaInstance {
option (yang_message_rule) = CREATE_BOTH_GROUPING_AND_CONTAINER;
string instance_id = 1 [(access) = READ_ONLY];
string version = 2 [(access) = READ_ONLY];
LogLevel.LogLevel log_level = 3;
HealthStatus health = 10 [(child_node) = {}];
repeated Adapter adapters = 11 [(child_node) = {key: "id" }];
repeated LogicalDevice logical_devices = 12 [(child_node) = {key: "id"}];
repeated Device devices = 13 [(child_node) = {key: "id"}];
repeated DeviceType device_types = 14 [(child_node) = {key: "id"}];
repeated DeviceGroup device_groups = 15 [(child_node) = {key: "id"}];
repeated AlarmFilter alarm_filters = 16 [(child_node) = {key: "id"}];
repeated bbf_fiber.ChannelgroupConfig channel_groups = 17
[(child_node) = {key: "name"}];
repeated bbf_fiber.ChannelpartitionConfig channel_partitions = 18
[(child_node) = {key: "name"}];
repeated bbf_fiber.ChannelpairConfig channel_pairs = 19
[(child_node) = {key: "name"}];
repeated bbf_fiber.OntaniConfig ont_anis = 20
[(child_node) = {key: "name"}];
repeated bbf_fiber.VOntaniConfig v_ont_anis = 21
[(child_node) = {key: "name"}];
repeated bbf_fiber.VEnetConfig v_enets = 22
[(child_node) = {key: "name"}];
repeated
bbf_fiber.TrafficDescriptorProfileData traffic_descriptor_profiles = 23
[(child_node) = {key: "name"}];
repeated bbf_fiber.TcontsConfigData tconts = 24
[(child_node) = {key: "name"}];
repeated bbf_fiber.GemportsConfigData gemports = 25
[(child_node) = {key: "name"}];
repeated bbf_fiber.MulticastGemportsConfigData multicast_gemports = 26
[(child_node) = {key: "name"}];
repeated
bbf_fiber.MulticastDistributionSetData multicast_distibution_sets = 27
[(child_node) = {key: "name"}];
repeated
omci.MibDeviceData omci_mibs = 28
[(child_node) = {key: "device_id"}];
repeated
alarm.AlarmDeviceData omci_alarms = 29
[(child_node) = {key: "device_id"}];
}
message VolthaInstances {
option (yang_message_rule) = CREATE_BOTH_GROUPING_AND_CONTAINER;
repeated string items = 1;
}
// Voltha representing the entire Voltha cluster
message Voltha {
option (yang_message_rule) = CREATE_BOTH_GROUPING_AND_CONTAINER;
string version = 1 [(access) = READ_ONLY];
LogLevel.LogLevel log_level = 2;
repeated VolthaInstance instances = 3 [(child_node) = {key: "instance_id"}];
repeated Adapter adapters = 11 [(child_node) = {key: "id"}];
repeated LogicalDevice logical_devices = 12 [(child_node) = {key: "id"}];
repeated Device devices = 13 [(child_node) = {key: "id"}];
repeated DeviceGroup device_groups = 15 [(child_node) = {key: "id"}];
repeated bbf_fiber.ChannelgroupConfig channel_groups = 16
[(child_node) = {key: "name"}];
repeated bbf_fiber.ChannelpartitionConfig channel_partitions = 17
[(child_node) = {key: "name"}];
repeated bbf_fiber.ChannelpairConfig channel_pairs = 18
[(child_node) = {key: "name"}];
repeated bbf_fiber.OntaniConfig ont_anis = 19
[(child_node) = {key: "name"}];
repeated bbf_fiber.VOntaniConfig v_ont_anis = 20
[(child_node) = {key: "name"}];
repeated bbf_fiber.VEnetConfig v_enets = 21
[(child_node) = {key: "name"}];
repeated
bbf_fiber.TrafficDescriptorProfileData traffic_descriptor_profiles = 23
[(child_node) = {key: "name"}];
repeated bbf_fiber.TcontsConfigData tconts = 24
[(child_node) = {key: "name"}];
repeated bbf_fiber.GemportsConfigData gemports = 25
[(child_node) = {key: "name"}];
repeated bbf_fiber.MulticastGemportsConfigData multicast_gemports = 26
[(child_node) = {key: "name"}];
repeated
bbf_fiber.MulticastDistributionSetData multicast_distibution_sets = 27
[(child_node) = {key: "name"}];
repeated
omci.MibDeviceData omci_mib_database = 28
[(child_node) = {key: "device_id"}];
repeated
alarm.AlarmDeviceData omci_alarm_database = 29
[(child_node) = {key: "device_id"}];
}
// Device Self Test Response
message SelfTestResponse {
option (yang_child_rule) = MOVE_TO_PARENT_LEVEL;
enum SelfTestResult {
SUCCESS = 0;
FAILURE = 1;
NOT_SUPPORTED = 2;
UNKNOWN_ERROR = 3;
}
SelfTestResult result = 1;
}
message OfAgentSubscriber {
// ID of ofagent instance
string ofagent_id = 1;
// ID of voltha instance to which the ofagent is subscribed
string voltha_id = 2;
}
/*
* Cluster-wide Voltha APIs
*
* These APIs are potentially dispatched to the leader of the Voltha cluster,
* to a specific Voltha instance which owns the given device or logical device.
*
*/
service VolthaGlobalService {
// Get high level information on the Voltha cluster
rpc GetVoltha(google.protobuf.Empty) returns(Voltha) {
option (google.api.http) = {
get: "/api/v1"
};
}
// List all Voltha cluster instances
rpc ListVolthaInstances(google.protobuf.Empty) returns(VolthaInstances) {
option (google.api.http) = {
get: "/api/v1/instances"
};
option (voltha.yang_xml_tag).xml_tag = 'items';
option (voltha.yang_xml_tag).list_items_name = 'items';
}
// Get details on a Voltha cluster instance
rpc GetVolthaInstance(ID) returns(VolthaInstance) {
option (google.api.http) = {
get: "/api/v1/instances/{id}"
};
}
// List all active adapters (plugins) in the Voltha cluster
rpc ListAdapters(google.protobuf.Empty) returns(Adapters) {
option (google.api.http) = {
get: "/api/v1/adapters"
};
option (voltha.yang_xml_tag).xml_tag = 'adapters';
}
// List all logical devices managed by the Voltha cluster
rpc ListLogicalDevices(google.protobuf.Empty) returns(LogicalDevices) {
option (google.api.http) = {
get: "/api/v1/logical_devices"
};
option (voltha.yang_xml_tag).xml_tag = 'logical_devices';
}
// List all reachable logical devices managed by the Voltha cluster
rpc ListReachableLogicalDevices(google.protobuf.Empty) returns
(LogicalDevices) {
option (google.api.http) = {
get: "/api/v1/reachable_logical_devices"
};
}
// Get additional information on a given logical device
rpc GetLogicalDevice(ID) returns(LogicalDevice) {
option (google.api.http) = {
get: "/api/v1/logical_devices/{id}"
};
}
// List ports of a logical device
rpc ListLogicalDevicePorts(ID) returns(LogicalPorts) {
option (google.api.http) = {
get: "/api/v1/logical_devices/{id}/ports"
};
option (voltha.yang_xml_tag).xml_tag = 'ports';
}
// Gets a logical device port
rpc GetLogicalDevicePort(LogicalPortId) returns(LogicalPort) {
option (google.api.http) = {
get: "/api/v1/logical_devices/{id}/ports/{port_id}"
};
option (voltha.yang_xml_tag).xml_tag = 'port';
}
// Enables a logical device port
rpc EnableLogicalDevicePort(LogicalPortId) returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/logical_devices/{id}/ports/{port_id}/enable"
};
}
// Disables a logical device port
rpc DisableLogicalDevicePort(LogicalPortId) returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/logical_devices/{id}/ports/{port_id}/disable"
};
}
// List all flows of a logical device
rpc ListLogicalDeviceFlows(ID) returns(openflow_13.Flows) {
option (google.api.http) = {
get: "/api/v1/logical_devices/{id}/flows"
};
option (voltha.yang_xml_tag).xml_tag = 'flows';
option (voltha.yang_xml_tag).list_items_name = 'items';
}
// Update flow table for logical device
rpc UpdateLogicalDeviceFlowTable(openflow_13.FlowTableUpdate)
returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/logical_devices/{id}/flows"
body: "*"
};
}
// Update meter table for logical device
rpc UpdateLogicalDeviceMeterTable(openflow_13.MeterModUpdate)
returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/logical_devices/{id}/meters"
body: "*"
};
}
// List all meters of a logical device
rpc ListLogicalDeviceMeters(ID) returns (openflow_13.Meters) {
option (google.api.http) = {
get: "/api/v1/logical_devices/{id}/meters"
};
option (voltha.yang_xml_tag).xml_tag = 'meters';
option (voltha.yang_xml_tag).list_items_name = 'items';
}
// List all flow groups of a logical device
rpc ListLogicalDeviceFlowGroups(ID) returns(openflow_13.FlowGroups) {
option (google.api.http) = {
get: "/api/v1/logical_devices/{id}/flow_groups"
};
option (voltha.yang_xml_tag).xml_tag = 'flow_groups';
option (voltha.yang_xml_tag).list_items_name = 'items';
}
// Update group table for device
rpc UpdateLogicalDeviceFlowGroupTable(openflow_13.FlowGroupTableUpdate)
returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/logical_devices/{id}/flow_groups"
body: "*"
};
}
// List all physical devices controlled by the Voltha cluster
rpc ListDevices(google.protobuf.Empty) returns(Devices) {
option (google.api.http) = {
get: "/api/v1/devices"
};
option (voltha.yang_xml_tag).xml_tag = 'devices';
}
// Get more information on a given physical device
rpc GetDevice(ID) returns(Device) {
option (google.api.http) = {
get: "/api/v1/devices/{id}"
};
}
// Pre-provision a new physical device
rpc CreateDevice(Device) returns(Device) {
option (google.api.http) = {
post: "/api/v1/devices"
body: "*"
};
}
// 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.
rpc EnableDevice(ID) returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/devices/{id}/enable"
};
}
// Disable a device
rpc DisableDevice(ID) returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/devices/{id}/disable"
};
}
// Reboot a device
rpc RebootDevice(ID) returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/devices/{id}/reboot"
};
}
// Delete a device
rpc DeleteDevice(ID) returns(google.protobuf.Empty) {
option (google.api.http) = {
delete: "/api/v1/devices/{id}/delete"
};
}
// Request an image download to the standby partition
// of a device.
// Note that the call is expected to be non-blocking.
rpc DownloadImage(ImageDownload) returns(OperationResp) {
option (google.api.http) = {
post: "/api/v1/devices/{id}/image_downloads/{name}"
body: "*"
};
}
// Get image download status on a device
// The request retrieves progress on device and updates db record
rpc GetImageDownloadStatus(ImageDownload) returns(ImageDownload) {
option (google.api.http) = {
get: "/api/v1/devices/{id}/image_downloads/{name}/status"
};
}
// Get image download db record
rpc GetImageDownload(ImageDownload) returns(ImageDownload) {
option (google.api.http) = {
get: "/api/v1/devices/{id}/image_downloads/{name}"
};
}
// List image download db records for a given device
rpc ListImageDownloads(ID) returns(ImageDownloads) {
option (google.api.http) = {
get: "/api/v1/devices/{id}/image_downloads"
};
}
// Cancel an existing image download process on a device
rpc CancelImageDownload(ImageDownload) returns(OperationResp) {
option (google.api.http) = {
delete: "/api/v1/devices/{id}/image_downloads/{name}"
};
}
// 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.
rpc ActivateImageUpdate(ImageDownload) returns(OperationResp) {
option (google.api.http) = {
post: "/api/v1/devices/{id}/image_downloads/{name}/image_update"
body: "*"
};
}
// 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.
rpc RevertImageUpdate(ImageDownload) returns(OperationResp) {
option (google.api.http) = {
post: "/api/v1/devices/{id}/image_downloads/{name}/image_revert"
body: "*"
};
}
// List ports of a device
rpc ListDevicePorts(ID) returns(Ports) {
option (google.api.http) = {
get: "/api/v1/devices/{id}/ports"
};
option (voltha.yang_xml_tag).xml_tag = 'ports';
}
// List pm config of a device
rpc ListDevicePmConfigs(ID) returns(PmConfigs) {
option (google.api.http) = {
get: "/api/v1/devices/{id}/pm_configs"
};
}
// Update the pm config of a device
rpc UpdateDevicePmConfigs(voltha.PmConfigs) returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/devices/{id}/pm_configs"
body: "*"
};
}
// List all flows of a device
rpc ListDeviceFlows(ID) returns(openflow_13.Flows) {
option (google.api.http) = {
get: "/api/v1/devices/{id}/flows"
};
option (voltha.yang_xml_tag).xml_tag = 'flows';
option (voltha.yang_xml_tag).list_items_name = 'items';
}
// List all flow groups of a device
rpc ListDeviceFlowGroups(ID) returns(openflow_13.FlowGroups) {
option (google.api.http) = {
get: "/api/v1/devices/{id}/flow_groups"
};
option (voltha.yang_xml_tag).xml_tag = 'flow_groups';
option (voltha.yang_xml_tag).list_items_name = 'items';
}
// List device types known to Voltha
rpc ListDeviceTypes(google.protobuf.Empty) returns(DeviceTypes) {
option (google.api.http) = {
get: "/api/v1/device_types"
};
option (voltha.yang_xml_tag).xml_tag = 'device_types';
}
// Get additional information on a device type
rpc GetDeviceType(ID) returns(DeviceType) {
option (google.api.http) = {
get: "/api/v1/device_types/{id}"
};
}
// List all device sharding groups
rpc ListDeviceGroups(google.protobuf.Empty) returns(DeviceGroups) {
option (google.api.http) = {
get: "/api/v1/device_groups"
};
option (voltha.yang_xml_tag).xml_tag = 'device_groups';
}
// Get additional information on a device group
rpc GetDeviceGroup(ID) returns(DeviceGroup) {
option (google.api.http) = {
get: "/api/v1/device_groups/{id}"
};
}
rpc CreateAlarmFilter(AlarmFilter) returns(AlarmFilter) {
option (google.api.http) = {
post: "/api/v1/alarm_filters"
body: "*"
};
}
rpc GetAlarmFilter(ID) returns(AlarmFilter) {
option (google.api.http) = {
get: "/api/v1/alarm_filters/{id}"
};
}
rpc UpdateAlarmFilter(AlarmFilter) returns(AlarmFilter) {
option (google.api.http) = {
put: "/api/v1/alarm_filters/{id}"
body: "*"
};
}
rpc DeleteAlarmFilter(ID) returns(google.protobuf.Empty) {
option (google.api.http) = {
delete: "/api/v1/alarm_filters/{id}"
};
}
rpc ListAlarmFilters(google.protobuf.Empty) returns(AlarmFilters) {
option (google.api.http) = {
get: "/api/v1/alarm_filters"
};
}
// List all Channel Groups
rpc GetAllChannelgroupConfig(google.protobuf.Empty)
returns(bbf_fiber.AllChannelgroupConfig) {
option (google.api.http) = {
get: "/api/v1/channel_groups"
};
}
// Create Channel Group
rpc CreateChannelgroup(bbf_fiber.ChannelgroupConfig)
returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/channel_groups/{name}"
body: "*"
};
}
// Update Channel Group
rpc UpdateChannelgroup(bbf_fiber.ChannelgroupConfig)
returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/channel_groups/{name}/modify"
body: "*"
};
}
// Delete Channel Group
rpc DeleteChannelgroup(bbf_fiber.ChannelgroupConfig)
returns(google.protobuf.Empty) {
option (google.api.http) = {
delete: "/api/v1/channel_groups/{name}/delete"
};
}
// List all channel partitions
rpc GetAllChannelpartitionConfig(google.protobuf.Empty)
returns(bbf_fiber.AllChannelpartitionConfig) {
option (google.api.http) = {
get: "/api/v1/channel_partitions"
};
}
// Create a channel partition
rpc CreateChannelpartition(bbf_fiber.ChannelpartitionConfig)
returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/channel_partitions/{name}"
body: "*"
};
}
// Update a channel partition
rpc UpdateChannelpartition(bbf_fiber.ChannelpartitionConfig)
returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/channel_partitions/{name}/modify"
body: "*"
};
}
// Delete a channel partition
rpc DeleteChannelpartition(bbf_fiber.ChannelpartitionConfig)
returns(google.protobuf.Empty) {
option (google.api.http) = {
delete: "/api/v1/channel_partitions/{name}/delete"
};
}
// List all channel pairs managed by this Voltha instance
rpc GetAllChannelpairConfig(google.protobuf.Empty)
returns(bbf_fiber.AllChannelpairConfig) {
option (google.api.http) = {
get: "/api/v1/channel_pairs"
};
}
// Create a channel pair
rpc CreateChannelpair(bbf_fiber.ChannelpairConfig)
returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/channel_pairs/{name}"
body: "*"
};
}
// Update a channel pair
rpc UpdateChannelpair(bbf_fiber.ChannelpairConfig)
returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/channel_pairs/{name}/modify"
body: "*"
};
}
// Delete a channel pair
rpc DeleteChannelpair(bbf_fiber.ChannelpairConfig)
returns(google.protobuf.Empty) {
option (google.api.http) = {
delete: "/api/v1/channel_pairs/{name}/delete"
};
}
// List all channel terminations managed by this Voltha instance
rpc GetAllChannelterminationConfig(ID)
returns(bbf_fiber.AllChannelterminationConfig) {
option (google.api.http) = {
get: "/api/v1/devices/{id}/channel_terminations"
};
}
// Create a channel termination
rpc CreateChanneltermination(bbf_fiber.ChannelterminationConfig)
returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/devices/{id}/channel_terminations/{name}"
body: "*"
};
}
// Update a channel termination
rpc UpdateChanneltermination(bbf_fiber.ChannelterminationConfig)
returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/devices/{id}/channel_terminations/{name}/modify"
body: "*"
};
}
// Delete a channel termination
rpc DeleteChanneltermination(bbf_fiber.ChannelterminationConfig)
returns(google.protobuf.Empty) {
option (google.api.http) = {
delete: "/api/v1/devices/{id}/channel_terminations/{name}/delete"
};
}
// List all ont configs managed by this Voltha instance
rpc GetAllOntaniConfig(google.protobuf.Empty)
returns(bbf_fiber.AllOntaniConfig) {
option (google.api.http) = {
get: "/api/v1/ont_anis"
};
}
// Create an ont configs
rpc CreateOntani(bbf_fiber.OntaniConfig) returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/ont_anis/{name}"
body: "*"
};
}
// Update an ont configs
rpc UpdateOntani(bbf_fiber.OntaniConfig) returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/ont_anis/{name}/modify"
body: "*"
};
}
// Delete an ont configs
rpc DeleteOntani(bbf_fiber.OntaniConfig) returns(google.protobuf.Empty) {
option (google.api.http) = {
delete: "/api/v1/ont_anis/{name}/delete"
};
}
// List all vont configs managed by this Voltha instance
rpc GetAllVOntaniConfig(google.protobuf.Empty)
returns(bbf_fiber.AllVOntaniConfig) {
option (google.api.http) = {
get: "/api/v1/v_ont_anis"
};
}
// Create a vont configs
rpc CreateVOntani(bbf_fiber.VOntaniConfig) returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/v_ont_anis/{name}"
body: "*"
};
}
// Update a vont configs
rpc UpdateVOntani(bbf_fiber.VOntaniConfig) returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/v_ont_anis/{name}/modify"
body: "*"
};
}
// Delete a vont configs
rpc DeleteVOntani(bbf_fiber.VOntaniConfig) returns(google.protobuf.Empty) {
option (google.api.http) = {
delete: "/api/v1/v_ont_anis/{name}/delete"
};
}
// List all venet configs managed by this Voltha instance
rpc GetAllVEnetConfig(google.protobuf.Empty)
returns(bbf_fiber.AllVEnetConfig) {
option (google.api.http) = {
get: "/api/v1/v_enets"
};
}
// Create venet configs
rpc CreateVEnet(bbf_fiber.VEnetConfig) returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/v_enets/{name}"
body: "*"
};
}
// Update venet configs
rpc UpdateVEnet(bbf_fiber.VEnetConfig) returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/v_enets/{name}/modify"
body: "*"
};
}
// Delete venet configs
rpc DeleteVEnet(bbf_fiber.VEnetConfig) returns(google.protobuf.Empty) {
option (google.api.http) = {
delete: "/api/v1/v_enets/{name}/delete"
};
}
// List all Traffic Descriptors Profiles
rpc GetAllTrafficDescriptorProfileData(google.protobuf.Empty)
returns(bbf_fiber.AllTrafficDescriptorProfileData) {
option (google.api.http) = {
get: "/api/v1/traffic_descriptor_profiles"
};
}
// Create Traffic Descriptor Profile
rpc CreateTrafficDescriptorProfileData(
bbf_fiber.TrafficDescriptorProfileData)
returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/traffic_descriptor_profiles/{name}"
body: "*"
};
}
// Update Traffic Descriptor Profile
rpc UpdateTrafficDescriptorProfileData(
bbf_fiber.TrafficDescriptorProfileData)
returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/traffic_descriptor_profiles/{name}/modify"
body: "*"
};
}
// Delete Traffic Descriptor Profile
rpc DeleteTrafficDescriptorProfileData(
bbf_fiber.TrafficDescriptorProfileData)
returns(google.protobuf.Empty) {
option (google.api.http) = {
delete: "/api/v1/traffic_descriptor_profiles/{name}/delete"
};
}
// List all Tconts
rpc GetAllTcontsConfigData(google.protobuf.Empty)
returns(bbf_fiber.AllTcontsConfigData) {
option (google.api.http) = {
get: "/api/v1/tconts"
};
}
// Create Tcont
rpc CreateTcontsConfigData(bbf_fiber.TcontsConfigData)
returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/tconts/{name}"
body: "*"
};
}
// Update Tcont
rpc UpdateTcontsConfigData(bbf_fiber.TcontsConfigData)
returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/tconts/{name}/modify"
body: "*"
};
}
// Delete Tcont
rpc DeleteTcontsConfigData(bbf_fiber.TcontsConfigData)
returns(google.protobuf.Empty) {
option (google.api.http) = {
delete: "/api/v1/tconts/{name}/delete"
};
}
// List all Gemports
rpc GetAllGemportsConfigData(google.protobuf.Empty)
returns(bbf_fiber.AllGemportsConfigData) {
option (google.api.http) = {
get: "/api/v1/gemports"
};
}
// Create Gemport
rpc CreateGemportsConfigData(bbf_fiber.GemportsConfigData)
returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/gemports/{name}"
body: "*"
};
}
// Update Gemport
rpc UpdateGemportsConfigData(bbf_fiber.GemportsConfigData)
returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/gemports/{name}/modify"
body: "*"
};
}
// Delete Gemport
rpc DeleteGemportsConfigData(bbf_fiber.GemportsConfigData)
returns(google.protobuf.Empty) {
option (google.api.http) = {
delete: "/api/v1/gemports/{name}/delete"
};
}
// List all Multicast Gemports
rpc GetAllMulticastGemportsConfigData(google.protobuf.Empty)
returns(bbf_fiber.AllMulticastGemportsConfigData) {
option (google.api.http) = {
get: "/api/v1/multicast_gemports"
};
}
// Create Multicast Gemport
rpc CreateMulticastGemportsConfigData(
bbf_fiber.MulticastGemportsConfigData)
returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/multicast_gemports/{name}"
body: "*"
};
}
// Update Multicast Gemport
rpc UpdateMulticastGemportsConfigData(
bbf_fiber.MulticastGemportsConfigData)
returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/multicast_gemports/{name}/modify"
body: "*"
};
}
// Delete Multicast Gemport
rpc DeleteMulticastGemportsConfigData(
bbf_fiber.MulticastGemportsConfigData)
returns(google.protobuf.Empty) {
option (google.api.http) = {
delete: "/api/v1/multicast_gemports/{name}/delete"
};
}
// List all Multicast Distribution Sets
rpc GetAllMulticastDistributionSetData(google.protobuf.Empty)
returns(bbf_fiber.AllMulticastDistributionSetData) {
option (google.api.http) = {
get: "/api/v1/multicast_distibution_sets"
};
}
// Create Multicast Distribution Set
rpc CreateMulticastDistributionSetData(
bbf_fiber.MulticastDistributionSetData)
returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/multicast_distribution_sets/{name}"
body: "*"
};
}
// Update Multicast Distribution Set
rpc UpdateMulticastDistributionSetData(
bbf_fiber.MulticastDistributionSetData)
returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/multicast_distribution_sets/{name}/modify"
body: "*"
};
}
// Delete Multicast Distribution Set
rpc DeleteMulticastDistributionSetData(
bbf_fiber.MulticastDistributionSetData)
returns(google.protobuf.Empty) {
option (google.api.http) = {
delete: "/api/v1/multicast_distribution_sets/{name}/delete"
};
}
rpc GetImages(ID) returns(Images) {
option (google.api.http) = {
get: "/api/v1/devices/{id}/images"
};
}
rpc SelfTest(ID) returns(SelfTestResponse) {
option (google.api.http) = {
post: "/api/v1/devices/{id}/self_test"
};
}
// OpenOMCI MIB information
rpc GetMibDeviceData(ID) returns(omci.MibDeviceData) {
option (google.api.http) = {
get: "/api/v1/openomci/{id}/mib"
};
}
// OpenOMCI ALARM information
rpc GetAlarmDeviceData(ID) returns(alarm.AlarmDeviceData) {
option (google.api.http) = {
get: "/api/v1/openomci/{id}/alarm"
};
}
// Simulate an Alarm
rpc SimulateAlarm(SimulateAlarmRequest) returns(OperationResp) {
option (google.api.http) = {
post: "/api/v1/devices/{id}/simulate_larm"
body: "*"
};
}
}
/*
* Per-instance APIs
*
* These APIs are always served locally by the Voltha instance on which the
* call is made.
*/
service VolthaLocalService {
// Get information on this Voltha instance
rpc GetVolthaInstance(google.protobuf.Empty) returns(VolthaInstance) {
option (google.api.http) = {
get: "/api/v1/local"
};
}
// Get the health state of the Voltha instance
rpc GetHealth(google.protobuf.Empty) returns(HealthStatus) {
option (google.api.http) = {
get: "/api/v1/local/health"
};
option (voltha.yang_xml_tag).xml_tag = 'health';
}
// List all active adapters (plugins) in this Voltha instance
rpc ListAdapters(google.protobuf.Empty) returns(Adapters) {
option (google.api.http) = {
get: "/api/v1/local/adapters"
};
option (voltha.yang_xml_tag).xml_tag = 'adapters';
}
// List all logical devices managed by this Voltha instance
rpc ListLogicalDevices(google.protobuf.Empty) returns(LogicalDevices) {
option (google.api.http) = {
get: "/api/v1/local/logical_devices"
};
option (voltha.yang_xml_tag).xml_tag = 'logical_devices';
}
// List all reachable logical devices managed by this Voltha instance
rpc ListReachableLogicalDevices(google.protobuf.Empty) returns
(LogicalDevices) {
option (google.api.http) = {
get: "/api/v1/local/reachable_logical_devices"
};
}
// Get additional information on given logical device
rpc GetLogicalDevice(ID) returns(LogicalDevice) {
option (google.api.http) = {
get: "/api/v1/local/logical_devices/{id}"
};
}
// List ports of a logical device
rpc ListLogicalDevicePorts(ID) returns(LogicalPorts) {
option (google.api.http) = {
get: "/api/v1/local/logical_devices/{id}/ports"
};
option (voltha.yang_xml_tag).xml_tag = 'ports';
}
// Gets a logical device port
rpc GetLogicalDevicePort(LogicalPortId) returns(LogicalPort) {
option (google.api.http) = {
get: "/api/v1/logical_devices/{id}/ports/{port_id}"
};
option (voltha.yang_xml_tag).xml_tag = 'port';
}
// Enables a logical device port
rpc EnableLogicalDevicePort(LogicalPortId) returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/logical_devices/{id}/ports/{port_id}/enable"
};
}
// Disables a logical device port
rpc DisableLogicalDevicePort(LogicalPortId) returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/logical_devices/{id}/ports/{port_id}/disable"
};
}
// List all flows of a logical device
rpc ListLogicalDeviceFlows(ID) returns(openflow_13.Flows) {
option (google.api.http) = {
get: "/api/v1/local/logical_devices/{id}/flows"
};
option (voltha.yang_xml_tag).xml_tag = 'flows';
option (voltha.yang_xml_tag).list_items_name = 'items';
}
// Update flow table for logical device
rpc UpdateLogicalDeviceFlowTable(openflow_13.FlowTableUpdate)
returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/local/logical_devices/{id}/flows"
body: "*"
};
}
// Update meter table for logical device
rpc UpdateLogicalDeviceMeterTable(openflow_13.MeterModUpdate)
returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/logical_devices/{id}/meters"
body: "*"
};
}
// List all flow groups of a logical device
rpc ListLogicalDeviceFlowGroups(ID) returns(openflow_13.FlowGroups) {
option (google.api.http) = {
get: "/api/v1/local/logical_devices/{id}/flow_groups"
};
option (voltha.yang_xml_tag).xml_tag = 'flow_groups';
option (voltha.yang_xml_tag).list_items_name = 'items';
}
// List all meters of a logical device
rpc ListLogicalDeviceMeters(ID) returns (openflow_13.Meters) {
option (google.api.http) = {
get: "/api/v1/local/logical_devices/{id}/meters"
};
option (voltha.yang_xml_tag).xml_tag = 'meters';
option (voltha.yang_xml_tag).list_items_name = 'items';
}
// Update group table for logical device
rpc UpdateLogicalDeviceFlowGroupTable(openflow_13.FlowGroupTableUpdate)
returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/local/logical_devices/{id}/flow_groups"
body: "*"
};
}
// List all physical devices managed by this Voltha instance
rpc ListDevices(google.protobuf.Empty) returns(Devices) {
option (google.api.http) = {
get: "/api/v1/local/devices"
};
option (voltha.yang_xml_tag).xml_tag = 'devices';
}
// Get additional information on this device
rpc GetDevice(ID) returns(Device) {
option (google.api.http) = {
get: "/api/v1/local/devices/{id}"
};
}
// Pre-provision a new physical device
rpc CreateDevice(Device) returns(Device) {
option (google.api.http) = {
post: "/api/v1/local/devices"
body: "*"
};
}
// Enable a device. If the device was in pre-provisioned state then it
// will tansition to ENABLED state. If it was is DISABLED state then it
// will tansition to ENABLED state as well.
rpc EnableDevice(ID) returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/local/devices/{id}/enable"
};
}
// Disable a device
rpc DisableDevice(ID) returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/local/devices/{id}/disable"
};
}
// Reboot a device
rpc RebootDevice(ID) returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/local/devices/{id}/reboot"
};
}
// Delete a device
rpc DeleteDevice(ID) returns(google.protobuf.Empty) {
option (google.api.http) = {
delete: "/api/v1/local/devices/{id}/delete"
};
}
// Request an image download to the standby partition
// of a device.
// Note that the call is expected to be non-blocking
rpc DownloadImage(ImageDownload) returns(OperationResp) {
option (google.api.http) = {
post: "/api/v1/local/devices/{id}/image_downloads/{name}"
body: "*"
};
}
// Get image download status on a device
// The request retrieves progress on device and updates db record
rpc GetImageDownloadStatus(ImageDownload) returns(ImageDownload) {
option (google.api.http) = {
get: "/api/v1/local/devices/{id}/image_downloads/{name}/status"
};
}
// Get image download db record
rpc GetImageDownload(ImageDownload) returns(ImageDownload) {
option (google.api.http) = {
get: "/api/v1/local/devices/{id}/image_downloads/{name}"
};
}
// List image download db records for a given device
rpc ListImageDownloads(ID) returns(ImageDownloads) {
option (google.api.http) = {
get: "/api/v1/local/devices/{id}/image_downloads"
};
}
// Cancel an image download process on a device
rpc CancelImageDownload(ImageDownload) returns(OperationResp) {
option (google.api.http) = {
delete: "/api/v1/local/devices/{id}/image_downloads/{name}"
};
}
// Install and Activate a downloaded image from standby
// partition to active partition
// A subsequent call to reboot will cause the newly update image
// to become active
// Note that the call is expected to be non-blocking.
rpc ActivateImageUpdate(ImageDownload) returns(OperationResp) {
option (google.api.http) = {
post: "/api/v1/local/devices/{id}/image_downloads/{name}/image_update"
body: "*"
};
}
// Uninstall and deactivate an image update on a device,
// and revert back to pre update image
// A subsequent call to reboot will cause the pre update image
// to become active
// Note that the call is expected to be non-blocking.
rpc RevertImageUpdate(ImageDownload) returns(OperationResp) {
option (google.api.http) = {
post: "/api/v1/local/devices/{id}/image_downloads/{name}/image_revert"
body: "*"
};
}
// List ports of a device
rpc ListDevicePorts(ID) returns(Ports) {
option (google.api.http) = {
get: "/api/v1/local/devices/{id}/ports"
};
option (voltha.yang_xml_tag).xml_tag = 'ports';
}
// List pm config of a device
rpc ListDevicePmConfigs(ID) returns(PmConfigs) {
option (google.api.http) = {
get: "/api/v1/local/devices/{id}/pm_configs"
};
}
// Update the pm config of a device
rpc UpdateDevicePmConfigs(voltha.PmConfigs) returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/local/devices/{id}/pm_configs"
body: "*"
};
}
// List all flows of a device
rpc ListDeviceFlows(ID) returns(openflow_13.Flows) {
option (google.api.http) = {
get: "/api/v1/local/devices/{id}/flows"
};
option (voltha.yang_xml_tag).xml_tag = 'flows';
option (voltha.yang_xml_tag).list_items_name = 'items';
}
// List all flow groups of a device
rpc ListDeviceFlowGroups(ID) returns(openflow_13.FlowGroups) {
option (google.api.http) = {
get: "/api/v1/local/devices/{id}/flow_groups"
};
option (voltha.yang_xml_tag).xml_tag = 'flow_groups';
option (voltha.yang_xml_tag).list_items_name = 'items';
}
// List device types know to Voltha instance
rpc ListDeviceTypes(google.protobuf.Empty) returns(DeviceTypes) {
option (google.api.http) = {
get: "/api/v1/local/device_types"
};
option (voltha.yang_xml_tag).xml_tag = 'device_types';
}
// Get additional information on given device type
rpc GetDeviceType(ID) returns(DeviceType) {
option (google.api.http) = {
get: "/api/v1/local/device_types/{id}"
};
}
// List device sharding groups managed by this Voltha instance
rpc ListDeviceGroups(google.protobuf.Empty) returns(DeviceGroups) {
option (google.api.http) = {
get: "/api/v1/local/device_groups"
};
option (voltha.yang_xml_tag).xml_tag = 'device_groups';
}
// Get more information on given device shard
rpc GetDeviceGroup(ID) returns(DeviceGroup) {
option (google.api.http) = {
get: "/api/v1/local/device_groups/{id}"
};
}
// List all channel groups managed by this Voltha instance
rpc GetAllChannelgroupConfig(google.protobuf.Empty)
returns(bbf_fiber.AllChannelgroupConfig) {
option (google.api.http) = {
get: "/api/v1/local/channel_groups"
};
}
// Create a channel group
rpc CreateChannelgroup(bbf_fiber.ChannelgroupConfig)
returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/local/channel_groups/{name}"
body: "*"
};
}
// Update a channel group
rpc UpdateChannelgroup(bbf_fiber.ChannelgroupConfig)
returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/local/channel_groups/{name}/modify"
body: "*"
};
}
// Delate a channel group
rpc DeleteChannelgroup(bbf_fiber.ChannelgroupConfig)
returns(google.protobuf.Empty) {
option (google.api.http) = {
delete: "/api/v1/local/channel_groups/{name}/delete"
};
}
// List all channel partitions managed by this Voltha instance
rpc GetAllChannelpartitionConfig(google.protobuf.Empty)
returns(bbf_fiber.AllChannelpartitionConfig) {
option (google.api.http) = {
get: "/api/v1/local/channel_partitions"
};
}
// Create a channel partition
rpc CreateChannelpartition(bbf_fiber.ChannelpartitionConfig)
returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/local/channel_partitions/{name}"
body: "*"
};
}
// Update a channel partition
rpc UpdateChannelpartition(bbf_fiber.ChannelpartitionConfig)
returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/local/channel_partitions/{name}/modify"
body: "*"
};
}
// Delete a channel partition
rpc DeleteChannelpartition(bbf_fiber.ChannelpartitionConfig)
returns(google.protobuf.Empty) {
option (google.api.http) = {
delete: "/api/v1/local/channel_partitions/{name}/delete"
};
}
// List all channel pairs managed by this Voltha instance
rpc GetAllChannelpairConfig(google.protobuf.Empty)
returns(bbf_fiber.AllChannelpairConfig) {
option (google.api.http) = {
get: "/api/v1/local/channel_pairs"
};
}
// Create a channel pair
rpc CreateChannelpair(bbf_fiber.ChannelpairConfig)
returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/local/channel_pairs/{name}"
body: "*"
};
}
// Update a channel pair
rpc UpdateChannelpair(bbf_fiber.ChannelpairConfig)
returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/local/channel_pairs/{name}/modify"
body: "*"
};
}
// Delete a channel pair
rpc DeleteChannelpair(bbf_fiber.ChannelpairConfig)
returns(google.protobuf.Empty) {
option (google.api.http) = {
delete: "/api/v1/local/channel_pairs/{name}/delete"
};
}
// List all channel terminations managed by this Voltha instance
rpc GetAllChannelterminationConfig(ID)
returns(bbf_fiber.AllChannelterminationConfig) {
option (google.api.http) = {
get: "/api/v1/local/devices/{id}/channel_terminations"
};
}
// Create a channel termination
rpc CreateChanneltermination(bbf_fiber.ChannelterminationConfig)
returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/local/devices/{id}/channel_terminations/{name}"
body: "*"
};
}
// Update a channel termination
rpc UpdateChanneltermination(bbf_fiber.ChannelterminationConfig)
returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/local/devices/{id}/channel_terminations/{name}/modify"
body: "*"
};
}
// Delete a channel termination
rpc DeleteChanneltermination(bbf_fiber.ChannelterminationConfig)
returns(google.protobuf.Empty) {
option (google.api.http) = {
delete: "/api/v1/local/devices/{id}/channel_terminations/{name}/delete"
};
}
// List all ont configs managed by this Voltha instance
rpc GetAllOntaniConfig(google.protobuf.Empty)
returns(bbf_fiber.AllOntaniConfig) {
option (google.api.http) = {
get: "/api/v1/local/ont_anis"
};
}
// Create an ont configs
rpc CreateOntani(bbf_fiber.OntaniConfig) returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/local/ont_anis/{name}"
body: "*"
};
}
// Update an ont configs
rpc UpdateOntani(bbf_fiber.OntaniConfig) returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/local/ont_anis/{name}/modify"
body: "*"
};
}
// Delete an ont configs
rpc DeleteOntani(bbf_fiber.OntaniConfig) returns(google.protobuf.Empty) {
option (google.api.http) = {
delete: "/api/v1/local/ont_anis/{name}/delete"
};
}
// List all vont configs managed by this Voltha instance
rpc GetAllVOntaniConfig(google.protobuf.Empty)
returns(bbf_fiber.AllVOntaniConfig) {
option (google.api.http) = {
get: "/api/v1/local/v_ont_anis"
};
}
// Create a vont configs
rpc CreateVOntani(bbf_fiber.VOntaniConfig) returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/local/v_ont_anis/{name}"
body: "*"
};
}
// Update a vont configs
rpc UpdateVOntani(bbf_fiber.VOntaniConfig) returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/local/v_ont_anis/{name}/modify"
body: "*"
};
}
// Delete a vont configs
rpc DeleteVOntani(bbf_fiber.VOntaniConfig) returns(google.protobuf.Empty) {
option (google.api.http) = {
delete: "/api/v1/local/v_ont_anis/{name}/delete"
};
}
// List all venet configs managed by this Voltha instance
rpc GetAllVEnetConfig(google.protobuf.Empty)
returns(bbf_fiber.AllVEnetConfig) {
option (google.api.http) = {
get: "/api/v1/local/v_enets"
};
}
// Create venet configs
rpc CreateVEnet(bbf_fiber.VEnetConfig) returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/local/v_enets/{name}"
body: "*"
};
}
// Update venet configs
rpc UpdateVEnet(bbf_fiber.VEnetConfig) returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/local/v_enets/{name}/modify"
body: "*"
};
}
// Delete venet configs
rpc DeleteVEnet(bbf_fiber.VEnetConfig) returns(google.protobuf.Empty) {
option (google.api.http) = {
delete: "/api/v1/local/v_enets/{name}/delete"
};
}
// List all Traffic Descriptor Profiles
rpc GetAllTrafficDescriptorProfileData(google.protobuf.Empty)
returns(bbf_fiber.AllTrafficDescriptorProfileData) {
option (google.api.http) = {
get: "/api/v1/local/traffic_descriptor_profiles"
};
}
// Create Traffic Descriptor Profile
rpc CreateTrafficDescriptorProfileData(
bbf_fiber.TrafficDescriptorProfileData)
returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/local/traffic_descriptor_profiles/{name}"
body: "*"
};
}
// Update Traffic Descriptor Profile
rpc UpdateTrafficDescriptorProfileData(
bbf_fiber.TrafficDescriptorProfileData)
returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/local/traffic_descriptor_profiles/{name}/modify"
body: "*"
};
}
// Delete Traffic Descriptor Profile
rpc DeleteTrafficDescriptorProfileData(
bbf_fiber.TrafficDescriptorProfileData)
returns(google.protobuf.Empty) {
option (google.api.http) = {
delete: "/api/v1/local/traffic_descriptor_profiles/{name}/delete"
};
}
// List all Tconts
rpc GetAllTcontsConfigData(google.protobuf.Empty)
returns(bbf_fiber.AllTcontsConfigData) {
option (google.api.http) = {
get: "/api/v1/local/tconts"
};
}
// Create Tcont
rpc CreateTcontsConfigData(bbf_fiber.TcontsConfigData)
returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/local/tconts/{name}"
body: "*"
};
}
// Update Tcont
rpc UpdateTcontsConfigData(bbf_fiber.TcontsConfigData)
returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/local/tconts/{name}/modify"
body: "*"
};
}
// Delete Tcont
rpc DeleteTcontsConfigData(bbf_fiber.TcontsConfigData)
returns(google.protobuf.Empty) {
option (google.api.http) = {
delete: "/api/v1/local/tconts/{name}/delete"
};
}
// List all Gemports
rpc GetAllGemportsConfigData(google.protobuf.Empty)
returns(bbf_fiber.AllGemportsConfigData) {
option (google.api.http) = {
get: "/api/v1/local/gemports"
};
}
// Create Gemport
rpc CreateGemportsConfigData(bbf_fiber.GemportsConfigData)
returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/local/gemports/{name}"
body: "*"
};
}
// Update Gemport
rpc UpdateGemportsConfigData(bbf_fiber.GemportsConfigData)
returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/local/gemports/{name}/modify"
body: "*"
};
}
// Delete Gemport
rpc DeleteGemportsConfigData(bbf_fiber.GemportsConfigData)
returns(google.protobuf.Empty) {
option (google.api.http) = {
delete: "/api/v1/local/gemports/{name}/delete"
};
}
// List all Multicast Gemports
rpc GetAllMulticastGemportsConfigData(google.protobuf.Empty)
returns(bbf_fiber.AllMulticastGemportsConfigData) {
option (google.api.http) = {
get: "/api/v1/local/multicast_gemports"
};
}
// Create Multicast Gemport
rpc CreateMulticastGemportsConfigData(
bbf_fiber.MulticastGemportsConfigData)
returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/local/multicast_gemports/{name}"
body: "*"
};
}
// Update Multicast Gemport
rpc UpdateMulticastGemportsConfigData(
bbf_fiber.MulticastGemportsConfigData)
returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/local/multicast_gemports/{name}/modify"
body: "*"
};
}
// Delete Multicast Gemport
rpc DeleteMulticastGemportsConfigData(
bbf_fiber.MulticastGemportsConfigData)
returns(google.protobuf.Empty) {
option (google.api.http) = {
delete: "/api/v1/local/multicast_gemports/{name}/delete"
};
}
// List all Multicast Distribution Sets
rpc GetAllMulticastDistributionSetData(google.protobuf.Empty)
returns(bbf_fiber.AllMulticastDistributionSetData) {
option (google.api.http) = {
get: "/api/v1/local/multicast_distibution_sets"
};
}
// Create Multicast Distribution Set
rpc CreateMulticastDistributionSetData(
bbf_fiber.MulticastDistributionSetData)
returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/local/multicast_distribution_sets/{name}"
body: "*"
};
}
// Update Multicast Distribution Set
rpc UpdateMulticastDistributionSetData(
bbf_fiber.MulticastDistributionSetData)
returns(google.protobuf.Empty) {
option (google.api.http) = {
post: "/api/v1/local/multicast_distribution_sets/{name}/modify"
body: "*"
};
}
// Delete Multicast Distribution Set
rpc DeleteMulticastDistributionSetData(
bbf_fiber.MulticastDistributionSetData)
returns(google.protobuf.Empty) {
option (google.api.http) = {
delete: "/api/v1/local/multicast_distribution_sets/{name}/delete"
};
}
// Stream control packets to the dataplane
rpc StreamPacketsOut(stream openflow_13.PacketOut)
returns(google.protobuf.Empty) {
// This does not have an HTTP representation
}
// Receive control packet stream
rpc ReceivePacketsIn(google.protobuf.Empty)
returns(stream openflow_13.PacketIn) {
// This does not have an HTTP representation
}
rpc ReceiveChangeEvents(google.protobuf.Empty)
returns(stream openflow_13.ChangeEvent) {
// This does not have an HTTP representation
}
rpc CreateAlarmFilter(AlarmFilter) returns(AlarmFilter) {
option (google.api.http) = {
post: "/api/v1/local/alarm_filters"
body: "*"
};
}
rpc GetAlarmFilter(ID) returns(AlarmFilter) {
option (google.api.http) = {
get: "/api/v1/local/alarm_filters/{id}"
};
}
rpc UpdateAlarmFilter(AlarmFilter) returns(AlarmFilter) {
option (google.api.http) = {
put: "/api/v1/local/alarm_filters/{id}"
body: "*"
};
}
rpc DeleteAlarmFilter(ID) returns(google.protobuf.Empty) {
option (google.api.http) = {
delete: "/api/v1/local/alarm_filters/{id}"
};
}
rpc ListAlarmFilters(google.protobuf.Empty) returns(AlarmFilters) {
option (google.api.http) = {
get: "/api/v1/local/alarm_filters"
};
}
rpc GetImages(ID) returns(Images) {
option (google.api.http) = {
get: "/api/v1/local/devices/{id}/images"
};
}
rpc SelfTest(ID) returns(SelfTestResponse) {
option (google.api.http) = {
post: "/api/v1/local/devices/{id}/self_test"
};
}
rpc Subscribe(OfAgentSubscriber) returns (OfAgentSubscriber) {}
// OpenOMCI MIB information
rpc GetMibDeviceData(ID) returns(omci.MibDeviceData) {
option (google.api.http) = {
get: "/api/v1/openomci/{id}/mib"
};
}
// OpenOMCI ALARM information
rpc GetAlarmDeviceData(ID) returns(alarm.AlarmDeviceData) {
option (google.api.http) = {
get: "/api/v1/openomci/{id}/alarm"
};
}
// Simulate an Alarm
rpc SimulateAlarm(SimulateAlarmRequest) returns(OperationResp) {
option (google.api.http) = {
post: "/api/v1/devices/{id}/simulate_alarm"
body: "*"
};
}
}