
module ietf-logical_device {


    namespace "urn:opencord:params:xml:ns:voltha:ietf-logical_device";
    prefix logical_device;

    import ietf-openflow_13 { prefix openflow_13 ; }

    organization "CORD";
    contact
        " Any name";

    description
        "";

    revision "2016-11-15" {
        description "Initial revision.";
        reference "reference";
    }


    grouping LogicalPort {
        description
            "";
        leaf id {
            type  string; 
            description
                "";
        }

        container ofp_port {
            uses  openflow_13:ofp_port;

            description
                "";
        }

        leaf device_id {
            type  string; 
            description
                "";
        }

        leaf device_port_no {
            type  uint32; 
            description
                "";
        }

        leaf root_port {
            type  boolean; 
            description
                "";
        }

    }

    grouping LogicalPorts {
        description
            "";
        list items {
            key "id";
            uses  LogicalPort;

            description
                "";
        }

    }

    grouping LogicalDevice {
        description
            "";
        leaf id {
            type  string; 
            description
                "unique id of logical device";
        }

        leaf datapath_id {
            type  uint64; 
            description
                "unique datapath id for the logical device (used by the SDN controller)";
        }

        container desc {
            uses  openflow_13:ofp_desc;

            description
                "device description";
        }

        container switch_features {
            uses  openflow_13:ofp_switch_features;

            description
                "device features";
        }

        leaf root_device_id {
            type  string; 
            description
                "name of the root device anchoring logical device";
        }

        list ports {
            key "id";
            uses  LogicalPort;

            description
                "logical device ports";
        }

        container flows {
            uses  openflow_13:Flows;

            description
                "flows configured on the logical device";
        }

        container flow_groups {
            uses  openflow_13:FlowGroups;

            description
                "flow groups configured on the logical device";
        }

    }

    grouping LogicalDevices {
        description
            "";
        list items {
            key "id";
            uses  LogicalDevice;

            description
                "";
        }

    }

}