
module ietf-adapter {


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

    import ietf-common { prefix common ; }
    import ietf-any { prefix any ; }

    organization "CORD";
    contact
        " Any name";

    description
        "";

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


    grouping AdapterConfig {
        description
            "";
        leaf log_level {
            type  common:LogLevel;

            description
                "Common adapter config attributes here";
        }

        container additional_config {
            uses  any:Any;

            description
                "Custom (vendor-specific) configuration attributes";
        }

    }

    grouping Adapter {
        description
            "Adapter (software plugin)";
        leaf id {
            type  string; 
            description
                "Unique name of adapter, matching the python packate name under
 voltha adapters.";
        }

        leaf vendor {
            type  string; 
            description
                "";
        }

        leaf version {
            type  string; 
            description
                "";
        }

        container config {
            uses  AdapterConfig;

            description
                "Adapter configuration";
        }

        container additional_description {
            uses  any:Any;

            description
                "Custom descriptors and custom configuration";
        }

        list logical_device_ids {
            key "logical_device_ids";
            leaf logical_device_ids {
                type  string; 
                description
                    "Logical devices  owned ";
            }
            description
                "Logical devices  owned ";
        }

    }

    grouping Adapters {
        description
            "";
        list items {
            key "id";
            uses  Adapter;

            description
                "";
        }

    }

}