WikiStart: draft-junsheng-cloud-vrm-00.txt

File draft-junsheng-cloud-vrm-00.txt, 92.5 KB (added by chu.junsheng@…, 10 years ago)

Virtual resource management for Cloud and Data Center environment.

Line 
1
2
3
4OPSA Working Group                                                J. Chu
5Internet-Draft                                                       ZTE
6Intended status: Standards Track                           B. Khasnabish
7Expires: December 28, 2011                                 ZTE USA, Inc.
8                                                                 Y. Meng
9                                                                     ZTE
10                                                           June 26, 2011
11
12
13                  Virtual Resource Management in Cloud
14                    draft-junsheng-cloud-vrm-00.txt
15
16Abstract
17
18   In current Cloud and Data Center (DC) environment, the manageable
19   virtualized resources aggregated by the Resource Management Platform
20   (RMP) may be supplied by different types of hypervisor
21   implementations.  The RMP needs to support a variety of hypervisor
22   APIs to allow access, management and integration of different types
23   of resources.  In order to decouple the RMP from any particular
24   hypervisor implementation, a unified API needs to be developed.  This
25   draft presents the requirements and preliminary implementation
26   considerations for such an API.
27
28Status of this Memo
29
30   This Internet-Draft is submitted in full conformance with the
31   provisions of BCP 78 and BCP 79.
32
33   Internet-Drafts are working documents of the Internet Engineering
34   Task Force (IETF).  Note that other groups may also distribute
35   working documents as Internet-Drafts.  The list of current Internet-
36   Drafts is at http://datatracker.ietf.org/drafts/current/.
37
38   Internet-Drafts are draft documents valid for a maximum of six months
39   and may be updated, replaced, or obsoleted by other documents at any
40   time.  It is inappropriate to use Internet-Drafts as reference
41   material or to cite them other than as "work in progress."
42
43   This Internet-Draft will expire on December 28, 2011.
44
45Copyright Notice
46
47   Copyright (c) 2011 IETF Trust and the persons identified as the
48   document authors.  All rights reserved.
49
50   This document is subject to BCP 78 and the IETF Trust's Legal
51   Provisions Relating to IETF Documents
52
53
54
55Chu, et al.             Expires December 28, 2011               [Page 1]
56
57Internet-Draft    Virtual Resource Management in Cloud         June 2011
58
59
60   (http://trustee.ietf.org/license-info) in effect on the date of
61   publication of this document.  Please review these documents
62   carefully, as they describe your rights and restrictions with respect
63   to this document.  Code Components extracted from this document must
64   include Simplified BSD License text as described in Section 4.e of
65   the Trust Legal Provisions and are provided without warranty as
66   described in the Simplified BSD License.
67
68   This document may contain material from IETF Documents or IETF
69   Contributions published or made publicly available before November
70   10, 2008.  The person(s) controlling the copyright in some of this
71   material may not have granted the IETF Trust the right to allow
72   modifications of such material outside the IETF Standards Process.
73   Without obtaining an adequate license from the person(s) controlling
74   the copyright in such materials, this document may not be modified
75   outside the IETF Standards Process, and derivative works of it may
76   not be created outside the IETF Standards Process, except to format
77   it for publication as an RFC or to translate it into languages other
78   than English.
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111Chu, et al.             Expires December 28, 2011               [Page 2]
112
113Internet-Draft    Virtual Resource Management in Cloud         June 2011
114
115
116Table of Contents
117
118   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  4
119   2.  Terminology  . . . . . . . . . . . . . . . . . . . . . . . . .  5
120   3.  Requirements . . . . . . . . . . . . . . . . . . . . . . . . .  6
121     3.1.  Overview of Resource Management Architecture . . . . . . .  6
122     3.2.  Problem Statement  . . . . . . . . . . . . . . . . . . . .  8
123     3.3.  Resource Management Standard Gaps  . . . . . . . . . . . . 10
124     3.4.  Interface Requirements . . . . . . . . . . . . . . . . . . 12
125     3.5.  VRM system with a unified API  . . . . . . . . . . . . . . 12
126   4.  REST used in Cloud Resource Management . . . . . . . . . . . . 14
127     4.1.  REST Design Best for Cloud Resource Management . . . . . . 14
128     4.2.  REST in practice . . . . . . . . . . . . . . . . . . . . . 15
129       4.2.1.  IBM WebSphere CloudBurst API . . . . . . . . . . . . . 15
130       4.2.2.  Sun Cloud API  . . . . . . . . . . . . . . . . . . . . 16
131       4.2.3.  Oracle Cloud Resource Model API  . . . . . . . . . . . 17
132       4.2.4.  Rackspace Cloud Server API . . . . . . . . . . . . . . 18
133       4.2.5.  VMware API . . . . . . . . . . . . . . . . . . . . . . 18
134       4.2.6.  OGF/OCCI . . . . . . . . . . . . . . . . . . . . . . . 20
135       4.2.7.  SNIA/CDMI  . . . . . . . . . . . . . . . . . . . . . . 21
136   5.  REST-based VRM API . . . . . . . . . . . . . . . . . . . . . . 23
137     5.1.  Hierarchical Cloud Resources . . . . . . . . . . . . . . . 23
138     5.2.  Transport Protocol . . . . . . . . . . . . . . . . . . . . 24
139     5.3.  URI Space  . . . . . . . . . . . . . . . . . . . . . . . . 24
140     5.4.  HTTP Header  . . . . . . . . . . . . . . . . . . . . . . . 24
141       5.4.1.  Request Headers  . . . . . . . . . . . . . . . . . . . 24
142       5.4.2.  Response Headers . . . . . . . . . . . . . . . . . . . 25
143       5.4.3.  HTTP Status Codes  . . . . . . . . . . . . . . . . . . 26
144       5.4.4.  Media Type . . . . . . . . . . . . . . . . . . . . . . 29
145     5.5.  Resource Representations . . . . . . . . . . . . . . . . . 29
146       5.5.1.  Cloud  . . . . . . . . . . . . . . . . . . . . . . . . 29
147       5.5.2.  Template . . . . . . . . . . . . . . . . . . . . . . . 30
148       5.5.3.  VDC  . . . . . . . . . . . . . . . . . . . . . . . . . 35
149       5.5.4.  Resource Pool  . . . . . . . . . . . . . . . . . . . . 36
150       5.5.5.  Virtual Machine  . . . . . . . . . . . . . . . . . . . 38
151       5.5.6.  Volume . . . . . . . . . . . . . . . . . . . . . . . . 40
152       5.5.7.  Virtual Network  . . . . . . . . . . . . . . . . . . . 42
153       5.5.8.  Host . . . . . . . . . . . . . . . . . . . . . . . . . 46
154       5.5.9.  Snapshot . . . . . . . . . . . . . . . . . . . . . . . 47
155       5.5.10. Archive  . . . . . . . . . . . . . . . . . . . . . . . 48
156   6.  Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . 50
157   7.  Security Considerations  . . . . . . . . . . . . . . . . . . . 51
158   8.  Acknowledgement  . . . . . . . . . . . . . . . . . . . . . . . 52
159   9.  IANA Considerations  . . . . . . . . . . . . . . . . . . . . . 53
160   10. Normative references . . . . . . . . . . . . . . . . . . . . . 54
161   Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 55
162
163
164
165
166
167Chu, et al.             Expires December 28, 2011               [Page 3]
168
169Internet-Draft    Virtual Resource Management in Cloud         June 2011
170
171
1721.  Introduction
173
174   Based on the principle to simplify resource management, a unified,
175   simple and lightweight Virtual Resource Management (VRM) API is
176   required.  This VRM API is RESTful (Representational State Transfer)
177   style based, supporting basic resource management functions, such as
178   resource (de)registration, resource request, resource scheduling,
179   resource access, resource configuration, resource binding, etc.  This
180   API can be used in the interfaces of Resource Client (RC), Resource
181   Manager (RM), and Resource Provider (RP) by using pairwise
182   affiliation.
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223Chu, et al.             Expires December 28, 2011               [Page 4]
224
225Internet-Draft    Virtual Resource Management in Cloud         June 2011
226
227
2282.  Terminology
229
230   Resource Pool:
231       A resource pool is a set of resources available for assignment
232       to services or applications. Resources in the resource pool can
233       be assigned exclusively or shared by other resource consumer(s).
234
235   Archive:
236       An archive is a file-based representation of the state of a
237       virtual machine at a given time. The archive includes
238       configuration and disk data. Archives are useful for storing
239       states that an administrator might want to return the VM to the
240       same state of that point repeatedly.
241
242   Snapshot:
243       A snapshot is a collection of historical records (such as backup,
244       clone or archive of virtual machine stored in Volume), as well
245       as the place they are located. Snapshots contain primary source
246       documents that have accumulated over the course of the lifetime
247       of a resource or resource pool.
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279Chu, et al.             Expires December 28, 2011               [Page 5]
280
281Internet-Draft    Virtual Resource Management in Cloud         June 2011
282
283
2843.  Requirements
285
2863.1.  Overview of Resource Management Architecture
287
288   Resource management provides an efficient and effective way to
289   access, control, manage, deploy, schedule and bind resources when
290   they are provided by resource providers and requested by resource
291   clients.  The architecture of resource management system includes the
292   functional entities as listed in Figure 1.
293
294
295       _________                 _________                 _________
296      /         \               /         \               /         \
297     /  Resource \             /  Virtual  \             /   Cloud   \
298    /    PooL     \_ _(4)_ _ _/   Resource  \____(5)____/    System   \
299    \   (RPL)     / Resource  \   Manager   /  System   \  Management /
300     \           /  Inquiry    \   (VRM)   /Configuration\   (CSM)   /
301      \_________/               \_________/               \_________/
302                                /         \               /
303                         (2)Resource  (1)Resource    (5)System
304                           Request   (De)Register   Configuration
305                    _________/               \_________/
306                   /         \               /         \
307                  /  Virtual  \             /  Virtual  \
308                 /   Resource  \____(3)____/   Resource  \
309                 \   Client    / Resource  \   Provider  /
310                  \   (VRC)   / Utilization \   (VRP)   /
311                   \_________/               \_________/
312
313          Figure 1: Overview of Resource Management Architecture
314
315
316
317   The following five types of function entities exist in the
318   architecture.
319
320   o  Virtual Resource Manager (VRM).
321
322      *  VRM provides registry of virtual resources to cloud service
323         providers and allocation of virtual resources to resource
324         clients (consumers).  This arises from the need to
325         overcommitment resources, that is, when demand exceeds the
326         capacity that single host/cluster can provide.
327
328      *  VRM has its focus on providing flexibility, transparency and
329         reliability.
330
331
332
333
334
335Chu, et al.             Expires December 28, 2011               [Page 6]
336
337Internet-Draft    Virtual Resource Management in Cloud         June 2011
338
339
340   o  Virtual Resource Provider (VRP)
341
342      *  VRP is the entity which provides virtualized resources to the
343         cloud environment.  In the architecture above, it mainly refers
344         to the hypervisors (virtualized case) and hosts (traditional
345         non-virtualized case).
346
347   o  Virtual Resource Client (VRC)
348
349      *  VRC refers to the entity which consumes cloud resources to
350         perform any task, such as instantiation of services or
351         applications.
352
353   o  Cloud System Management (CSM)
354
355      *  CSM provides monitoring and administration of the RMP with the
356         objective to keep the cloud system operating normally.
357
358   o  Resource Pool (RPL)
359
360      *  RPL is a collection of virtualized resources abstracted from
361         physical resources, and it can be used to hierarchically
362         partition the available virtualized resources.  RPL can be
363         further divided into child RPLs.
364
365      *  Resources in the RPL can be used exclusively by one VRC or can
366         be shared among several VRCs.
367
368      *  A set of allocated resources from (child) RPL with its setting
369         data can be used to constitute virtual DC, virtual LAN or
370         virtual Cluster, etc.
371
372   The interfaces between the pairwise function entities is as follows.
373
374   1.  Resource Register/Deregister Interface.
375
376       *  The interface is between VRP and VRM.
377
378       *  When powered on, VRP registers to VRM immediately to deliver
379          resources.
380
381       *  When powered off, VRP deregisters to VRM to cancel the
382          availability of resources.
383
384   2.  Resource Request Interface.
385
386       *  The interface is between VRC and VRM.
387
388
389
390
391Chu, et al.             Expires December 28, 2011               [Page 7]
392
393Internet-Draft    Virtual Resource Management in Cloud         June 2011
394
395
396       *  When VRC needs resources to perform services, it requests VRM
397          to provide the requisite resources.  If the request is
398          successful, the VRC will get eligible virtual resources.
399
400       *  When VRC needs to get status related information of some
401          resources, it requests VRM to provide the resources
402          information.  If the request is successful, VRC will update
403          the presentations of the resources in the client.
404
405   3.  Resource Utilization Interface.
406
407       *  The interface is between VRC and VRP.
408
409       *  When requested resources are allocated, VRC interacts with VRP
410          to bind and utilize the allocated resources for allocated
411          time.
412
413   4.  Resource Inquiry Interface.
414
415       *  The interface is between VRM and RPL.
416
417       *  When VRM receives resource request/inquiry from VRC, it
418          inquire RPL to check the required resources from the delivered
419          resources.
420
421   5.  System Configuration Interface.
422
423       *  The interface is between CSM and VRM, or CSM and VRP.
424
425       *  The interface is used by CSM to monitor, configure and manage
426          the RMP.
427
4283.2.  Problem Statement
429
430   There are various reasons and deployment scenarios where multiple
431   types of hypervisors (such as VMware ESX/ESXi, Citrix Xen Server,
432   Oracle VM, Microsoft Hyper-V, ZEN/KVM, etc.) need to coexist in one
433   virualized environment (such as Cloud or DC).
434
435   o  Applications/Services running on a hypervisor may gain better
436      support or performance by running on the other different one.
437
438   o  The existing hypervisor can't satisfy the required features or
439      functions, such as disaster recovery, service continuity,
440      security, reporting, etc.
441
442   o  New system requirements or virtual machine demands can be served
443      more efficiently or cost-effectively on a different hypervisor.
444
445
446
447Chu, et al.             Expires December 28, 2011               [Page 8]
448
449Internet-Draft    Virtual Resource Management in Cloud         June 2011
450
451
452   o  Elimination of hypervisor vendor lock-in and avoidance of service
453      unavailability when system upgrade or patching fails.
454
455   o  Multiple choices can be offered to customers so that they can
456      select their preferred platforms.
457
458   With multiple hypervisors providing different types of resources to
459   the virtualized environment (such as Cloud or DC), it is difficult
460   for RMP to efficiently manage and coordinate the resources.
461
462   o  Different hypervisors provide different VRM APIs and use different
463      transport protocols.
464
465   o  Different virtualization platforms provide different views of
466      hierarchical resources.
467
468   o  Different hypervisors have different ways to describe resource
469      attributes.
470
471   When the RMP consists of resources provided by multiple types of
472   hypervisors, it needs to support different kinds of APIs.  Moreover,
473   when a new hypervisor appears or existing hypervisor upgrades, the
474   RMP needs to change accordingly.  It'll complicate the implementation
475   of the RMP.
476
477   Figure 2 shows the current RMP system supporting multiple
478   hypervisor's APIs.
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503Chu, et al.             Expires December 28, 2011               [Page 9]
504
505Internet-Draft    Virtual Resource Management in Cloud         June 2011
506
507
508                          +---------------+
509                          |Resource Client|
510                          +---------------+
511                                  |
512                                  V
513                         +----------------+     +-----------------+
514                         |Resource Manager|<----|System Management|
515                         +----------------+     +-----------------+
516                            |  |  |  |  |
517          +-----------------+  |  |  |  +------------------+
518          |            +-------+  |  +---------+           |
519          |            |          |            |           |
520        API1          API2      API3         API4        API5
521          |            |          |            |           |
522   +------+------------+----------+------------+-----------+------+
523   |      |            | Resource | Provider   |           |      |
524   |      V            V          V            V           V      |
525   | +---------+ +---------+ +---------+ +----------+ +---------+ |
526   | |   HV1   | |   HV2   | |   HV3   | |   HV4    | |   HV5   | |
527   | |  (XEN)  | |  (KVM)  | |(Hyper-V)| |(ESX/ESXi)| | (etc.)  | |
528   | +---------+ +---------+ +---------+ +----------+ +---------+ |
529   |                                                              |
530   +--------------------------------------------------------------+
531
532    Figure 2: Current RMP system with multiple hypervisor's APIs
533
534
535
5363.3.  Resource Management Standard Gaps
537
538   System Virtualization, Partitioning and Clustering (SVPC) work group,
539   chartered by DMTF, has released a series of standard profiles for
540   managing system virtualization environments, including management of
541   virtual computer systems and their associated virtual resources and
542   host computer system virtualization including resource pools and
543   resources allocation from those pools.  These profiles, all based on
544   DMTF's Common Information Model (CIM), are now publicly available and
545   are ready for implementation to reduce virtual system management
546   complexity and cost.
547
548   Objectives of the SVPC include:
549
550   o  Create profiles for the management of:
551
552      *  computer systems which are clustered for high availability or
553         high-performance computing;
554
555
556
557
558
559Chu, et al.             Expires December 28, 2011              [Page 10]
560
561Internet-Draft    Virtual Resource Management in Cloud         June 2011
562
563
564      *  virtualization of computer systems and the associated
565         resources;
566
567      *  partitioning of computer systems and the associated resources;
568
569      *  image formats for the provisioning and management of single and
570         groups of virtual systems.
571
572   o  optionally providing an application or service.
573
574   o  Create specifications for virtual machine image formats.
575
576   o  Create specifications for interoperability of virtualization
577      management.
578
579   o  White papers in support of the above objectives.
580
581   o  Work with DMTF Interoperability committee, Virtualization
582      Management Forum and System Management Forum to support an
583      interoperability initiative for virtualization management.
584
585   The work doing in SVPC WG and the problems identified from cloud and
586   DC environments are all focus on virtual system management, but each
587   concerns different aspects.  For SVPC WG, it concerns the
588   virtualization layer and the full lifecycle of the hosted virtual
589   computer systems, that is, standardize the internal realization of
590   hypervisor platforms.  The work in cloud and DC environemnts concerns
591   unified resource management platform to aggregate different types of
592   resources provided by different types of hypervisors and to provide a
593   set of virutal resources to satisfy the service deployment
594   requirements and the customers resource requst/interaction
595   requirements.
596
597   The Profiles provided by SVPC WG can't be directly used for unified
598   resource management platform in Cloud and DC enviroments to satisfy
599   applications/services deployment requirements.
600
601   o  The resource pool provided by SVPC aggregates only the homogeneous
602      type of resources.  In Cloud and DC environment, resource pool
603      means the aggregation of all types of virtual resources in the RMP
604      domain.
605
606   o  The interfaces provided by SVPC use CIM over HTTP.  In Cloud and
607      DC environment, it may be more effective to use RESTful-based
608      APIs.
609
610   o  The profiles provided by SVPC specify service for the manipulation
611      of virtual computer systems and their resources, but they do not
612
613
614
615Chu, et al.             Expires December 28, 2011              [Page 11]
616
617Internet-Draft    Virtual Resource Management in Cloud         June 2011
618
619
620      provide mechanism on how to provide a set of resources to
621      constitute a virtual DC or virtual LAN environment.
622
623   Some work that are being done in SVPC WG can be use for the unified
624   resource management in Cloud and DC enviroment.
625
626   o  The modeling of virtual computer system, resource virtualization,
627      resource allocation, and virtual system configuration helps to
628      simplify the system management and to make the relationship
629      between the host computer system and the virtual computer system
630      clearly.
631
632   o  The methods and properities defined for virtual systems, virtual
633      devices, resource pools, and allocation capabilities help RMP to
634      manage the resources in the hypervisor platform.
635
636   o  The setting data, association, and state transfer help to
637      configure the relationship between virutal resources and manage
638      the lifecycle of the virtual system.
639
6403.4.  Interface Requirements
641
642   To solve the resource management problems faced by Cloud and DC
643   environments and to simplify operations on the virtual resource
644   management, the following three requirements must be met.
645
646   o  The API needs to be hypervisor-agnostic.  It can be used by RMP to
647      form a unified resource pool.
648
649   o  The API needs to be simple and lightweight.  It can be implemented
650      with the popular technologies, such as HTTP, URI, XML, JSON, etc.
651
652   o  Resource pools or its child resource pools with the setting data
653      can be provided to satisfy the services/applications deployment
654      requirements, such as constituting Virtual DCs, virtual LANs or
655      virual Clusters.
656
6573.5.  VRM system with a unified API
658
659   Following is a RMP system architecture that satisfies the described
660   requirements above.  The unified VRM API can effectively reduce the
661   complexity of the resource management.
662
663   Figure 3 shows a RMP system supporting a unified interface to
664   different types of hypervisors.
665
666
667
668
669
670
671Chu, et al.             Expires December 28, 2011              [Page 12]
672
673Internet-Draft    Virtual Resource Management in Cloud         June 2011
674
675
676                            +---------------+
677                            |Resource Client|
678                            +---------------+
679                                    |
680                                 VRM API
681                                    |
682                                    V
683                            +----------------+      +-----------------+
684                            |Resource Manager|<-----|System Management|
685                            +----------------+      +-----------------+
686                                    |
687                                 VRM API
688                                    |
689        +-------------+-------------+-------------+-------------+
690        |             |             |             |             |
691 +------+-------------+-------------+-------------+-------------+------+
692 |      |             |    Resource | Provider    |             |      |
693 |      V             V             V             V             V      |
694 |  +-------+     +-------+     +-------+     +-------+     +-------+  |
695 |  |Adaptor|     |Adaptor|     |Adaptor|     |Adaptor|     |Adaptor|  |
696 |+---API1----+ +---API2----+ +---API3----+ +---API4----+ +---API5----+|
697 ||   HV1     | |    HV2    | |   HV3     | |   HV4     | |    HV5    ||
698 ||  (XEN)    | |   (KVM)   | | (Hyper-V) | |(ESX/ESXi) | |   (etc.)  ||
699 |+-----------+ +-----------+ +-----------+ +-----------+ +-----------+|
700 +---------------------------------------------------------------------+
701
702     Figure 3: A unified VRM API to multiple hypervisors in RMP
703
704
705   With the unified VRM API, RMP can manage all kinds of resources
706   provided by multiple hypervisors easily.  What the hypervisors need
707   to do is to convert the VRM API into the hypervisor's own API through
708   the Adaptor.
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727Chu, et al.             Expires December 28, 2011              [Page 13]
728
729Internet-Draft    Virtual Resource Management in Cloud         June 2011
730
731
7324.  REST used in Cloud Resource Management
733
7344.1.  REST Design Best for Cloud Resource Management
735
736   REST stands for Representational State Transfer, which was introduced
737   in 2000 in the doctoral dissertation of Roy Fielding (one of the
738   principal authors of the HTTP specification).  It is a software
739   architecture style for distributed systems, and typically implemented
740   in a servlet (hosting the REST service) that responds to HTTP
741   requests.  The REST service will accept HTTP requests and parse them
742   in order to determine what action to perform.  Depending on the
743   request sent, different data is sent to and returned from the
744   servlet.
745
746   The REST API documents the patterns that are available for REST
747   calls, and the actions that are available to be performed by the REST
748   service.  The API also documents the data that must be sent with a
749   REST request, and the data that is returned in a response from the
750   REST service.
751
752   REST style principles.
753
754   o  Resources are addressable in REST.  Every "thing" on your network
755      should have an ID.  With REST over HTTP, every object will have
756      its own specific URI.
757
758   o  Resources can be organized hierarchically with their URI
759      identifications.
760
761   o  A Uniform, Constrained Interface in REST.  When applying REST over
762      HTTP, the methods provided by the protocol (GET, POST, PUT, and
763      DELETE) can be used to operate resources.
764
765   o  Representation oriented in REST.  Interactions with services can
766      use different representations to describe the attributes of
767      resource.  The representations may be XML, JSON, XHTML, etc.
768
769   o  Communicate statelessly in REST.  Stateless applications are
770      easier to scale.
771
772   Compared with REST style principles, it is found that REST style
773   design is best for virtual resource management.
774
775   o  In cloud environment, physical equipments are virtualized and
776      grouped into different kinds of virtual resources, such as virtual
777      machines, virtual storages, virtual networks.  Virtual networks
778      can be further divided into V-Routers, V-Switches, V-Firewalls,
779      VPNs, V-Interfaces, V-Links which are abstracted from the physical
780
781
782
783Chu, et al.             Expires December 28, 2011              [Page 14]
784
785Internet-Draft    Virtual Resource Management in Cloud         June 2011
786
787
788      Router/Switch/NIC equipments.  All these resources can be
789      addressed by assigning a specific URI.
790
791   o  Resources in cloud can be organized hierarchically, such as,
792      partitioning cloud into many virtual DCs, partitioning a virtual
793      DC into many RPLs, and partitioning a RPL into many child RPLs.
794
795   o  In virtualization environment, operations on the resources mainly
796      focus on resource (de)registry, resource request, resource binding
797      and resource delete, so the HTTP verbs can satisfy the operation
798      requirements.
799
800   o  Attributes of resources in the resource interactions can be
801      described with XML, JSON, XHTML, etc.
802
803   o  In virtualization environment, operations on resources have no
804      change to their identifiers, so resource operations can be
805      designed as session irrelevant.
806
8074.2.  REST in practice
808
8094.2.1.  IBM WebSphere CloudBurst API
810
811   WebSphere CloudBurst Appliance is a hardware appliance that provides
812   access to WebSphere virtual images and patterns for easily, quickly
813   and repeatedly creating application environments that can be securely
814   deployed and managed in a private cloud.
815
816   WebSphere CloudBurst has several mechanisms administrators can use to
817   communicate with it.
818
819   o  Administrative console.  It provides a Web browser-based UI that
820      can be accessed to modify WebSphere CloudBurst settings, manage
821      users, cloud resources and patterns, and deploy and monitor
822      virtual systems.
823
824   o  Command-line interface.  It allows users to manage their WebSphere
825      CloudBurst appliance settings and cloud resources in a robust
826      command-line tool.
827
828   o  REST API.  It is an HTTP-based service that accepts HTTP requests
829      and performs WebSphere CloudBurst actions depending on the type of
830      request that is sent.  The REST API provides a mechanism for users
831      to work with CloudBurst without having the need for a Java runtime
832      environment.
833
834   The IBM WebSphere CloudBurst administrative console and the command
835   line interface provide a full set of WebSphere CloudBurst
836
837
838
839Chu, et al.             Expires December 28, 2011              [Page 15]
840
841Internet-Draft    Virtual Resource Management in Cloud         June 2011
842
843
844   functionality, while the REST API can only provide a subset of all of
845   the WebSphere CloudBurst features available.  The REST API is enabled
846   by default and there are no extra configuration settings needed to
847   enable it.  There is no way to disable the REST interface.  The IBM
848   WebSphere CloudBurst REST API is available to be called by way of
849   HTTPS on port 443.
850
851   The REST API supports self-signed certificate for SSL sessions used
852   by WebSphere CloudBurst appliance.
853
854   Actions the REST API can perform to the WebSphere CloudBurst
855   appliance include:
856
857   o  Certificates,
858
859   o  Cloud groups,
860
861   o  Diagnostics/Trace log files,
862
863   o  Patterns,
864
865   o  Hypervisors,
866
867   o  Networks,
868
869   o  Storage,
870
871   o  Virtual Machines,
872
873   o  Virtual Systems,
874
875   o  IP groups,
876
877   o  IP addresses,
878
8794.2.2.  Sun Cloud API
880
881   Sun Cloud API is a RESTful based Open API for creating and managing
882   cloud resources, including compute, storage, and networking
883   components.
884
885   Sun Cloud API use of REST mechanisms.
886
887   o  Uses basic verbs of HTTP, such as GET (Read), POST (Create), PUT
888      (Update), DELETE (Delete).
889
890   o  URIs are discovered from server at run-time and they are opaque to
891      users.
892
893
894
895Chu, et al.             Expires December 28, 2011              [Page 16]
896
897Internet-Draft    Virtual Resource Management in Cloud         June 2011
898
899
900   o  Allow each service provider to define their own URI space, and
901      HTTP protocol using JSON.
902
903   o  Allows usage of any programming language.
904
905   Sun Cloud API supports the following types of resources.
906
907   o  Cloud.  A top-level construct which groups all the Virtual Data
908      Centers to which an API user has access.
909
910   o  Virtual Data Center.  An isolated container which is populated
911      with Clusters, Private Virtual Networks, Public Addresses, Storage
912      Volumes, Volume Snapshots.
913
914   o  Cluster.  An administrative grouping of Virtual Machines, useful
915      for access control, copying or cloning, geographic isolation, and
916      scripting automation.
917
918   o  Virtual Machine.  A server.
919
920   o  Private Virtual Network.  A subnet, not connected to the Internet,
921      which may be used to connect Virtual Machines within a VDC.
922
923   o  Public Addresses.  A connection to the Internet.
924
925   o  Storage Volumes.  A storage resource which may be accessed via
926      WebDAV and other storage protocols.
927
928   o  Volume Snapshots.  A snapshot of the state of a Storage Volume.
929
9304.2.3.  Oracle Cloud Resource Model API
931
932   Oracle Cloud Resource Model API is based on the former Sun Cloud
933   specification.  The API follows the REST architecture style and uses
934   HTTP methods to interact with the resources to achieve provisioning,
935   associating, modifying, and retiring of entities.
936
937   Resources in Oracle Cloud Resource Model.
938
939   o  Cloud.
940
941   o  Service Template.
942
943   o  VDC.
944
945   o  Zone.
946
947
948
949
950
951Chu, et al.             Expires December 28, 2011              [Page 17]
952
953Internet-Draft    Virtual Resource Management in Cloud         June 2011
954
955
956   o  VM.
957
958   o  Volume.
959
960   o  VNet.
961
962   o  NetworkInterface.
963
964   o  Archive.
965
966   o  Snapshot.
967
968   o  AssemblyInstance.
969
970   o  ScalabilityGroup.
971
9724.2.4.  Rackspace Cloud Server API
973
974   Rackspace Cloud Servers is a compute service that provides server
975   capacity in the cloud.  Cloud Servers come in different flavors
976   (configurations) of memory, disk space, and CPU, and can be
977   provisioned in minutes.
978
979   Operations provided by Cloud Server API include.
980
981   o  Servers(Virtual Machines),
982
983   o  Server Addresses,
984
985   o  Server Actions,
986
987   o  Flavor,
988
989   o  Image,
990
991   o  Backup schedules,
992
993   o  Shared IP Groups,
994
9954.2.5.  VMware API
996
9974.2.5.1.  VMware vSphere/Infrastructure API
998
999   The VMware vSphere/Infrastructure APIs provide a way of interfacing
1000   with the Virtual Infrastructure.  They are exposed as language-
1001   neutral web services, hosted on vCenter Server and ESX Server, and
1002   are WS-I Basic Profile 1.0 compliant.  The APIs provides all the
1003   operations necessary, including life-cycle operations, to monitor and
1004
1005
1006
1007Chu, et al.             Expires December 28, 2011              [Page 18]
1008
1009Internet-Draft    Virtual Resource Management in Cloud         June 2011
1010
1011
1012   manage virtual infrastructure components like compute resources,
1013   virtual machines, networks, storage, and the like.
1014
1015   The vSphere Web Services SDK facilitates the development of the
1016   client applications that target the VMware vSphere API.  It allows
1017   building SOAP-based applications to control ESX Servers / vCenter
1018   Servers and virtual machines running on them.  The SDK comprises of
1019   WSDL files, sample code in Java and C#, various libraries, and all
1020   necessary components that are required to work with the vSphere APIs.
1021
1022   Resource types in vSphere APIs include:
1023
1024   o  Virtual Data Center,
1025
1026   o  Cluster,
1027
1028   o  Template,
1029
1030   o  Virtual Machine,
1031
1032   o  Resource Pool,
1033
1034   o  Datastore,
1035
1036   o  Network,
1037
10384.2.5.2.  VMware vCloud API
1039
1040   The VMware vCloud API provides support for developers who are
1041   building interactive clients of VMware Cloud Director using a RESTful
1042   application development style. vCloud API clients and servers
1043   communicate over HTTP, exchanging representations of vCloud objects.
1044   These representations take the form of XML elements.
1045
1046   A vCloud API client can use HTTP GET requests to browse containers
1047   such as organizations, catalogs, and vDCs.  Responses to these
1048   requests include metadata about the container itself and references
1049   to the objects it contains.  These references are provided in Link
1050   elements, which have href attributes whose values the client can use
1051   in requests to get more information about the objects themselves.
1052   This hierarchical structure of containers lends itself to graphical
1053   representation as a folder hierarchy or tree view of vCloud objects.
1054
1055   Resources the VMware vCloud API supports include:
1056
1057   o  API Versions.
1058
1059
1060
1061
1062
1063Chu, et al.             Expires December 28, 2011              [Page 19]
1064
1065Internet-Draft    Virtual Resource Management in Cloud         June 2011
1066
1067
1068   o  Log in.
1069
1070   o  Log out.
1071
1072   o  Organizations.
1073
1074   o  Network.
1075
1076   o  Catalog.
1077
1078   o  vDC.
1079
1080   o  Media Image.
1081
1082   o  vAppTemplate.
1083
10844.2.6.  OGF/OCCI
1085
1086   The Open Cloud Computing Interface (OCCI) is a RESTful-based network
1087   Protocol and API for managing cloud computing infrastructure
1088   currently being created by the Open Grid Forum.  OCCI allows for the
1089   development of interoperable tools for common tasks including
1090   deployment, autonomic scaling and monitoring.  It has since evolved
1091   into an extensible API with a strong focus on interoperability while
1092   still offering a high degree of extensibility.  The current release
1093   of the OCCI is suitable to serve many other models in addition to
1094   IaaS, including e.g.  PaaS and SaaS.
1095
1096   OCCI are described from three aspects.
1097
1098   o  OCCI Core Mode.
1099
1100      *  Core Mode defines a representation of resource types which is
1101         an abstraction of real-world resources, including the means to
1102         identify, classify, associate and extend those resources.
1103
1104      *  Any resource exposed through OCCI is a Resource or a sub-type
1105         thereof.  The Resource type contains a number of common
1106         attributes that Resource sub-types inherit.  The Resource type
1107         is complemented by the Link type which associates one Resource
1108         instance with another.  The Link type contains a number of
1109         common attributes that Link sub-types inherit.
1110
1111      *  OCCI Core Model types include Category, Kind, Mixin, Action,
1112         Entity, Resource and Link.
1113
1114
1115
1116
1117
1118
1119Chu, et al.             Expires December 28, 2011              [Page 20]
1120
1121Internet-Draft    Virtual Resource Management in Cloud         June 2011
1122
1123
1124   o  OCCI Rendering.
1125
1126      *  OCCI Rendering types include HTTP Header, XHTML5, etc.
1127
1128      *  OCCI Rendering is a lightweight yet all-encompassing means to
1129         describe infrastructure.
1130
1131      *  It provides the capability to send a native (e.g.  OVF, VMX)
1132         representation for clients that can digest such a native
1133         rendering.
1134
1135   o  OCCI Infrastructure Model
1136
1137      *  OCCI Infrastructure Model describes a particular OCCI
1138         Infrastructure extension for the IaaS domain.
1139
1140      *  The main infrastructure types defined within OCCI
1141         Infrastructure are:
1142
1143         +  Compute.  Information processing resources.
1144
1145         +  Network.  Interconnection resource and represents a L2
1146            networking resource.
1147
1148         +  Storage.  Information recording resources.
1149
1150      *  Link sub-types for the Resource types are the following:
1151
1152         +  NetworkInterface connects a Compute instance to a Network
1153            instance.
1154
1155         +  StorageLink connects a Compute instance to a Storage
1156            instance.
1157
11584.2.7.  SNIA/CDMI
1159
1160   The CDMI API provides the means to access cloud storage and to manage
1161   the data stored.
1162
1163   Metadata is a convenient mechanism in managing large amounts of data
1164   with differing requirements through expressing those requirements in
1165   such a way that underlying data services differentiate their
1166   treatment of the data to meet those requirements.
1167
1168   Resource types which are accessed through RESTful interface include:
1169
1170   o  Container.
1171
1172
1173
1174
1175Chu, et al.             Expires December 28, 2011              [Page 21]
1176
1177Internet-Draft    Virtual Resource Management in Cloud         June 2011
1178
1179
1180   o  Accounting.
1181
1182   o  DataObject.
1183
1184      *  Files.
1185
1186      *  Block Devices.
1187
1188      *  Object Stores.
1189
1190      *  Database Tables.
1191
1192   o  Capability.
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231Chu, et al.             Expires December 28, 2011              [Page 22]
1232
1233Internet-Draft    Virtual Resource Management in Cloud         June 2011
1234
1235
12365.  REST-based VRM API
1237
1238   This section specifies the representations of the resources the VRM
1239   API operates on.  The representations are made up of attributes, each
1240   with a name and value, encoded using JSON.
1241
12425.1.  Hierarchical Cloud Resources
1243
1244   The following figure illustrates the view of the hierarchical
1245   resource models defined in this document.
1246
1247
1248                        +-----------+       +-----------+
1249                        |   Cloud1  |<----->|   Cloud2  |
1250                        +-----------+       +-----------+
1251                          |       |
1252                +---------+       |
1253                |                 |
1254                V                 V
1255          +----------+       +-----------+
1256          | Template |       |    VDC    |
1257          +----------+       +-----------+
1258                               | | | | |
1259        +----------------------+ | | | +---------------------------+
1260        |            +-----------+ | +-----------+                 |
1261        |            |             |             |                 |
1262        |            |             |             V                 |
1263        |            |             |      +-----------+            |
1264        |            |             |      | Res. Pool |            |
1265        |            |             |      +-----------+            |
1266        |            |             |        | | | | |              |
1267        | +----------+-------------+--------+ | | | +------------+ |
1268        | |          | +-----------+----------+ | |              | |
1269        | |          | |           | +----------+ |              | |
1270        | |          | |           | |            |              | |
1271        V V          V V           V V            V              V V
1272    +--------+    +--------+   +----------+  +-----------+    +--------+
1273    |   VM   |--->| Volume |   | vNetwork |  | Res. Pool |    |  Host  |
1274    +--------+    +--------+   +----------+  +-----------+    +--------+
1275       |  |           |               |
1276       |  +-----------+-----------+   |
1277       |              |           |   |
1278       V              V           V   V
1279   +---------+  +----------+  +--------------+
1280   | Archive |  | Snapshot |  | vNetElements |
1281   +---------+  +----------+  +--------------+
1282
1283         Figure 4: Hierarchical Resources in cloud environment
1284
1285
1286
1287Chu, et al.             Expires December 28, 2011              [Page 23]
1288
1289Internet-Draft    Virtual Resource Management in Cloud         June 2011
1290
1291
1292   The representations of resources typically nest.  For example, the
1293   representation of Cloud will include Templates and VDCs.  VDC will
1294   include representations of VMs, Volumes, Networks, Resource Pools and
1295   Hosts.  Resource Pool will further include its child resource pools.
1296   All these resource are organized hierarchically just as shown in the
1297   figure above.
1298
12995.2.  Transport Protocol
1300
1301   The REST based VRM API is based on the Hypertext Transfer Protocol,
1302   version 1.1 (RFC 2616).  Each request will be authenticated using
1303   HTTP Basic Authentication (RFC 2617) unless otherwise noted.
1304
1305   Requests sent from clients on the public Internet (and not on a
1306   secure channel such as a VPN) MUST use the https protocol on port
1307   443.  TLS 1.1 (RFC 4346) shall be implemented by the provider and TLS
1308   1.2 (RFC 5246) is strongly encouraged.
1309
13105.3.  URI Space
1311
1312   Resources in the cloud system are identified by URI Spaces which is
1313   controlled by the server.  VDCs, VMs, Templates, Volumes, Networks
1314   and RPLs are all identified by URIs.  To begin operations, a client
1315   must know the URI for a Space.  Then, Server will yield a
1316   representation of the canonical URI space containing links to the
1317   VDCs, VMs, Templates, Volumes, Networks and RPLs of that space in
1318   response message body.
1319
13205.4.  HTTP Header
1321
1322   When using the REST based VRM API, it is necessary to be aware of
1323   certain HTTP headers that are required in every request.  A listing
1324   of those headers and a brief explanation of their uses are provided
1325   in Table 1.
1326
13275.4.1.  Request Headers
1328
1329   In requests made to implement Cloud VRM API, several specific HTTP
1330   headers are used as described in the following table:
1331
1332   Table 1.  Required HTTP request headers
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343Chu, et al.             Expires December 28, 2011              [Page 24]
1344
1345Internet-Draft    Virtual Resource Management in Cloud         June 2011
1346
1347
1348   +------------------------+------------------------------------------+
1349   | Header Name            | Description                              |
1350   +------------------------+------------------------------------------+
1351   | Accept                 | Indicates to the server what media       |
1352   |                        | type(s) this client is prepared to       |
1353   |                        | accept.  Clients should set              |
1354   |                        | application/json as the Accept value for |
1355   |                        | all requests.  Server generally sends    |
1356   |                        | back JSON (Java Script Object Notation)  |
1357   |                        | encoded data in all responses.           |
1358   |                        |                                          |
1359   | Authorization          | Identifies the user making this request. |
1360   |                        | VRM API supports basic authentication.   |
1361   |                        | "Basic" plus username and password when  |
1362   |                        | sending requests to the Server.          |
1363   |                        |                                          |
1364   | Content-Length         | Describes the size of the request        |
1365   |                        | message body.                            |
1366   |                        |                                          |
1367   | Content-Type           | Media type describing the representation |
1368   |                        | and syntax of the request message body.  |
1369   |                        |                                          |
1370   | Host                   | Identifies the host receiving the        |
1371   |                        | message.                                 |
1372   |                        |                                          |
1373   | X-CloudOPS-API-Version | Declares the specification version of    |
1374   |                        | the CloudOPS REST VRM API being used.    |
1375   |                        | As of the date of publication, the only  |
1376   |                        | valid value is 1.0.                      |
1377   +------------------------+------------------------------------------+
1378
13795.4.2.  Response Headers
1380
1381   In responses returned from server, several specific HTTP headers are
1382   used as described in the following table:
1383
1384   Table 2.  Required HTTP response headers
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399Chu, et al.             Expires December 28, 2011              [Page 25]
1400
1401Internet-Draft    Virtual Resource Management in Cloud         June 2011
1402
1403
1404   +-----------------+-------------------------------------------------+
1405   | Header Name     | Description                                     |
1406   +-----------------+-------------------------------------------------+
1407   | Accept-Language | This parameter indicates the language or locale |
1408   |                 | to be used when generating responses.           |
1409   |                 |                                                 |
1410   | Content-Length  | Describes the size of the response message      |
1411   |                 | body.                                           |
1412   |                 |                                                 |
1413   | Content-Type    | Describes the representation and syntax of the  |
1414   |                 | response message body.                          |
1415   |                 |                                                 |
1416   | Location        | Returns a new URI that can be used to request a |
1417   |                 | representation of the newly created resource.   |
1418   |                 |                                                 |
1419   | Cache-Control   | Describes how the representation of the         |
1420   |                 | resource should be cached, and its freshness.   |
1421   +-----------------+-------------------------------------------------+
1422
14235.4.3.  HTTP Status Codes
1424
1425   VRM API uses the HTTP protocol for sending and retrieving data.
1426   Client utilizing the REST API makes an HTTP request to the Server and
1427   process the HTTP response accordingly.  The status codes in HTTP
1428   response (RFC2616) gives the client some indication as to the success
1429   of the HTTP request, or the information on how the client should
1430   handle the included response data in failure case.
1431
1432   Following table lists some common used HTTP response codes with their
1433   conditions.
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455Chu, et al.             Expires December 28, 2011              [Page 26]
1456
1457Internet-Draft    Virtual Resource Management in Cloud         June 2011
1458
1459
1460   +--------------+----------------------------------------------------+
1461   | Status       | Description                                        |
1462   +--------------+----------------------------------------------------+
1463   | 100 Continue | The client SHOULD continue with its request.  This |
1464   |              | interim response is used to inform the client that |
1465   |              | the request has been received and has not yet been |
1466   |              | rejected by the platform.  The client SHOULD       |
1467   |              | continue by sending the remainder of the request   |
1468   |              | or, if the request has already been completed,     |
1469   |              | ignore this response.                              |
1470   |              |                                                    |
1471   | 200 OK       | The request was successfully completed.  If this   |
1472   |              | request created a new resource that is addressable |
1473   |              | with a URI, and a response body is returned        |
1474   |              | containing a representation of the new resource, a |
1475   |              | 200 status and a Location header containing the    |
1476   |              | canonical URI for the newly created resource.      |
1477   |              |                                                    |
1478   | 201 Created  | A request that created a new resource was          |
1479   |              | completed, and no response body containing a       |
1480   |              | representation of the new resource is being        |
1481   |              | returned.  A Location header containing the        |
1482   |              | canonical URI for the newly created resource will  |
1483   |              | be returned.                                       |
1484   |              |                                                    |
1485   | 202 Accepted | The request has been accepted for processing, but  |
1486   |              | the processing has not been completed.  Per the    |
1487   |              | HTTP/1.1 specification, the returned entity (if    |
1488   |              | any) SHOULD include an indication of the request's |
1489   |              | current status.  A Location header containing the  |
1490   |              | canonical URI for the not-yet completed resource   |
1491   |              | would be returned along with the Status attribute  |
1492   |              | indicating its progress.                           |
1493   |              |                                                    |
1494   | 204 No       | The request has been processed and no content was  |
1495   | Content      | returned.                                          |
1496   |              |                                                    |
1497   | 304 Not      | The resource was not modified.  Returned for       |
1498   | Modified     | conditional GET when resource is not modified.     |
1499   |              |                                                    |
1500   | 400 Bad      | The request could not be processed because it      |
1501   | Request      | contains missing or invalid information (such as   |
1502   |              | validation error on an input field, a missing      |
1503   |              | required value, and so on).                        |
1504   |              |                                                    |
1505   | 401          | The authentication credentials included with this  |
1506   | Unauthorized | request are missing or invalid                     |
1507   |              |                                                    |
1508
1509
1510
1511Chu, et al.             Expires December 28, 2011              [Page 27]
1512
1513Internet-Draft    Virtual Resource Management in Cloud         June 2011
1514
1515
1516   | 403          | The server recognized your credentials, but you do |
1517   | Forbidden    | not possess authorization to perform this request. |
1518   |              |                                                    |
1519   | 404 Not      | The request specified a URI of a resource that     |
1520   | Found        | does not exist.                                    |
1521   |              |                                                    |
1522   | 405 Method   | The HTTP verb specified in the request (DELETE,    |
1523   | Not Allowed  | GET, HEAD, POST, PUT) is not supported for this    |
1524   |              | request URI.                                       |
1525   |              |                                                    |
1526   | 406 Not      | The resource identified by this request is not     |
1527   | Acceptable   | capable of generating a representation             |
1528   |              | corresponding to one of the media types in the     |
1529   |              | Accept header of the request.                      |
1530   |              |                                                    |
1531   | 409 Conflict | A creation or update request could not be          |
1532   |              | completed, because it would cause a conflict in    |
1533   |              | the current state of the resources supported by    |
1534   |              | the platform (for example, an attempt to create a  |
1535   |              | new resource with a unique identifier already      |
1536   |              | assigned to some existing resource or an attempt   |
1537   |              | to modify a resource attribute which is not yet    |
1538   |              | completed).                                        |
1539   |              |                                                    |
1540   | 410 Gone     | The requested resource is no longer available at   |
1541   |              | the server and no forwarding address is known.     |
1542   |              | Clients with link editing capabilities SHOULD      |
1543   |              | delete references to the Request-URI after user    |
1544   |              | approval.  If the server does not know, or has no  |
1545   |              | facility to determine, whether or not the          |
1546   |              | condition is permanent, the status code 404 (Not   |
1547   |              | Found) SHOULD be used instead.                     |
1548   |              |                                                    |
1549   | 412          | The precondition given in one or more of the       |
1550   | Precondition | request-header fields evaluated to false when it   |
1551   | Failed       | was tested on the server.  This response code      |
1552   |              | allows the client to place preconditions on the    |
1553   |              | current resource meta-information (header field    |
1554   |              | data) and thus prevent the requested method from   |
1555   |              | being applied to a resource other than the one     |
1556   |              | intended.                                          |
1557   |              |                                                    |
1558   | 500 Internal | The server encountered an unexpected condition     |
1559   | Server Error | which prevented it from fulfilling the request.    |
1560   |              |                                                    |
1561   | 501 Not      | The server does not (currently) support the        |
1562   | Implemented  | functionality required to fulfill the request.     |
1563   |              |                                                    |
1564
1565
1566
1567Chu, et al.             Expires December 28, 2011              [Page 28]
1568
1569Internet-Draft    Virtual Resource Management in Cloud         June 2011
1570
1571
1572   | 503 Service  | The server is currently unable to handle the       |
1573   | Unavailable  | request due to temporary overloading or            |
1574   |              | maintenance of the server.                         |
1575   +--------------+----------------------------------------------------+
1576
15775.4.4.  Media Type
1578
1579   Resource representations of request and response bodies are normally
1580   encoded in JSON, as specified in RFC4627
1581
1582   Each type of resource has its own media-type, which matches the
1583   pattern "application/vnd.ietf.cloud.Xxxxx+json", where "Xxxxx"
1584   represents the portion of the identifier unique to a particular
1585   representation format for each resource.  The identifier MUST be
1586   globally unique in the space of vnd.com.ietf.cloud, and the meida
1587   type should be registered in accordance to RFC4288.
1588
15895.5.  Resource Representations
1590
1591   This section specifies the representations of the resources this API
1592   operates on.  The representations are made up of attributes, each
1593   with a name and value, encoded using a JSON dictionary.
1594
1595   Each type of cloud resource has its own Internet Media Type.  The
1596   media type SHALL conform to the pattern "application/
1597   vnd.ietf.cloud.Xxxxxx+json".
1598
15995.5.1.  Cloud
1600
1601   Cloud represents all accessible resources and deployed entities in
1602   cloud environment.
1603
1604   HTTP Methods: GET
1605
1606   Media Type:
1607      application/vnd.ietf.cloud.Cloud+json
1608
1609   Main attributes:
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623Chu, et al.             Expires December 28, 2011              [Page 29]
1624
1625Internet-Draft    Virtual Resource Management in Cloud         June 2011
1626
1627
1628   +-----------------+---------+---------------------------------------+
1629   | Attribute       | Type    | Description                           |
1630   +-----------------+---------+---------------------------------------+
1631   | uri             | URI     | The accessible address of the cloud.  |
1632   |                 |         |                                       |
1633   | id              | Integer | Values assigned to the cloud by the   |
1634   |                 |         | vendor.                               |
1635   |                 |         |                                       |
1636   | templates       | Set     | The list of templates that are        |
1637   |                 |         | accessible to the user, such as       |
1638   |                 |         | VMTemplate, VolumeTemplate,           |
1639   |                 |         | VNetTemplate and RPLTemplate.         |
1640   |                 |         |                                       |
1641   | vdcs            | String  | The list of Virtual data centers      |
1642   |                 |         | accessible to this user.              |
1643   |                 |         |                                       |
1644   | created_time    | Time    | Date and time, in ISO 8601 format,    |
1645   |                 |         | when the Cloud was created.           |
1646   |                 |         |                                       |
1647   | resource_status | Enum    | Current state of the resource (e.g.   |
1648   |                 |         | INITIATED, CREATING, CREATED,         |
1649   |                 |         | DESTROYING, DESTROYED, READY).  Only  |
1650   |                 |         | cloud with "READY" state can be used  |
1651   |                 |         | by user to deploy resource.           |
1652   +-----------------+---------+---------------------------------------+
1653
1654   Editor note: Need we consider the location for cloud deployment?
1655
16565.5.2.  Template
1657
1658   A Template represents the definition of the deployable resource or a
1659   group of resources (i.e. resource pool).  Users can create cloud
1660   resources by specifying the Template URI as a field in a deployment
1661   request.  The cloud SHALL instantiate the resources, their
1662   configurations and connection relations as specified in the
1663   definition of the Template.
1664
1665   Template is a kind of resource which include subclass resource, such
1666   as VMTemplate, VolumeTeplate, vNetTemplate and RPLTemplate.
1667
1668   HTTP Methods: GET/PUT/POST/DELETE.
1669
1670   Media Type:
1671      application/vnd.ietf.cloud.Template+json
1672
1673   Main attributes:
1674
1675
1676
1677
1678
1679Chu, et al.             Expires December 28, 2011              [Page 30]
1680
1681Internet-Draft    Virtual Resource Management in Cloud         June 2011
1682
1683
1684   +-----------------+----------+--------------------------------------+
1685   | Attribute       | Type     | Description                          |
1686   +-----------------+----------+--------------------------------------+
1687   | uri             | URI      | The accessible address of the        |
1688   |                 |          | template to this user.               |
1689   |                 |          |                                      |
1690   | id              | Integer  | Values assigned to the template by   |
1691   |                 |          | the vendor.                          |
1692   |                 |          |                                      |
1693   | type            | String   | The enumerated String that describes |
1694   |                 |          | the media type of the resource       |
1695   |                 |          | template that the service provide    |
1696   |                 |          | can support.                         |
1697   |                 |          |                                      |
1698   | conf_info       | String   | Configuration information of the     |
1699   |                 |          | template that contains all the       |
1700   |                 |          | metadata necessary for the cloud to  |
1701   |                 |          | deploy the service.  The conf_info   |
1702   |                 |          | can be represented in some format,   |
1703   |                 |          | such as XML.                         |
1704   |                 |          |                                      |
1705   | snapshot        | Snapshot | The snapshot of the resource of      |
1706   |                 |          | which this Template is based on.     |
1707   |                 |          |                                      |
1708   | created_time    | Time     | Date and time, in ISO 8601 format,   |
1709   |                 |          | when the Template was created.       |
1710   |                 |          |                                      |
1711   | resource_status | Enum     | Only a template with "READY" state   |
1712   |                 |          | can be used by user to deploy        |
1713   |                 |          | resource.                            |
1714   +-----------------+----------+--------------------------------------+
1715
1716   Following specifies subclass types of template.
1717
1718   o  VMTemplate: a single OS-stack system on a virtualization platform.
1719      When deployed, a Server resource would be realized.
1720
1721   o  VolumeTemplate: the storage relationships and rules that specify
1722      the storage behaviors.  It can be based on the CDMI metadata to
1723      specify the characteristics of a volume.  When deployed, a Volume
1724      resource would be realized.
1725
1726   o  NetworkTemplate: the routing relationships and rules that specify
1727      the network behaviors.  When deployed, a VNet resource would be
1728      realized.
1729
1730   o  RPLTemplate: a system topology that include multiple entities and
1731      their interconnections with deployment constraints.  When
1732
1733
1734
1735Chu, et al.             Expires December 28, 2011              [Page 31]
1736
1737Internet-Draft    Virtual Resource Management in Cloud         June 2011
1738
1739
1740      deployed, a resource pool resource would be realized.
1741
17425.5.2.1.  VMTemplate
1743
1744   VMTemplate is a preconfigured deployable entity that realizes a VM
1745   resource.
1746
1747      Media Type:
1748         application/vnd.ietf.cloud.VMTemplate+json
1749
1750   Main attributes:
1751
1752   +-----------------+------------+------------------------------------+
1753   | Attribute       | Type       | Description                        |
1754   +-----------------+------------+------------------------------------+
1755   | uri             | URI        | The accessible address of the      |
1756   |                 |            | virtual machine to this user.      |
1757   |                 |            |                                    |
1758   | id              | Integer    | Values assigned to the VMTemplate  |
1759   |                 |            | by the vendor.                     |
1760   |                 |            |                                    |
1761   | os              | String     | Operating System running on the    |
1762   |                 |            | VM.                                |
1763   |                 |            |                                    |
1764   | cpu             | [Number,   | Count of CPU cores and CPU core    |
1765   |                 | Number]    | speed in MHz of the VM when        |
1766   |                 |            | provisioned.                       |
1767   |                 |            |                                    |
1768   | memory          | Integer    | Main memory size in MB of the VM   |
1769   |                 |            | when provisioned.                  |
1770   |                 |            |                                    |
1771   | disks           | {String,   | List of local disks and their      |
1772   |                 | Integer}[] | sizes in GB of the VM when         |
1773   |                 |            | provisioned.                       |
1774   |                 |            |                                    |
1775   | conf_para       | String     | The list of system defined         |
1776   |                 |            | configuration parameters for this  |
1777   |                 |            | VM Template                        |
1778   |                 |            |                                    |
1779   | snapshot        | Snapshot   | The snapshot of the resource of    |
1780   |                 |            | which this VM Template is based    |
1781   |                 |            | on.                                |
1782   |                 |            |                                    |
1783   | created_time    | Time       | Date and time, in ISO 8601 format, |
1784   |                 |            | when the VMTemplate was created.   |
1785   |                 |            |                                    |
1786
1787
1788
1789
1790
1791Chu, et al.             Expires December 28, 2011              [Page 32]
1792
1793Internet-Draft    Virtual Resource Management in Cloud         June 2011
1794
1795
1796   | resource_status | Enum       | Only a VM template with "READY"    |
1797   |                 |            | state can be used by user to       |
1798   |                 |            | deploy resource.                   |
1799   +-----------------+------------+------------------------------------+
1800
18015.5.2.2.  VolumeTemplate
1802
1803   VolumeTemplate is a preconfigured deployable entity that realizes a
1804   virtual Volume resource.
1805
1806      Media Type:
1807         application/vnd.ietf.cloud.VolumeTemplate+json
1808
1809   Main attributes:
1810
1811   +-----------------+----------+--------------------------------------+
1812   | Attribute       | Type     | Description                          |
1813   +-----------------+----------+--------------------------------------+
1814   | uri             | URI      | The accessible address of the volume |
1815   |                 |          | template to this user.               |
1816   |                 |          |                                      |
1817   | id              | Integer  | Values assigned to the               |
1818   |                 |          | VolumeTemplate by the vendor.        |
1819   |                 |          |                                      |
1820   | conf_para       | String   | The list of system defined           |
1821   |                 |          | configuration parameters for this VM |
1822   |                 |          | Template                             |
1823   |                 |          |                                      |
1824   | snapshot        | Snapshot | The snapshot of the volume of which  |
1825   |                 |          | this VolumeTemplate is based on.     |
1826   |                 |          |                                      |
1827   | created_time    | Time     | Date and time, in ISO 8601 format,   |
1828   |                 |          | when the VolumeTemplate was created. |
1829   |                 |          |                                      |
1830   | resource_status | Enum     | Only a volume template with "READY"  |
1831   |                 |          | state can be used by user to deploy  |
1832   |                 |          | resource.                            |
1833   +-----------------+----------+--------------------------------------+
1834
18355.5.2.3.  NetworkTemplate
1836
1837   NetworkTemplate is a preconfigured deployable entity that realizes a
1838   virtual Network resource.
1839
1840      Media Type:
1841         application/vnd.ietf.cloud.VNetTemplate+json
1842
1843   Main attributes:
1844
1845
1846
1847Chu, et al.             Expires December 28, 2011              [Page 33]
1848
1849Internet-Draft    Virtual Resource Management in Cloud         June 2011
1850
1851
1852   +-----------------+----------+--------------------------------------+
1853   | Attribute       | Type     | Description                          |
1854   +-----------------+----------+--------------------------------------+
1855   | uri             | URI      | The accessible address of the        |
1856   |                 |          | virtual network resource template to |
1857   |                 |          | this user.                           |
1858   |                 |          |                                      |
1859   | id              | Integer  | Values assigned to the               |
1860   |                 |          | NetworkTemplate by the vendor.       |
1861   |                 |          |                                      |
1862   | conf_para       | String   | The list of system defined           |
1863   |                 |          | configuration parameters for this    |
1864   |                 |          | Network Template                     |
1865   |                 |          |                                      |
1866   | snapshot        | Snapshot | The snapshot of the network of which |
1867   |                 |          | this NetworkTemplate is based on.    |
1868   |                 |          |                                      |
1869   | created_time    | Time     | Date and time, in ISO 8601 format,   |
1870   |                 |          | when the NetworkTemplate was         |
1871   |                 |          | created.                             |
1872   |                 |          |                                      |
1873   | resource_status | Enum     | Only a network template with "READY" |
1874   |                 |          | state can be used by user to deploy  |
1875   |                 |          | resource.                            |
1876   +-----------------+----------+--------------------------------------+
1877
18785.5.2.4.  RPLTemplate
1879
1880   RPLTemplate is a deployable entity to realize resource pool that may
1881   contain multiple resources with their interconnection relationship.
1882
1883      Media Type:
1884         application/vnd.ietf.cloud.RPLTemplate+json
1885
1886   Main attributes:
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903Chu, et al.             Expires December 28, 2011              [Page 34]
1904
1905Internet-Draft    Virtual Resource Management in Cloud         June 2011
1906
1907
1908   +-----------------+----------+--------------------------------------+
1909   | Attribute       | Type     | Description                          |
1910   +-----------------+----------+--------------------------------------+
1911   | uri             | URI      | The accessible address of the        |
1912   |                 |          | resource pool template to this user. |
1913   |                 |          |                                      |
1914   | id              | Integer  | Values assigned to the RPLTemplate   |
1915   |                 |          | by the vendor.                       |
1916   |                 |          |                                      |
1917   | conf_para       | String   | The list of system defined           |
1918   |                 |          | configuration parameters for this    |
1919   |                 |          | RPLTemplate                          |
1920   |                 |          |                                      |
1921   | snapshot        | Snapshot | The snapshot of the resource pool of |
1922   |                 |          | which this RPLTemplate is based on.  |
1923   |                 |          |                                      |
1924   | created_time    | Time     | Date and time, in ISO 8601 format,   |
1925   |                 |          | when the RPLTemplate was created.    |
1926   |                 |          |                                      |
1927   | resource_status | Enum     | Only a resource pool template with   |
1928   |                 |          | "READY" state can be used by user to |
1929   |                 |          | deploy resource.                     |
1930   +-----------------+----------+--------------------------------------+
1931
19325.5.3.  VDC
1933
1934   A VDC represents the grouping of resources that make up a data
1935   center.  Resources among VDCs are isolated, cloud resource providers
1936   can enforce underlying resource limitations on a VDC.
1937
1938   HTTP Methods: GET/PUT/POST/DELETE.
1939
1940   Media Type:
1941      application/vnd.ietf.cloud.VDC+json
1942
1943   Main attributes:
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959Chu, et al.             Expires December 28, 2011              [Page 35]
1960
1961Internet-Draft    Virtual Resource Management in Cloud         June 2011
1962
1963
1964   +-----------------+---------+---------------------------------------+
1965   | Attribute       | Type    | Description                           |
1966   +-----------------+---------+---------------------------------------+
1967   | uri             | URI     | The accessible address of VDC to this |
1968   |                 |         | user.                                 |
1969   |                 |         |                                       |
1970   | id              | Integer | Values assigned to the vdc by the     |
1971   |                 |         | vendor.                               |
1972   |                 |         |                                       |
1973   | rpls            | Set     | A list of resource pools that are     |
1974   |                 |         | included in the VDC.                  |
1975   |                 |         |                                       |
1976   | vms             | Set     | A list of virtual machines that are   |
1977   |                 |         | included in the VDC.                  |
1978   |                 |         |                                       |
1979   | volumes         | Set     | A list of volumes that are included   |
1980   |                 |         | in the VDC.                           |
1981   |                 |         |                                       |
1982   | vnets           | Set     | A list of virtual network resources   |
1983   |                 |         | that are included in the VDC.         |
1984   |                 |         |                                       |
1985   | hosts           | Set     | A list of unvirtualized physical      |
1986   |                 |         | servers that are included in the VDC. |
1987   |                 |         |                                       |
1988   | conf_para       | Set     | Configuration parameters for this     |
1989   |                 |         | VDC.                                  |
1990   |                 |         |                                       |
1991   | created_time    | Time    | Date and time, in ISO 8601 format,    |
1992   |                 |         | when the VDC was created.             |
1993   |                 |         |                                       |
1994   | resource_status | Enum    | Only a VDC with "READY" state can be  |
1995   |                 |         | used by user to deploy service.       |
1996   +-----------------+---------+---------------------------------------+
1997
19985.5.4.  Resource Pool
1999
2000   Resource pool is a logical grouping of resources with their
2001   interconnection relationships.
2002
2003   HTTP Methods: GET/PUT/POST/DELETE.
2004
2005   Media Type:
2006      application/vnd.ietf.cloud.RPL+json
2007
2008   Main attributes:
2009
2010
2011
2012
2013
2014
2015Chu, et al.             Expires December 28, 2011              [Page 36]
2016
2017Internet-Draft    Virtual Resource Management in Cloud         June 2011
2018
2019
2020   +-----------------+---------+---------------------------------------+
2021   | Attribute       | Type    | Description                           |
2022   +-----------------+---------+---------------------------------------+
2023   | uri             | URI     | The accessible address of resource    |
2024   |                 |         | pool to this user.                    |
2025   |                 |         |                                       |
2026   | id              | Integer | Values assigned to the resource pool  |
2027   |                 |         | by the vendor.                        |
2028   |                 |         |                                       |
2029   | rpls            | Set     | A list of child resource pools that   |
2030   |                 |         | are included in the resource pool.    |
2031   |                 |         |                                       |
2032   | vms             | Set     | A list of virtual machines that are   |
2033   |                 |         | included in the resource pool.        |
2034   |                 |         |                                       |
2035   | volumes         | Set     | A list of volumes that are included   |
2036   |                 |         | in the resource pool.                 |
2037   |                 |         |                                       |
2038   | Vnets           | Set     | A list of virtual network resources   |
2039   |                 |         | that are included in the resource     |
2040   |                 |         | pool.                                 |
2041   |                 |         |                                       |
2042   | hosts           | Set     | A list of unvirtualized physical      |
2043   |                 |         | servers that are included in the      |
2044   |                 |         | resource pool.                        |
2045   |                 |         |                                       |
2046   | nodes           | Set     | A list of virtualized physical hosts  |
2047   |                 |         | that are included in the resource     |
2048   |                 |         | pool.                                 |
2049   |                 |         |                                       |
2050   | max_capacity    | Set     | The maximum number of resources this  |
2051   |                 |         | resource pool can hold, such as       |
2052   |                 |         | nodes, VMs, Volumes, and vNetworks,   |
2053   |                 |         | etc.  If not provided, the client     |
2054   |                 |         | should assume it is unlimited.        |
2055   |                 |         |                                       |
2056   | min_capacity    | Set     | The minimal number of resources this  |
2057   |                 |         | resource pool should hold to be       |
2058   |                 |         | considered a functional scalability   |
2059   |                 |         | group.  If not specified, the client  |
2060   |                 |         | should assume it is 1.                |
2061   |                 |         |                                       |
2062   | superior        | URIs{}  | List of the superior entities URIs of |
2063   |                 |         | this resource pool contained in, such |
2064   |                 |         | as VDC URI.                           |
2065   |                 |         |                                       |
2066
2067
2068
2069
2070
2071Chu, et al.             Expires December 28, 2011              [Page 37]
2072
2073Internet-Draft    Virtual Resource Management in Cloud         June 2011
2074
2075
2076   | parent          | URI     | Parent (immediate superior) URI of    |
2077   |                 |         | this resource pool contained in, such |
2078   |                 |         | as VDC URI or RPL URI.                |
2079   |                 |         |                                       |
2080   | boot_order      | Set     | Boot order of VMs when perform        |
2081   |                 |         | start/stop operations on the resource |
2082   |                 |         | pool.  When a resource pool is        |
2083   |                 |         | started, VMs with the same boot_order |
2084   |                 |         | value will be started in an undefined |
2085   |                 |         | sequence, but the service will ensure |
2086   |                 |         | that all VMs with a particular        |
2087   |                 |         | boot_order value will have been       |
2088   |                 |         | started before starting VMs with a    |
2089   |                 |         | higher boot_order value.  The         |
2090   |                 |         | sequence is reversed for a stop       |
2091   |                 |         | resource pool operation.  VMs with no |
2092   |                 |         | boot_order value will be assumed to   |
2093   |                 |         | have a boot_order of the maximum      |
2094   |                 |         | integer value, so they will be        |
2095   |                 |         | started last and stopped first.       |
2096   |                 |         |                                       |
2097   | conf_para       | Set     | Configuration parameters for this     |
2098   |                 |         | resource pool.                        |
2099   |                 |         |                                       |
2100   | template        | URI     | URI of the RPLTemplate of which this  |
2101   |                 |         | resource pool is based on.            |
2102   |                 |         |                                       |
2103   | created_time    | Time    | Date and time, in ISO 8601 format,    |
2104   |                 |         | when the VDC was created.             |
2105   |                 |         |                                       |
2106   | resource_status | Enum    | Only a Resource Pool with "READY"     |
2107   |                 |         | state can be used by user to deploy   |
2108   |                 |         | service.                              |
2109   +-----------------+---------+---------------------------------------+
2110
21115.5.5.  Virtual Machine
2112
2113   VM is a computing container providing a complete OS stack that
2114   services/applications can be deployed on.
2115
2116   HTTP Methods: GET/PUT/POST/DELETE.
2117
2118      Media Type:
2119         application/vnd.ietf.cloud.VM+json
2120
2121   Main attributes:
2122
2123
2124
2125
2126
2127Chu, et al.             Expires December 28, 2011              [Page 38]
2128
2129Internet-Draft    Virtual Resource Management in Cloud         June 2011
2130
2131
2132   +-----------------+-------------------+-----------------------------+
2133   | Attribute       | Type              | Description                 |
2134   +-----------------+-------------------+-----------------------------+
2135   | uri             | URI               | The accessible address of   |
2136   |                 |                   | virtual machine to this     |
2137   |                 |                   | user.                       |
2138   |                 |                   |                             |
2139   | id              | Integer           | Values assigned to the      |
2140   |                 |                   | virtual machine by the      |
2141   |                 |                   | vendor.                     |
2142   |                 |                   |                             |
2143   | os              | String            | Operating System running on |
2144   |                 |                   | the VM.                     |
2145   |                 |                   |                             |
2146   | cpu             | [Number, Number]  | Count of CPU cores and CPU  |
2147   |                 |                   | core speed in MHz of the VM |
2148   |                 |                   | when provisioned.           |
2149   |                 |                   |                             |
2150   | memory          | Integer           | Main memory size in MB of   |
2151   |                 |                   | the VM when provisioned.    |
2152   |                 |                   |                             |
2153   | disks           | {String,Number}[] | The name and size in GB of  |
2154   |                 |                   | local disks.                |
2155   |                 |                   |                             |
2156   | volumes         | Set               | List of Volumes that are    |
2157   |                 |                   | attached to the VM.         |
2158   |                 |                   |                             |
2159   | vnets           | Set               | List of virtual network     |
2160   |                 |                   | resources attached to the   |
2161   |                 |                   | VM.                         |
2162   |                 |                   |                             |
2163   | hostname        | String            | Name of the virtualized     |
2164   |                 |                   | physical host that this VM  |
2165   |                 |                   | is contained in.            |
2166   |                 |                   |                             |
2167   | superior        | URIs{}            | List of the superior        |
2168   |                 |                   | entities URIs of this VM    |
2169   |                 |                   | contained in, such as VDC   |
2170   |                 |                   | URI, RPL URI.               |
2171   |                 |                   |                             |
2172   | parent          | URI               | Parent (immediate superior) |
2173   |                 |                   | URI of this resource pool   |
2174   |                 |                   | contained in, such as VDC   |
2175   |                 |                   | URI or RPL URI.             |
2176   |                 |                   |                             |
2177   | template        | URI               | The URI of the template on  |
2178   |                 |                   | which this VM is based on.  |
2179   |                 |                   |                             |
2180
2181
2182
2183Chu, et al.             Expires December 28, 2011              [Page 39]
2184
2185Internet-Draft    Virtual Resource Management in Cloud         June 2011
2186
2187
2188   | archives        | Set               | List of archives that have  |
2189   |                 |                   | been taken of this VM.      |
2190   |                 |                   |                             |
2191   | clone           | URI               | If the VM was instantiated  |
2192   |                 |                   | from an archive, this field |
2193   |                 |                   | would indicate the uri of   |
2194   |                 |                   | the original snapshot.      |
2195   |                 |                   |                             |
2196   | restore         | URI               | If the VM was restored from |
2197   |                 |                   | an existing archive in its  |
2198   |                 |                   | archive list, this field    |
2199   |                 |                   | will contain the uri of the |
2200   |                 |                   | archive entity.             |
2201   |                 |                   |                             |
2202   | service_status  | String            | Current status of the       |
2203   |                 |                   | Service running on the VM.  |
2204   |                 |                   | Service provider can        |
2205   |                 |                   | implement at least the      |
2206   |                 |                   | following valid values,     |
2207   |                 |                   | such as STOPPED, STOPPING,  |
2208   |                 |                   | STARTING, STARTED,          |
2209   |                 |                   | SUSPENDED, SUSPENDING,      |
2210   |                 |                   | RESUMING, RESTARTING.       |
2211   |                 |                   |                             |
2212   | conf_para       | Set               | Configuration parameters    |
2213   |                 |                   | for this VM.                |
2214   |                 |                   |                             |
2215   | snapshots       | Set               | A list of snapshots that    |
2216   |                 |                   | have been taken of this VM. |
2217   |                 |                   |                             |
2218   | created_time    | Time              | Date and time, in ISO 8601  |
2219   |                 |                   | format, when the RPL was    |
2220   |                 |                   | created.                    |
2221   |                 |                   |                             |
2222   | resource_status | Enum              | Only a Resource Pool with   |
2223   |                 |                   | "READY" state can be used   |
2224   |                 |                   | by user to deploy service.  |
2225   +-----------------+-------------------+-----------------------------+
2226
22275.5.6.  Volume
2228
2229   Volume is the storage medium that is associated with a logical disk
2230   spanning on one or more hard disk drives.  It can be used for inter-
2231   operably configure storage by the computing cloud.
2232
2233   CDMI Storage standard is RESTful style based, so when Volume
2234   management is coupled with the CDMI Cloud Storage standard, this API
2235   can be used to inter-operably configure storage for use by the
2236
2237
2238
2239Chu, et al.             Expires December 28, 2011              [Page 40]
2240
2241Internet-Draft    Virtual Resource Management in Cloud         June 2011
2242
2243
2244   computing cloud.
2245
2246   HTTP Methods: GET/PUT/POST/DELETE.
2247
2248      Media Type:
2249         application/vnd.ietf.cloud.Volume+json
2250
2251   Main attributes:
2252
2253   +-----------------+---------+---------------------------------------+
2254   | Attribute       | Type    | Description                           |
2255   +-----------------+---------+---------------------------------------+
2256   | uri             | URI     | The accessible address of volume to   |
2257   |                 |         | this user.                            |
2258   |                 |         |                                       |
2259   | id              | Integer | Values assigned to the volume by the  |
2260   |                 |         | vendor.                               |
2261   |                 |         |                                       |
2262   | size            | Integer | The size of the volume in GBytes.     |
2263   |                 |         |                                       |
2264   | archive         | Set     | A list of archive that have been      |
2265   |                 |         | taken on this volume.                 |
2266   |                 |         |                                       |
2267   | clone           | URI     | If the Volume was instantiated from   |
2268   |                 |         | an archive, this field would indicate |
2269   |                 |         | the uri of the original snapshot.     |
2270   |                 |         |                                       |
2271   | restore         | URI     | If the Volume was restored from a     |
2272   |                 |         | snapshot, this field will contain the |
2273   |                 |         | uri of the snapshot.                  |
2274   |                 |         |                                       |
2275   | superior        | URIs{}  | List of the superior entities URIs of |
2276   |                 |         | this Volume contained in, such as VDC |
2277   |                 |         | URI, RPL URI.                         |
2278   |                 |         |                                       |
2279   | parent          | URI     | Parent (immediate superior) URI of    |
2280   |                 |         | this Volume contained in, such as VDC |
2281   |                 |         | URI or RPL URI.                       |
2282   |                 |         |                                       |
2283   | template        | Set     | The URI of the template on which this |
2284   |                 |         | Volume is based on.                   |
2285   |                 |         |                                       |
2286   | conf_para       | Set     | Configuration parameters for this     |
2287   |                 |         | Volume.                               |
2288   |                 |         |                                       |
2289   | snapshots       | Set     | A list of snapshots that have been    |
2290   |                 |         | taken of this Volume.                 |
2291   |                 |         |                                       |
2292
2293
2294
2295Chu, et al.             Expires December 28, 2011              [Page 41]
2296
2297Internet-Draft    Virtual Resource Management in Cloud         June 2011
2298
2299
2300   | created_time    | Time    | Date and time, in ISO 8601 format,    |
2301   |                 |         | when the Volume was created.          |
2302   |                 |         |                                       |
2303   | resource_status | Enum    | Only a Volume with "READY" state can  |
2304   |                 |         | be used by user to deploy service.    |
2305   +-----------------+---------+---------------------------------------+
2306
23075.5.7.  Virtual Network
2308
2309   Virtual Network is a service that is capable of providing virtualized
2310   network interface, virtualized router, virualized switch, virtualized
2311   firewall, VPN, etc.
2312
2313   HTTP Methods: GET/PUT/POST/DELETE.
2314
2315      Media Type:
2316         application/vnd.ietf.cloud.VNet+json
2317
2318   Main attributes:
2319
2320   +-------------------+---------+-------------------------------------+
2321   | Attribute         | Type    | Description                         |
2322   +-------------------+---------+-------------------------------------+
2323   | uri               | URI     | The accessible address of virtual   |
2324   |                   |         | network to this user.               |
2325   |                   |         |                                     |
2326   | id                | Integer | Values assigned to the virtual      |
2327   |                   |         | network by the vendor.              |
2328   |                   |         |                                     |
2329   | network_resources | Set     | List of virtualized network         |
2330   |                   |         | resources that are parts of vNet.   |
2331   |                   |         |                                     |
2332   | superior          | URIs{}  | List of the superior entities URIs  |
2333   |                   |         | of this vNet contained in, such as  |
2334   |                   |         | VDC URI, RPL URI.                   |
2335   |                   |         |                                     |
2336   | parent            | URI     | Parent (immediate superior) URI of  |
2337   |                   |         | this vNet contained in, such as VDC |
2338   |                   |         | URI or RPL URI.                     |
2339   |                   |         |                                     |
2340   | template          | Set     | The URI of