blob: d4400f8547ab5ce11fd8a2ea60195fb1905d13ba [file] [log] [blame]
option app_label = "fabric";
option name = "fabric";
message FabricService(Service) {
option verbose_name = "Fabric Service";
option description = "Service that manages and configures fabric switches in ONOS";
optional bool autoconfig = 1 [
help_text="Automatically apply addresses from AddressManager service to Fabric",
default = True];
}
message Switch(XOSBase) {
option verbose_name = "Fabric Switch";
option description = "An individual fabric switch managed by ONOS";
option sync_implemented = "True";
required string ofId = 1 [
help_text = "The unique OpenFlow ID of the fabric switch",
max_length = 19];
required string name = 2 [
help_text = "The unique name of the fabric switch",
max_length = 256];
required string driver = 3 [
help_text = "The driver used by the SDN controller",
default = "ofdpa3",
max_length = 256];
required int32 ipv4NodeSid = 4 [
help_text = "The MPLS label used by the switch [17 - 1048576]"];
required string ipv4Loopback = 5 [
help_text = "Fabric loopback interface",
max_length = 17];
required string routerMac = 6 [
help_text = "MAC address of the fabric switch used for all interfaces",
max_length = 17];
required bool isEdgeRouter = 7 [
help_text="True if the fabric switch is a leaf, False if it is a spine",
default = True];
optional string managementAddress = 8 [
help_text = "Address where this switch can be managed",
feedback_state = True,
max_length = 1024];
optional string pipeconf = 9 [
help_text = "Pipeline configuration",
max_length = 1024];
optional manytoone fabric->FabricService:switch = 10:1013 [
help_text = "The Fabric Service which owns this switch",
db_index = True];
}
message SwitchPort(XOSBase) {
option verbose_name = "Fabric Switch Port";
option description = "A port on a fabric switch";
option sync_implemented = "True";
required manytoone switch->Switch:ports = 1:1001 [
help_text = "The fabric switch the port belongs to",
db_index = True,
tosca_key=True];
required int32 portId = 2 [
help_text = "The unique port OpenFlow port ID",
tosca_key=True];
required bool host_learning = 3 [
help_text = "whether or not to enable autodiscovery",
default = True];
optional string admin_state = 4 [
help_text = "desired administrative state of port",
choices = "(('enabled', 'enabled'), ('disabled', 'disabled'))",
default = "enabled",
max_length = 32];
optional string oper_status = 5 [
help_text = "operational status of port",
choices = "(('enabled', 'enabled'), ('disabled', 'disabled'))",
feedback_state = True,
max_length = 32];
optional string kind = 6 [
help_text = "type of device attached to port",
choices = "(('access', 'access'), ('internet', 'internet'))",
max_length = 32];
}
message PortInterface(XOSBase) {
option verbose_name = "Fabric Port Interface";
option description = "An interface on a port on a fabric switch";
required manytoone port->SwitchPort:interfaces = 1:1001 [
help_text = "The fabric switch port the interface belongs to",
db_index = True];
required string name = 2 [
help_text = "The unique name of the fabric switch port",
max_length = 256];
optional int32 vlanUntagged = 3 [
help_text = "The optional untagged VLAN ID for the interface"];
}
message NodeToSwitchPort(XOSBase) {
option verbose_name = "Node to switch port";
option description = "Compute Node connection to a Fabric switch port";
option policy_implemented = "True";
required manytoone port->SwitchPort:node_to_switch_ports = 1:1002 [
help_text = "The fabric switch port the node is connected to",
db_index = True,
tosca_key=True];
required manytoone node->Node:node_to_switch_ports = 2:1004 [
help_text = "The ComputeNode this port is connected to",
db_index = True,
tosca_key=True];
}
message FabricIpAddress(XOSBase) {
option verbose_name = "IP address";
option description = "An IP address associated with a port on a fabric switch";
required manytoone interface->PortInterface:ips = 1:1001 [
help_text = "The port interface the IP address belongs to",
db_index = True,
tosca_key = True];
required string ip = 2 [
help_text = "The unique IP address (either IPv4 or IPv6 / netmask)",
max_length = 52,
tosca_key = True,
unique_with = "interface"];
optional string description = 3 [
help_text = "A short description of the IP address",
max_length = 256];
}