module tapi-oam {
    namespace "urn:onf:otcc:yang:tapi-oam";
    prefix tapi-oam;
    import tapi-common {
        prefix tapi-common;
    }
    import tapi-connectivity {
        prefix tapi-connectivity;
    }
    import tapi-topology {
        prefix tapi-topology;
    }
    organization "ONF OTCC (Open Transport Configuration & Control) Project";
    contact "
        Project Web: <https://wiki.opennetworking.org/display/OTCC/TAPI>
        Project List: <mailto:transport-api@opennetworking.org>
        Editor: Karthik Sethuraman
                <mailto:karthik.sethuraman@necam.com>";
    description "
        This module contains TAPI OAM Model definitions.
        Source: TapiOam.uml
        Copyright (c) 2018 Open Networking Foundation (ONF). All rights reserved.
        License: This module is distributed under the Apache License 2.0";
    revision 2018-03-07 {
        description "ONF Transport API version 2.0.2
        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
        Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.2.md>";
        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.2/UML>";
    }
    revision 2018-02-16 {
        description "ONF Transport API version 2.0.1
        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
        Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.1.md>";
        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.1/UML>";
    }
    revision 2018-01-02 {
        description "ONF Transport API version 2.0.0
        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
        Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.0.md>";
        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.0/UML>";
    }
    augment "/tapi-common:context" {
        uses oam-context;
        description "Augments the base TAPI Context with OamService information";
    }
    augment "/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point" {
        uses mep-mip-list;
        description "none";
    }
    augment "/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-connectivity:connection-end-point" {
        uses mep-mip-list;
        description "none";
    }
    
    /*************************
    * definitions of references
    *************************/
    grouping oam-service-ref {
        leaf oam-service-id {
            type leafref {
                path '/tapi-common:context/tapi-oam:oam-service/tapi-oam:uuid';
            }
            description "none";
        }
        description "none";
    }

    grouping oam-service-end-point-ref {
    	uses oam-service-ref;
    	leaf oam-service-end-point-id {
	    	type leafref {
	            path '/tapi-common:context/tapi-oam:oam-service/tapi-oam:end-point/tapi-oam:local-id';
	        }
	    	description "none";
    	}
    	description "none";
    }
    grouping meg-ref {
        leaf meg-id {
            type leafref {
            	path '/tapi-common:context/tapi-oam:meg/tapi-oam:uuid';
            }
            description "none";
        }
        description "none";
    }

    grouping mep-ref {
    	uses meg-ref;
        leaf mep-id {
            type leafref {
            	path '/tapi-common:context/tapi-oam:meg/tapi-oam:mep/tapi-oam:local-id';
            }
            description "none";
        }
        description "none";
    }
    
    grouping mip-ref {
    	uses meg-ref;
        leaf mip-id {
            type leafref {
            	path '/tapi-common:context/tapi-oam:meg/tapi-oam:mip/tapi-oam:local-id';
            }
            description "none";
        }
        description "none";
    }
    
    grouping me-ref {
    	uses meg-ref;
        leaf me-id {
            type leafref {
            	path '/tapi-common:context/tapi-oam:meg/tapi-oam:me/tapi-oam:local-id';
            }
            description "none";
        }
        description "none";
    }
    
    /***********************
    * package object-classes
    **********************/ 
        grouping mep {
            leaf-list on-demand-measurement-job {
                type leafref {
                    path '/tapi-common:context/tapi-oam:oam-service/tapi-oam:end-point/tapi-oam:on-demand-measurement-job/tapi-oam:local-id';
                }
                config false;
                description "none";
            }
            leaf-list pro-active-measurement-job {
                type leafref {
                    path '/tapi-common:context/tapi-oam:oam-service/tapi-oam:end-point/tapi-oam:pro-active-measurement-job/tapi-oam:local-id';
                }
                config false;
                description "none";
            }
            leaf layer-protocol-name {
                type tapi-common:layer-protocol-name;
                config false;
                description "none";
            }
            leaf meg-identifier {
                type string;
                config false;
                description "none";
            }
            leaf mep-identifier {
                type string;
                config false;
                description "none";
            }
            leaf-list peer-mep-identifier {
                type string;
                config false;
                min-elements 1;
                description "none";
            }
            leaf monitored-direction {
                type tapi-common:termination-direction;
                description "none";
            }
            uses tapi-common:local-class;
            description "none";
        }
        grouping on-demand-measurement-job {
            uses tapi-common:local-class;
            uses tapi-common:admin-state-pac;
            description "none";
        }
        grouping pro-active-measurement-job {
            uses tapi-common:local-class;
            uses tapi-common:admin-state-pac;
            description "none";
        }
        grouping meg {
            list me {
                key 'local-id';
                config false;
                min-elements 1;
                uses me;
                description "none";
            }
            list mep {
                key 'local-id';
                config false;
                uses mep;
                description "1. ME may have 0 MEPs (case of transit domains where at least 1 MIP is present)
                    2. ME may have 1 MEP (case of edge domaind, where the peer MEP is ouside the managed domain)
                    3. ME may have 2 MEPs";
            }
            list mip {
                key 'local-id';
                config false;
                uses mip;
                description "ME may 0, 1, or more MIPs";
            }
            leaf meg-level {
                type uint64;
                config false;
                description "none";
            }
            uses tapi-common:resource-spec;
            description "none";
        }
        grouping me {
            list mep {
                uses mep-ref;
                key 'meg-id mep-id';
                config false;
                max-elements 2;
                description "none";
            }
            list mip {
            	uses mip-ref;
                key 'meg-id mip-id';
                config false;
                description "none";
            }
            container connection-route {
            	uses tapi-connectivity:route-ref;
                config false;
                description "none";
            }
            uses tapi-common:local-class;
            description "none";
        }
        grouping mip {
            leaf layer-protocol-name {
                type tapi-common:layer-protocol-name;
                config false;
                description "none";
            }
            uses tapi-common:local-class;
            description "none";
        }
        grouping oam-service {
            container meg {
            	uses meg-ref;
                config false;
                description "none";
            }
            list end-point {
                key 'local-id';
                min-elements 1;
                uses oam-service-end-point;
                description "none";
            }
            uses tapi-common:service-spec;
            description "none";
        }
        grouping oam-context {
            list oam-service {
                key 'uuid';
                uses oam-service;
                description "none";
            }
            list meg {
                key 'uuid';
                config false;
                uses meg;
                description "none";
            }
            description "none";
        }
        grouping oam-service-end-point {
        	container service-interface-point {
                uses tapi-common:service-interface-point-ref;
                description "none";
            }
        	container connectivity-service-end-point {
                uses tapi-connectivity:connectivity-service-end-point-ref;
                description "none";
            }
            list pro-active-measurement-job {
                key 'local-id';
                uses pro-active-measurement-job;
                description "none";
            }
            list on-demand-measurement-job {
                key 'local-id';
                uses on-demand-measurement-job;
                description "none";
            }
            container associated-mep {
                uses mep-ref;
                config false;
                description "none";
            }
            leaf direction {
                type tapi-common:port-direction;
                config false;
                description "none";
            }
            uses tapi-common:local-class;
            description "none";
        }
        grouping mep-mip-list {
            list mip {
            	uses mip-ref;
                key 'meg-id mip-id';
                description "none";
            }
            list mep {
            	uses mep-ref;
                key 'meg-id mep-id';
                description "none";
            }
            description "none";
        }

    /***********************
    * package interfaces
    **********************/ 
        rpc abort-measurement-job {
            description "none";
        }
        rpc disable-pro-active-measurement-job {
            description "none";
        }
        rpc enable-pro-active-measurement-job {
            description "none";
        }
        rpc establish-measurement-job {
            description "none";
        }
        rpc get-contained-measurement-jobs {
            description "none";
        }
        rpc terminate-measurement-job {
            description "none";
        }
        rpc get-all-contained-meg {
            description "none";
        }

}
