
/*
 * 
 *   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:ietf:params:xml:ns:yang:nfvo:vnffgd";
  prefix "vnffgd";

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

  import rw-project {
    prefix "rw-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 "/rw-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
      }
    }
  }
}
