141 - Support for Package Management in SO
[osm/SO.git] / rwlaunchpad / plugins / yang / rw-staging-mgmt.yang
diff --git a/rwlaunchpad/plugins/yang/rw-staging-mgmt.yang b/rwlaunchpad/plugins/yang/rw-staging-mgmt.yang
new file mode 100644 (file)
index 0000000..d5722cd
--- /dev/null
@@ -0,0 +1,153 @@
+/*
+ *
+ *   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-staging-mgmt.yang
+ * @author Varun Prasad
+ * @date 2016/09/21
+ * @brief Pacakage Management Yang
+ */
+
+module rw-staging-mgmt
+{
+  namespace "http://riftio.com/ns/riftware-1.0/rw-staging-mgmt";
+  prefix "rw-staging-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";
+  }
+
+  revision 2016-06-01 {
+    description
+      "Initial revision.";
+  }
+
+  typedef staging-area-status {
+    type enumeration {
+      enum LIVE;
+      enum EXPIRED;
+    }
+  }
+
+  grouping staging-area-config {
+    leaf package-type {
+      mandatory true;
+      type manotypes:package-type;
+    }
+
+    leaf name {
+      description "name of the binary";
+      type string;
+    }
+
+    leaf validity-time {
+      description "lifetime of the staging area (in seconds)";
+      type uint64;
+      default 3600;
+    }
+  }
+
+  grouping staging-area-meta {
+
+    leaf status {
+      description "The status of the staging area";
+      type staging-area-status;
+    }
+
+    leaf created-time {
+      description "start time (unix epoch)";
+      type uint32;
+    }
+
+    leaf deleted-time {
+      description "stop time (unix epoch)";
+      type uint32;
+    }
+
+    leaf size {
+      description "size of the binary in bytes";
+      type uint64;
+    }
+
+    leaf path {
+      description "Path of the staging area";
+      type string;
+    }
+
+  }
+
+  container staging-areas {
+    rwpb:msg-new StagingAreas;
+    description "Staging Areas";
+    config false;
+
+    list staging-area {
+      rwpb:msg-new StagingArea;
+      key "area-id";
+
+      leaf area-id {
+        description "Staging Area ID";
+        type string;
+      }
+
+      uses staging-area-config;
+      uses staging-area-meta;
+    }
+  }
+
+
+  rpc create-staging-area {
+    description "Creates a staging area for the upload.";
+
+    input {
+      uses staging-area-config;
+    }
+
+    output {
+      leaf port {
+        type uint32;
+      }
+
+      leaf endpoint {
+        description "Endpoint that contains all the package-related data";
+        type string;
+      }
+    }
+  }
+}
\ No newline at end of file