/*
 *
 *   Copyright 2018 CTTC
 *   Copyright 2018 Telefonica Investigacion y Desarrollo S.A.U.
 *
 *   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 netslice-instantiation-parameters {
  //header information
  yang-version 1;
  namespace "urn:etsi:osm:yang:netslice-instantiation-parameters";
  prefix "netslice-instantiation-parameters";
  
  import nsd {
    prefix "nsd";
  }

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

  import nst {
    prefix "nst";
  }
  
  import instantiation-parameters {
    prefix "instantiation-parameters";
  }

  //revision history
  revision 2018-11-28 {
    description "Initial version";
  }

  grouping netslice_params {
    leaf vimAccountId {
      mandatory true;
      type string;
    }
    leaf ssh_keys {
      type string;
    }
    list netslice-subnet {
      key "id";
      uses netslice_subnet_params;
    }
    list netslice-vld {
      key "name";
      uses netslice_vld_params;
    }
  }

  grouping netslice_subnet_params {
    leaf id {
      mandatory true;
      type string;
    }
    uses instantiation-parameters:ns_params;
  }

  grouping netslice_vld_params {
    uses instantiation-parameters:vld_common_params;
    list nss-connection-point-ref {
      key "nss-ref nsd-connection-point-ref";
      leaf nss-ref {
        description "Reference to slice subnet";
        type leafref {
          path "/nst:nst/nst:netslice-subnet/nst:id";
        }
      }
      leaf nsd-connection-point-ref {
        type leafref {
          path "/nsd:nsd-catalog/nsd:nsd/nsd:connection-point/nsd:name";
        }
      }
      leaf ip-address{
        type inet:ip-address;
      }
    }
  }

}
