blob: de56e554b714c1e7bb5a159158277b8ea4636a7e [file] [log] [blame]
/*
*
* Copyright 2016 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.
*
*
*/
/**
* @file rw-pkg-mgmt.yang
* @author Varun Prasad
* @date 2016/09/21
* @brief Pacakage Management Yang
*/
module rw-pkg-mgmt
{
namespace "http://riftio.com/ns/riftware-1.0/rw-pkg-mgmt";
prefix "rw-pkg-mgmt";
import ietf-yang-types {
prefix "yang";
}
import rw-pb-ext {
prefix "rwpb";
}
import rw-cli-ext {
prefix "rwcli";
}
import rw-cloud {
prefix "rwcloud";
}
import rwcal {
prefix "rwcal";
}
import mano-types {
prefix "manotypes";
}
import rw-vnfd {
prefix "rwvnfd";
}
import rw-nsd {
prefix "rwnsd";
}
revision 2016-06-01 {
description
"Initial revision.";
}
typedef task-status {
type enumeration {
enum QUEUED;
enum IN_PROGRESS;
enum DOWNLOADING;
enum CANCELLED;
enum COMPLETED;
enum FAILED;
}
}
typedef export-schema {
type enumeration {
enum RIFT;
enum MANO;
}
}
typedef export-grammar {
type enumeration {
enum OSM;
enum TOSCA;
}
}
typedef export-format {
type enumeration {
enum YAML;
enum JSON;
}
}
grouping external-url-data {
leaf external-url {
description "Url to download";
type string;
}
leaf username {
description "username if the url uses authentication";
type string;
}
leaf password {
description "password if the url uses authentication";
type string;
}
}
grouping package-identifer {
leaf package-type {
description "Type of the package";
type manotypes:package-type;
}
leaf package-id {
description "Id of the package";
type string;
}
}
grouping package-file-identifer {
uses package-identifer;
leaf package-path {
description "Relative path in the package";
type string;
}
}
grouping download-task-status {
leaf status {
description "The status of the download task";
type task-status;
default QUEUED;
}
leaf detail {
description "Detailed download status message";
type string;
}
leaf progress-percent {
description "The download progress percentage (0-100)";
type uint8;
default 0;
}
leaf bytes_downloaded {
description "The number of bytes downloaded";
type uint64;
default 0;
}
leaf bytes_total {
description "The total number of bytes to write";
type uint64;
default 0;
}
leaf bytes_per_second {
description "The total number of bytes written per second";
type uint32;
default 0;
}
leaf start-time {
description "start time (unix epoch)";
type uint32;
}
leaf stop-time {
description "stop time (unix epoch)";
type uint32;
}
}
container download-jobs {
rwpb:msg-new DownloadJobs;
description "Download jobs";
config false;
list job {
rwpb:msg-new DownloadJob;
key "download-id";
leaf download-id {
description "Unique UUID";
type string;
}
leaf url {
description "URL of the download";
type string;
}
uses package-file-identifer;
uses download-task-status;
}
}
rpc get-package-endpoint {
description "Retrieves the endpoint for the descriptor";
input {
uses package-identifer;
}
output {
leaf endpoint {
description "Endpoint that contains all the package-related data";
type string;
}
}
}
rpc get-package-schema {
description "Retrieves the schema for the package type";
input {
leaf package-type {
description "Type of the package";
type manotypes:package-type;
}
}
output {
leaf-list schema {
description "List of all top level directories for the package.";
type string;
}
}
}
rpc package-create {
description "Creates a new package";
input {
uses package-identifer;
uses external-url-data;
}
output {
leaf transaction-id {
description "Valid ID to track the status of the task";
type string;
}
}
}
rpc package-update {
description "Creates a new package";
input {
uses package-identifer;
uses external-url-data;
}
output {
leaf transaction-id {
description "Valid ID to track the status of the task";
type string;
}
}
}
rpc package-export {
description "Export a package";
input {
uses package-identifer;
leaf export-schema {
description "Schema to export";
type export-schema;
default RIFT;
}
leaf export-grammar {
description "Schema to export";
type export-grammar;
default OSM;
}
leaf export-format {
description "Format to export";
type export-format;
default YAML;
}
}
output {
leaf transaction-id {
description "Valid ID to track the status of the task";
type string;
}
leaf filename {
description "Valid ID to track the status of the task";
type string;
}
}
}
rpc package-file-add {
description "Retrieves the file from the URL and store it in the package";
input {
uses package-file-identifer;
uses external-url-data;
}
output {
leaf task-id {
description "Valid ID to track the status of the task";
type string;
}
}
}
rpc package-file-delete {
description "Retrieves the file from the URL and store it in the package";
input {
uses package-file-identifer;
}
output {
leaf status {
description "Status of the delte operation";
type string;
}
leaf error-trace {
description "Trace in case of a failure";
type string;
}
}
}
}