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];
}

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];
}
