| /* |
| * |
| * 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-image-mgmt.yang |
| * @author Austin Cormier |
| * @date 2016/06/01 |
| * @brief Image Management Yang |
| */ |
| |
| module rw-image-mgmt |
| { |
| namespace "http://riftio.com/ns/riftware-1.0/rw-image-mgmt"; |
| prefix "rw-image-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"; |
| } |
| |
| revision 2016-06-01 { |
| description |
| "Initial revision."; |
| } |
| |
| typedef job-status { |
| type enumeration { |
| enum QUEUED; |
| enum IN_PROGRESS; |
| enum CANCELLING; |
| enum CANCELLED; |
| enum COMPLETED; |
| enum FAILED; |
| } |
| } |
| |
| typedef upload-task-status { |
| type enumeration { |
| enum QUEUED; |
| enum CHECK_IMAGE_EXISTS; |
| enum UPLOADING; |
| enum CANCELLING; |
| enum CANCELLED; |
| enum COMPLETED; |
| enum FAILED; |
| } |
| } |
| |
| grouping image-upload-info { |
| leaf image-id { |
| description "The image id that exists in the image catalog"; |
| type string; |
| } |
| |
| leaf image-name { |
| description "The image name that exists in the image catalog"; |
| type string; |
| } |
| |
| leaf image-checksum { |
| description "The image md5 checksum"; |
| type string; |
| } |
| } |
| |
| grouping upload-task-status { |
| leaf status { |
| description "The status of the upload task"; |
| type upload-task-status; |
| default QUEUED; |
| } |
| |
| leaf detail { |
| description "Detailed upload status message"; |
| type string; |
| } |
| |
| leaf progress-percent { |
| description "The image upload progress percentage (0-100)"; |
| type uint8; |
| default 0; |
| } |
| |
| leaf bytes_written { |
| description "The number of bytes written"; |
| 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 "The image upload start time (unix epoch)"; |
| type uint32; |
| } |
| |
| leaf stop-time { |
| description "The image upload stop time (unix epoch)"; |
| type uint32; |
| } |
| } |
| |
| grouping upload-task { |
| leaf cloud-account { |
| description "The cloud account to upload the image to"; |
| type leafref { |
| path "/rwcloud:cloud/rwcloud:account/rwcloud:name"; |
| } |
| } |
| |
| uses image-upload-info; |
| uses upload-task-status; |
| } |
| |
| container upload-jobs { |
| rwpb:msg-new UploadJobs; |
| description "Image upload jobs"; |
| config false; |
| |
| list job { |
| rwpb:msg-new UploadJob; |
| key "id"; |
| |
| leaf id { |
| description "Unique image upload job-id"; |
| type uint32; |
| } |
| |
| leaf status { |
| description "Current job status"; |
| type job-status; |
| } |
| |
| leaf start-time { |
| description "The job start time (unix epoch)"; |
| type uint32; |
| } |
| |
| leaf stop-time { |
| description "The job stop time (unix epoch)"; |
| type uint32; |
| } |
| |
| list upload-tasks { |
| rwpb:msg-new UploadTask; |
| description "The upload tasks that are part of this job"; |
| uses upload-task; |
| } |
| } |
| } |
| |
| rpc create-upload-job { |
| input { |
| rwpb:msg-new CreateUploadJob; |
| |
| choice image-selection { |
| case onboarded-image { |
| description "Use an image previously onboarded in the image catalog"; |
| container onboarded-image { |
| uses image-upload-info; |
| } |
| } |
| |
| case external-url { |
| description "Use an HTTP URL to pull the image from"; |
| |
| container external-url { |
| leaf image-url { |
| description "The image HTTP URL to pull the image from"; |
| type string; |
| } |
| |
| uses image-upload-info; |
| |
| leaf disk-format { |
| description "Format of the Disk"; |
| type rwcal:disk-format; |
| } |
| |
| leaf container-format { |
| description "Format of the container"; |
| type rwcal:container-format; |
| default "bare"; |
| } |
| } |
| } |
| } |
| |
| leaf-list cloud-account { |
| description "List of cloud accounts to upload the image to"; |
| type leafref { |
| path "/rwcloud:cloud/rwcloud:account/rwcloud:name"; |
| } |
| } |
| } |
| |
| output { |
| rwpb:msg-new CreateUploadJobOutput; |
| leaf job-id { |
| description "The upload job-id to cancel"; |
| type uint32; |
| } |
| } |
| } |
| |
| rpc cancel-upload-job { |
| input { |
| rwpb:msg-new CancelUploadJob; |
| leaf job-id { |
| type uint32; |
| } |
| } |
| } |
| } |