
/*
 * 
 *   Copyright 2016-2017 RIFT.IO Inc
 *
 *   Licensed under the Apache License, Version 2.0 (the "License");
 *   you may not use this file except in compliance with the License.
 *   You may obtain a copy of the License at
 *
 *       http://www.apache.org/licenses/LICENSE-2.0
 *
 *   Unless required by applicable law or agreed to in writing, software
 *   distributed under the License is distributed on an "AS IS" BASIS,
 *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *   See the License for the specific language governing permissions and
 *   limitations under the License.
 *
 *
 */

module vnffgd
{
  namespace "urn:etsi:osm:yang:vnffgd";
  prefix "vnffgd";

  import ietf-yang-types {
    prefix "yang";
  }

  import osm-project {
    prefix "osm-project";
  }

  revision 2017-02-08 {
    description
      "Update model to support projects.";
  }

  revision 2014-10-27 {
    description
      "Initial revision. This YANG file defines 
       the VNF Forwarding Graph Descriptor (VNFFGD)";
    reference
      "Derived from earlier versions of base YANG files";
  }

  augment "/osm-project:project" {
    container vnffgd-catalog {

      list vnffgd {
        key "id";

        leaf name {
          description "VNF Forwarding Graph Descriptor name.";
          type string;
        }

        leaf id {
          description "Identifier for the VNFFGD.";
          type yang:uuid;
        }

        leaf provider {
          description "Provider of the VNFFGD.";
          type string;
        }

        leaf description {
          description "Description of the VNFFGD.";
          type string;
        }

        leaf version {
          description "Version of the VNFFGD";
          type string;
        }

        //TODO: Add more content here
      }
    }
  }
}
