Skip to main content

Cloud Service Broker
draft-shao-opsawg-cloud-service-broker-02

The information below is for an old version of the document.
Document Type
This is an older version of an Internet-Draft whose latest revision state is "Expired".
Authors Bhumip Khasnabish , Hu Jie , Shao Weixiang
Last updated 2011-12-27 (Latest revision 2011-12-22)
RFC stream (None)
Formats
Stream Stream state (No stream defined)
Consensus boilerplate Unknown
RFC Editor Note (None)
IESG IESG state I-D Exists
Telechat date (None)
Responsible AD (None)
Send notices to (None)
draft-shao-opsawg-cloud-service-broker-02
opsawg                                                     Shao Weixiang
Internet-Draft                                                    Hu Jie
Intended status: Standards Track                       Bhumip Khasnabish
Expires: June 30, 2012                                   ZTE Corporation
                                                       December 28, 2011

                          Cloud Service Broker
               draft-shao-opsawg-cloud-service-broker-02

Abstract

   This document introduces a Cloud Service Broker (CSB) entity to
   provide brokering functions between different Cloud Service Providers
   and Cloud Service consumers.

Status of this Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at http://datatracker.ietf.org/drafts/current/.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   This Internet-Draft will expire on June 30, 2012.

Copyright Notice

   Copyright (c) 2011 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (http://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.

Shao Weixiang, et al.     Expires June 30, 2012                 [Page 1]
Internet-Draft            Cloud Service Broker             December 2011

Table of Contents

   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  3
   2.  Conventions and Terminology  . . . . . . . . . . . . . . . . .  6
   3.  CSB Architecture . . . . . . . . . . . . . . . . . . . . . . .  7
     3.1.  Cloud service publish interface  . . . . . . . . . . . . .  7
     3.2.  Cloud Service Consumer Interface . . . . . . . . . . . . .  8
     3.3.  Cloud service process  . . . . . . . . . . . . . . . . . .  8
     3.4.  Cloud service adapter  . . . . . . . . . . . . . . . . . .  9
   4.  CSB Interface Definitions  . . . . . . . . . . . . . . . . . . 12
     4.1.  Cloud Service Publish Interface  . . . . . . . . . . . . . 12
       4.1.1.  HTTP Publish Interface Usage . . . . . . . . . . . . . 12
       4.1.2.  Publish interface Message Package Definition . . . . . 13
     4.2.  Cloud Service Consumer Interface . . . . . . . . . . . . . 28
       4.2.1.  HTTP Consumer Interface Usage  . . . . . . . . . . . . 29
       4.2.2.  Consumer interface Message Package Definition  . . . . 29
   5.  Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
     5.1.  Publish Example  . . . . . . . . . . . . . . . . . . . . . 42
     5.2.  Consumer Example . . . . . . . . . . . . . . . . . . . . . 46
   6.  Cloud Service Publish Interface XML Schema . . . . . . . . . . 50
   7.  Cloud Service Consumer Interface XML Schema  . . . . . . . . . 65
   8.  Security Considerations  . . . . . . . . . . . . . . . . . . . 79
   9.  IANA Considerations  . . . . . . . . . . . . . . . . . . . . . 80
     9.1.  application/csb-publish+xml MIME Type  . . . . . . . . . . 80
     9.2.  application/csb-consumer+xml MIME Type . . . . . . . . . . 80
     9.3.  URN Sub-Namespace  Registration for csb-publish  . . . . . 81
     9.4.  URN Sub-Namespace Registration for csb-consumer  . . . . . 81
     9.5.  XML Schema Registration for csb-publish  . . . . . . . . . 82
     9.6.  XML Schema Registration for csb-consumer . . . . . . . . . 82
   10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 83
     10.1. Normative References . . . . . . . . . . . . . . . . . . . 83
     10.2. Informative References . . . . . . . . . . . . . . . . . . 84
   Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 85

Shao Weixiang, et al.     Expires June 30, 2012                 [Page 2]
Internet-Draft            Cloud Service Broker             December 2011

1.  Introduction

   As specified in the NIST Reference Architecture [NIST RA]document,
   Cloud Broker is an entity manages the use, performance and delivery
   of cloud services, and negotiates relationships between Cloud
   Providers and Cloud Consumers.

   As specified in the Technical  Considerations for US Government Cloud
   Computing Deployment Decisions [USG CCDD]document, Broker analogous
   to Intercloud Exchange where clouds can interoperate.

   As specified in the ITU-T  Focus Group Cloud Computing Draft
   deliverable on Introduction to the cloud ecosystem: definitions,
   taxonomies, use cases and high level requirements [ITU-T FGCC
   Ecosystem]document, Inter-cloud service broker(ISB) is the role of
   indirect interconnection between two (or more) Cloud Service
   Providers(CSPs) achieved through an interconnecting CSP, in addition
   to providing interworking service functions between the
   interconnected CSPs, also provides brokering service functions for
   one (or more) of the interconnected CSPs.  ISB also covers the case
   in which one (or more) of the interconnected entities receiving
   brokering service is a cloud service user(CSU).  Brokering service
   functions generally include, but are not limited to, the following
   three categories: service intermediation, service aggregation and
   service arbitrage.

   As specified in the CSAguide [CSAguide] document, Cloud service
   broker offers intermediation, monitoring, transformation/portability,
   governance, provisioning, and integration services and negotiate
   relationships between various cloud providers and consumers.  Cloud
   service broker will emerge as an important component in the overall
   cloud ecosystem.  It will abstract these possibly incompatible
   capabilities and interfaces on behalf of consumers to provide proxy
   in advance of the arrival of common, open and standardized ways of
   solving the problem longer term with a semantic capability that
   allows fluidity and agility in a Consumer being able to take
   advantage of the model that works best for their particular needs.

   As specified in the CCUCWP [CCUCWP] document, A broker has no cloud
   resources of its own, but matches consumers and providers based on
   the SLA required by the consumer.  The consumer has no knowledge that
   the broker does not control the resources.

   The simplest deployment view is illustrated in Figure 1.

Shao Weixiang, et al.     Expires June 30, 2012                 [Page 3]
Internet-Draft            Cloud Service Broker             December 2011

      +---+-----+---+                                    +---+-----+---+
      |    cloud    |                                    |    public   |
      |             |<-----+                       +---->|    cloud    |
      +-------------+      |                       |     +-------------+
                           |                       |
      +---+-----+---+      |                       |     +---+-----+---+
      |     WEB     |      |                       |     |    Private  |
      |   Service   |<-----+   +---+-----+---+     +---->|    cloud    |
      +-------------+      |   |   cloud     |     |     +-------------+
                           |---|   service   |-----|
      +---+-----+---+      |   |   broker    |     |     +---+-----+---+
      | Application |      |   +-------------+     +---->|  Community  |
      |             |<-----+                       |     |    cloud    |
      +-------------+      |                       |     +---+-----+---+
                           |                       |
      +---+-----+---+      |                       |     +---+-----+---+
      |     user    |      |                       +---->|    Hybid    |
      |             |<-----+                             |    cloud    |
      +-------------+                                    +---+-----+---+

                       Figure 1: Basic Architecture

   A Cloud Service Broker (CSB) can provide brokering service for
   different Cloud Service Providers which can base on private cloud,
   community cloud, public cloud and hybrid cloud.  CSB offers
   intermediation, proxy, monitoring, transformation, portability,
   governance,provisioning, screening, substitution, security,
   composition services and negotiate relationships between various
   Cloud Service Providers and Cloud Service Requesters/Consumers.
   Cloud Service Requesters/Consumers can be any web services,
   applications, users (e.g. enterprise users or public consume users),
   even a cloud.  A cloud can through CSB to interworking with other
   clouds.

   A CSB can alliance with different clouds, the CSB integrates and
   composes cloud services by orchestrating the cloud resources and
   services across various cloud domain and Cloud Service Providers,
   offers guaranteed cloud services to consumers with SLA.

   In the cloud ecosystem, the Cloud Service Requesters/Consumers can
   through CSB to access cloud computing services and resources of Cloud
   Service Providers.  When CSB receives the cloud service consumer
   requests from Cloud Service Requesters/Consumers, it will select
   appropriate cloud computing services and resources by Cloud Service
   Providers and specific function pattern to execute related cloud
   service operations such as intermediation,proxy,monitoring,
   transformation/portability, governance, provisioning, screening,

Shao Weixiang, et al.     Expires June 30, 2012                 [Page 4]
Internet-Draft            Cloud Service Broker             December 2011

   substitution, security, composition services.  CSB will invoke and
   adapt to the concrete cloud services and resources from various Cloud
   Service Providers, and return consumer response to Cloud Service
   Requesters/Consumers.

Shao Weixiang, et al.     Expires June 30, 2012                 [Page 5]
Internet-Draft            Cloud Service Broker             December 2011

2.  Conventions and Terminology

   In this document, BCP 14/RFC 2119 [RFC2119] defines the key words
   "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",
   "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
   "OPTIONAL".

   CSAguide [CSAguide]Cloud Service Broker (CSB): A logical entity that
   is responsible for offering intermediation, monitoring,
   transformation, portability, governance, provisioning, and
   integration services and negotiate relationships between various
   cloud providers and consumers.

   NIST Reference Architecture [NIST RA] Cloud Broker:An entity manages
   the use, performance and delivery of cloud services, and negotiates
   relationships between Cloud Providers and Cloud Consumers.

Shao Weixiang, et al.     Expires June 30, 2012                 [Page 6]
Internet-Draft            Cloud Service Broker             December 2011

3.  CSB Architecture

     +--+-----+----+   +---------------+---------+     +------+------+
     |Cloud Service|   |  Cloud Service Broker   |     |Cloud Service|
     | Requesters  |   |                         |     |  Providers  |
     | /Consumers  |   | +---+-----+ +---+-----+ |     |             |
     | +---+-----+ | |-+-|Cloud    | |Cloud    |-+--|  | +---+---+-+ |
     | | Cloud   | | | | |Service  | |Service  | |  |  | |  IaaS   | |
     | |         | | | | |consumer | |publish  | |  |  | | Provider| |
     | +---------+ | | | |interface| |interface| |  |  | +---------+ |
     |             | | | +--+------+ +----+----+ |  |  |             |
     | +---+-----+ | | |    |             |      |  |  | +---+---+-+ |
     | |  WEB    | | | |    |------+------|      |  |  | |  PaaS   | |
     | | Service | | | |           |             |  |  | | Provider| |
     | +---------+ |-| | +---------+-----------+ |  |--| +---------+ |
     |             |   | |Cloud Service process| |  |  |             |
     | +---+-----+ |   | |                     | |  |  | +---+---+-+ |
     | |Applicat | |   | +---------------------+ |  |  | |  SaaS   | |
     | |ion      | |   |           |             |  |  | | Provider| |
     | +---------+ |   | +---------+-----------+ |  |  | +---------+ |
     |             |   | |Cloud Service adapter| +--|  | |           |
     | +---+---+-+ |   | |                     | |     | +---+---+-+ |
     | |  user   | |   | +---------------------+ |     | |  DSaaS  | |
     | |         | |   |                         |     | | Provider| |
     | +---------+ |   |                         |     | +---------+ |
     |             |   |                         |     |             |
     +-+---------+-+   +-------------------------+     +-------------+

          Figure 2: Cloud Service Broker Functional  Architecture

   CSB reference architecture functional groups consists of cloud
   service consumer interface module, cloud service publish interface
   module, cloud service orchestration module and cloud service adapter
   module.

3.1.  Cloud service publish interface

   Cloud service publish interface is used to provide different cloud
   computing service and resource information for CSB.  Through cloud
   service publish interface, the CSB can subscribe different cloud
   computing service and resource information from Cloud Service
   Providers on demand by sending cloud service subscription request and
   receiving cloud service notification from Cloud Service Providers to
   get these information.  The published information can be any
   Infrastructure as a Service(IaaS) information, Platform as a
   service(PaaS) information, Software as a service(SaaS) information
   and Data Storage as a service(DSaaS) information.  Cloud Service
   Providers (e.g. private cloud, community cloud, public cloud and

Shao Weixiang, et al.     Expires June 30, 2012                 [Page 7]
Internet-Draft            Cloud Service Broker             December 2011

   hybrid cloud) can notify their published information to CSB.

   The subscription/notification can synchronize with the cloud service
   consumer requests.  In dynamic composition service function pattern,
   when CSB receives the cloud service consumer requests from Cloud
   Service Requesters/Consumers, CSB can first subscribe the actual
   cloud service from Cloud Service Providers based on the abstract
   service logic, then transfer to the concrete service logic to find
   the concrete services that can fulfil the requirements to replace the
   service classes and create invoking information for these services.
   Then the CSB executes the concrete service logic and gets the results
   of these concrete services.  The CSB then produces the final result
   and returns it to Cloud Service Requesters/Consumers.  The
   subscription/notification can also asynchronous working with the CSB
   other operations.

3.2.  Cloud Service Consumer Interface

   The Cloud Service Requesters/Consumers(e.g. web services,
   applications, users, cloud) can through CSB Cloud Service Consumer
   Interface to access Cloud Service Providers' cloud computing services
   and resources.  It can receive cloud service consumer requests from
   Cloud Service Requesters/Consumers and return cloud service consumer
   responses to Cloud Service Requesters/Consumers.

3.3.  Cloud service process

   The cloud service process module is used to process the cloud service
   consumer requests from Cloud Service Requesters/Consumers.  It can
   receive the requests by Cloud Service Consumer Interface, analysis
   the requested cloud services, select appropriate service logics and
   function patterns based on CSB database information from subscription
   or internal integration, execute related operations, then invoke and
   adapt to the concrete cloud services and resources from various Cloud
   Service Providers through cloud service adapters by sending cloud
   service adaptation requests to Cloud Service Providers and receiving
   cloud service adaptation responses from Cloud Service Providers.

   The cloud service process module basic function pattern is
   transformation/ translation, that is transfer or translate between
   the Cloud Service Requesters/Consumers' cloud service consumer
   requests/ responses and cloud service adaptation requests/ responses
   for Cloud Service Providers.  CSB can provide proxy service or
   Service Intermediation which is defined in NIST  Reference
   Architecture [NIST RA].

   Upon the basic function pattern, the cloud service process module can
   provide advanced function patterns, such as security service, QoS/SLA

Shao Weixiang, et al.     Expires June 30, 2012                 [Page 8]
Internet-Draft            Cloud Service Broker             December 2011

   control service, screening service, substitution service, and
   composition service.  For composition service, the cloud service
   process module make static service composition and dynamic service
   composition.  The static service composition is equal to Service
   Aggregation and the dynamic service composition is equal to Service
   Arbitrage specified in the NIST Reference Architecture [NIST RA].

3.4.  Cloud service adapter

   The cloud service adapter module is used to adapt cloud services and
   resources from Cloud Service Providers according to the cloud service
   consuming requests from CSRs, it will transfer and map protocols and
   formats supported by Cloud Service Providers' services and resources
   including APIs, parameters and transmission protocols.  The cloud
   service adapter module consists of IaaS adapter module, DSaaS adapter
   module, PaaS adapter module, SaaS adapter module.

Shao Weixiang, et al.     Expires June 30, 2012                 [Page 9]
Internet-Draft            Cloud Service Broker             December 2011

   +------------------------------+------------------------------+
   |                      Cloud Service adapter                  |
   | +------------+-------------+   +------------+-------------+ |
   | |        IaaS adapter      |   |       DsaaS adapter      | |
   | | +----+----+  +----+----+ |   | +----+----+  +----+----+ | |
   | | |common   |  |CSP1     | |   | |common   |  |CSP1     | | |
   | | |IaaS     |  |IaaS     | |   | |DSaaS    |  |DSaaS    | | |
   | | |adapter  |  |adapter  | |   | |adapter  |  |adapter  | | |
   | | +---------+  +---------+ |   | +---------+  +---------+ | |
   | |                          |   |                          | |
   | | +----+----+  +----+----+ |   | +----+----+  +----+----+ | |
   | | |CSP2     |  |CSP3     | |   | |CSP2     |  |CSP3     | | |
   | | |IaaS     |  |IaaS     | |   | |DSaaS    |  |DSaaS    | | |
   | | |adapter  |  |adapter  | |   | |adapter  |  |adapter  | | |
   | | +---------+  +---------+ |   | +---------+  +---------+ | |
   | +--------------------------+   +--------------------------+ |
   |                                                             |
   | +------------+-------------+   +------------+-------------+ |
   | |        PaaS adapter      |   |       SaaS adapter       | |
   | | +----+----+  +----+----+ |   | +----+----+  +----+----+ | |
   | | |common   |  |CSP1     | |   | |common   |  |CSP1     | | |
   | | |PaaS     |  |PaaS     | |   | |SaaS     |  |SaaS     | | |
   | | |adapter  |  |adapter  | |   | |adapter  |  |adapter  | | |
   | | |         |  |         | |   | |         |  |         | | |
   | | +---------+  +---------+ |   | +---------+  +---------+ | |
   | |                          |   |                          | |
   | | +----+----+  +----+----+ |   | +----+----+  +----+----+ | |
   | | |CSP2     |  |CSP3     | |   | |CSP2     |  |CSP3     | | |
   | | |PaaS     |  |PaaS     | |   | |SaaS     |  |SaaS     | | |
   | | |adapter  |  |adapter  | |   | |adapter  |  |adapter  | | |
   | | +---------+  +---------+ |   | +---------+  +---------+ | |
   | +--------------------------+   +--------------------------+ |
   |                                                             |
   +-------------------------------------------------------------+

                  Figure 3: cloud service adapter module

   IaaS adapter module includes common IaaS adapter module and
   proprietary IaaS adapter modules.  Common IaaS adapter module should
   support general IaaS protocols mapping: DMTF OVF [DMTF OVF], DMTF
   CIMI [DMTF CIMI], OGF OCCI [OGF OCCI].

   DSaaS adapter module includes common DSaaS adapter module and
   proprietary DSaaS adapter modules.  Common DSaaS adapter module
   should support general DSaaS protocols mapping: SNIA CDMI [SNIA
   CDMI].

Shao Weixiang, et al.     Expires June 30, 2012                [Page 10]
Internet-Draft            Cloud Service Broker             December 2011

   PaaS adapter module includes common PaaS adapter module and
   proprietary PaaS adapter modules.

   SaaS adapter module includes common SaaS adapter module and
   proprietary SaaS adapter modules.

Shao Weixiang, et al.     Expires June 30, 2012                [Page 11]
Internet-Draft            Cloud Service Broker             December 2011

4.  CSB Interface Definitions

   As discussed in previous sections in this document, the intention is
   to provide a toolkit for a variety of deployment architectures where
   Cloud Service broker can take place.  As a result, two main
   interfaces are required to support the differing requirements.  The
   two interfaces are described in the remainder of this section and
   have been named the 'Cloud Service Publish' and 'Cloud Service
   Consumer' interfaces.  These two interfaces have extremely differing
   responsibilities and usages which is reflected in the choice of
   solutions.

   This includes interpreting the data for the Cloud Service Consumer
   interface and the Cloud Service Publish interface.  It is, however,
   important that the two interfaces are complimentary so that
   development of appropriate CSB functionality is supported.

4.1.  Cloud Service Publish Interface

   The Cloud Service Publish interface is responsible for providing an
   CSB with appropriate Cloud Service and resource information.

   Service flow of cloud service subscription include: CSB send cloud
   service subscription request to Cloud Service Providers using Publish
   interface message Package within request message for subscription of
   cloud services from Cloud Service Providers.  CSB receive response
   reply by Cloud Service Providers for acceptance or fail reasons.

   Service flow of cloud service notification include: Cloud Service
   Providers send notification to CSB using Publish interface message
   Package within notification message for publishing cloud services.
   CSB return response to Cloud Service Providers for acceptance or fail
   reasons.

4.1.1.  HTTP Publish Interface Usage

   The following description will describe the use of HTTP [RFC2616] and
   HTTPS [RFC2818] as transport for a subscription/notification and the
   appropriate response.

   The cloud service subscription request, as defined by the
   <subscription>element of <csbrequest> element from Section 6, MUST be
   carried in the body of an HTTP/HTTPS request.  The MIME type
   contained in the HTTP/HTTPS request/response MUST be 'application/
   csb-publish+xml'.  This value MUST be reflected in the appropriate
   HTTP headers like 'Content-Type' and 'Accept'.  The body of the HTTP/
   HTTPS request MUST only contain the 'csbrequest' element as defined
   in Section 6.  The 'csbrequest' element is the primary container of

Shao Weixiang, et al.     Expires June 30, 2012                [Page 12]
Internet-Draft            Cloud Service Broker             December 2011

   information related to a Cloud service subscription request.

   The Cloud service subscription response, as defined by the
   <csbresponse> element from Section 6, MUST be carried in the body of
   an HTTP/HTTPS 200 response to the original HTTP/HTTPS request.  The
   MIME type contained in the HTTP/HTTPS request/response MUST be
   'application/csb-publish+xml'.  This value MUST be reflected in the
   appropriate HTTP headers like 'Content-Type' and 'Accept'.  The body
   of the HTTP/HTTPS 200 response MUST only contain the 'csbresponse'
   element as defined in Section 6.  The 'csbresponse' element is the
   primary container of information related to a Cloud service
   subscription response.

   The cloud service notification, as defined by the
   <csbnotification>element from Section 6, MUST be carried in the body
   of an HTTP/HTTPS request.  The MIME type contained in the HTTP/HTTPS
   request/response MUST be 'application/csb-publish+xml'.  This value
   MUST be reflected in the appropriate HTTP headers like 'Content-Type'
   and 'Accept'.  The body of the HTTP/HTTPS request MUST only contain
   the 'csbnotification' element as defined in Section 6.  The
   'csbnotification' element is the primary container of information
   related to a Cloud service notification.

   CSB can map existing HTTP verbs to operation for accessing and
   controling an appropriate Cloud Service and resource.  POST map to
   Create operation, GET map to Retrieve operation, PUT map to Create or
   Update operation, DELETE map to Delete operation.

4.1.2.  Publish interface Message Package Definition

   This Publish interface Message package is uesd for cloud services
   information publishing between Cloud Service Providers and Cloud
   Service Requesters/Consumers by CSB.

4.1.2.1.  Element Definitions

   This section defines the XML elements for the Publish interface
   message package defined in Section 4.1.  The formal XML schema
   definition for the Publish interface can be found in Section 6.

   The root element is <csbpublish>.  All other XML elements (request,
   response, notification) are contained within it.  The CSB Publish
   interface request element is detailed in Section 4.1.2.2.  The CSB
   Publish interface notification element is detailed in
   Section 4.1.2.3.  CSB Publish interface response element is contained
   in Section 4.1.2.4.

   The <csbpublish> element has the following attributes:

Shao Weixiang, et al.     Expires June 30, 2012                [Page 13]
Internet-Draft            Cloud Service Broker             December 2011

   version:  a token specifying the csb-publish package version.  The
      value is fixed as '1.0' for this version of the package.  The
      attribute MUST be present.

   The <csbpublish> element has the following child element, only one of
   which is allowed to occur in a request.

      <csbrequest> for sending an CSB request.  See Section 4.1.2.2.

      <csbresponse> for sending an CSB response.  See Section 4.1.2.4.

      <csbnotification> for sending an CSB notification.  See
      Section 4.1.2.3.

4.1.2.2.  <csbrequest>

   This section defines the <csbrequest> element used to initiate
   requests from an CSB to a Cloud Service Provider.  The element is a
   container for information relevant for the interrogation of a Cloud
   Service Provider.

   The <csbrequest> element has no defined attributes.

   The <csbrequest> element has the following sub-elements which are
   defined in the remainder of this section:

      <subscription> for initiating a subscription to a Cloud Service
      Provider from an CSB.  See Section 4.1.2.2.1.

4.1.2.2.1.  <subscription>

   The <subscription> element is included in a request from an CSB to a
   Cloud Service Provider to provide the details relating to the cloud
   service and resource information.  This element can be used either to
   request a new subscription or to update an existing one (e.g., to
   change the frequency of the updates), and to remove ongoing
   subscriptions as well (e.g., to stop an indefinite update).  The CSB
   will inform the Cloud Service Provider how long it wishes to receive
   updates for and the frequency that updates should be sent.  Updates
   related to the subscription are sent using the <csbnotification>
   element.

   The <subscription> element has the following attributes:

   id:  indicates a unique token representing the subscription between
      the csb and the Cloud Service Provider.  The attribute MUST be
      present.

Shao Weixiang, et al.     Expires June 30, 2012                [Page 14]
Internet-Draft            Cloud Service Broker             December 2011

   seqnumber:  indicates a sequence number to be used in conjunction
      with the subscrition id to identify a specific subscription
      command.  The first subscription MUST have 1 as 'seqnumber', and
      following subscriptions MUST increment by 1 the previous
      'seqnumber' value.  The attribute MUST be present.

   action:  provides the operation that should be carried out on the
      subscription:

      *  The value of 'create' instructs the Cloud Service Provider to
         attempt to setup a new subscription.

      *  The value of 'update' instructs the Cloud Service Provider to
         attempt to update an existing subscription.

      *  The value of 'remove' instructs the Cloud Service Provider to
         attempt to remove an existing subscription and consequently
         stop any ongoing related notification.

      The attribute MUST be present.

   The <subscription> element has the following child elements:

   expires:   Provides the amount of time in seconds that a subscription
      should be installed for notifications at the Cloud Service
      Provider.  Once the amount of time has passed, the subscription
      expires and the csb has to subscribe again in case it is still
      interested in receiving notifications from the Cloud Service
      Provider.  The element MAY be present.

   frequency:   Provides the frequency in seconds that the csb wishes to
      receive notifications from the Cloud Service Provider.  The
      element MAY be present.

   Please note that these two optional pieces of information provided by
   the csb only act as a suggestion: the Cloud Service Provider MAY
   change the proposed values if it considers the suggestions
   unacceptable (e.g., if the csb has requested a too high notification
   frequency).  In such case, the request would not fail, but the
   updated, acceptable values would be reported in the <csbresponse>
   accordingly.

4.1.2.3.  <csbnotification>

   The <csbnotification> element is included in a request from a Cloud
   Service Provider to an csb to provide the details relating current
   status.  The Cloud Service Provider will inform the csb of its
   current status as defined by the information in the <subscription>

Shao Weixiang, et al.     Expires June 30, 2012                [Page 15]
Internet-Draft            Cloud Service Broker             December 2011

   element.  Updates are sent using the <csbnotification> element
   contained in an <csbrequest> element.

   The <csbnotification> element has the following attributes:

   id:  indicates a unique token representing the subscription between
      the csb and the Cloud Service Provider and is the same as the one
      appearing in the <subscription> element.  The attribute MUST be
      present.

   seqnumber:  indicates a sequence number to be used in conjunction
      with the subscription id to identify a specific notification
      update.  The first notification MUST have 1 as 'seqnumber', and
      following notifications MUST increment by 1 the previous
      'seqnumber' value.  The attribute MUST be present.

   The <csbnotification> element has the following child elements:

      <Cloud-Service-Provider> for Cloud Service Provider information.
      See Section 4.1.2.3.1.

      <Cloud-Service> for specific Cloud Service information.  See
      Section 4.1.2.3.2.

      <encryption-support> for whether use encryption or not.  See
      Section 4.1.2.3.3.

      <label> for label.  See Section 4.1.2.3.4.

4.1.2.3.1.  <Cloud-Service-Provider>

   The <Cloud-Service-Provider> element provides the Cloud Service
   Provider information.  The element Must be present.

   <Cloud-Service-Provider-id> provides a unique system wide identifier
   for a Cloud Service Provider instance.  The element MUST be present.

   <Cloud-Service-Provider-status> element provides information
   detailing the current status of the Cloud Service Provider.  See
   Section 4.1.2.3.1.1.

   <Cloud-Service-Provider-URI> provides information about the URI of a
   Cloud Service Provider.  The element May be present.

4.1.2.3.1.1.  <Cloud-Service-Provider-status>

   The element MUST be present.  It can return one of the following
   values:

Shao Weixiang, et al.     Expires June 30, 2012                [Page 16]
Internet-Draft            Cloud Service Broker             December 2011

   Indicating that the Cloud Service Provider is available for service.

   Indicating that the Cloud Service Provider has been withdrawn from
   service, and as such should not be contacted before it becomes
   'active' again.

   Indicating that the Cloud Service Provider continues to process past
   requests but cannot accept new requests, and as such should not be
   contacted before it becomes 'active' again.

4.1.2.3.2.  <Cloud-Service>

   The <Cloud-Service> element provides specific Cloud Service
   information.  The element Must be present.

   <Cloud-Service-id> provides a unique system wide identifier for a
   specific Cloud Service instance.  The element MUST be present.

   <Cloud-Service-status> element provides information detailing the
   current status of the specific Cloud Service.  The element MUST be
   present.  It can return one of the following values:

   Indicating that the Cloud Service is available.

   Indicating that the Cloud Service has been withdrawn, and as such
   should not be contacted before it becomes 'active' again.

   Indicating that the Cloud Service continues to process past requests
   but cannot accept new requests, and as such should not be contacted
   before it becomes 'active' again.

   <Cloud-Service-URI> provides information about the URI of a specific
   Cloud Service.  The element May be present.

   for detail cloud service, below child elements, only one of which is
   allowed to occur in a <Cloud-Service> element.

   <IaaS-support> for specific IaaS information.  See
   Section 4.1.2.3.2.1.

   <PaaS-support> for specific PaaS information.  See
   Section 4.1.2.3.2.2.

   <SaaS-support> for specific SaaS information.  See
   Section 4.1.2.3.2.3.

   <DSaaS-support> for specific DSaaS information.  See
   Section 4.1.2.3.2.4.

Shao Weixiang, et al.     Expires June 30, 2012                [Page 17]
Internet-Draft            Cloud Service Broker             December 2011

4.1.2.3.2.1.  <IaaS-support>

   The <IaaS-support> element provides the Cloud Service Provider's
   supported IaaS service and resource information.  The element MAY be
   present.

   The <IaaS-support> element has the following child elements:

      <Link> for Links to other resources that are in relationship to
      the IaaS-support information (e.g. a XML document of IaaS
      information supported by CSP which follow DMTF OVF [DMTF OVF] or
      DMTF CIMI [DMTF CIMI] or OGF OCCI [OGF OCCI]).  See
      Section 4.1.2.3.2.5.

      <compute-support> for computing resource information.  See
      Section 4.1.2.3.2.1.1.

      <network-support> for network resource information.  See
      Section 4.1.2.3.2.1.2.

      <storage-support> for storage resource information.  See
      Section 4.1.2.3.2.1.3.

      <NetworkInterface-support> for Network Interface resource
      information.  See Section 4.1.2.3.2.1.4.

      <storagelink-support> for storage link information.  See
      Section 4.1.2.3.2.1.5.

4.1.2.3.2.1.1.  <compute-support>

   The <compute-support> element provides the IaaS details computing
   resource information.  The element MAY be present.

   The <compute-support> element has the following child elements:

      <architecture> for CPU Architecture of the instance, example: x86,
      x64.  The element MAY be present.

      <cores> for Number of CPU cores assigned to the instance.  The
      element MAY be present .

      <hostname> for Fully Qualified DNS hostname for the instance.  The
      element MAY be present .

Shao Weixiang, et al.     Expires June 30, 2012                [Page 18]
Internet-Draft            Cloud Service Broker             December 2011

      <speed> for CPU Clock frequency (speed) in gigahertz.  The element
      MAY be present .

      <memory> for Maximum RAM in gigabytes allocated to the instance.
      The element MAY be present .

      <status> for Current state of the instance: active, inactive,
      suspended.  The element MAY be present .

      <action> for Actions applicable to instances of the Compute type:
      start, stop, restart, suspend.  The element MAY be present.

4.1.2.3.2.1.2.  <network-support>

   The <network-support> element provides the IaaS details network
   resource information.  The element MAY be present.

   The <network-support> element has the following child elements:

      <vlan> for 802.1q VLAN Ientifier (e.g. 343).  The element MAY be
      present.

      <VLANlabel> for Tag based VLANs (e.g. external-dmz).  The element
      MAY be present .

      <address> for Internet Protocol(IP) network address.  The element
      MAY be present .

      <gateway> for gateway Internet Protocol(IP) network address.  The
      element MAY be present .

      <allocation> for Address allocation mechanism: dynamic, static.
      The element MAY be present .

      <status> for Current state of the instance: active, inactive.  The
      element MAY be present .

      <action> for Actions applicable to instances of the Network type:
      up, down.  The element MAY be present .

4.1.2.3.2.1.3.  <storage-support>

   The <storage-support> element provides the IaaS details storage
   resource information.The element MAY be present.

   The <storage-support> element has the following child elements:

Shao Weixiang, et al.     Expires June 30, 2012                [Page 19]
Internet-Draft            Cloud Service Broker             December 2011

      <size> for Storage size in gigabytes of the instance.  The element
      MAY be present.

      <status> for Current status of the instance: online, offine,
      degraded.  The element MAY be present .

      <action> for Actions applicable to instances of the Storage type:
      online, offline, backup, snapshot, resize.  The element MAY be
      present .

4.1.2.3.2.1.4.  <NetworkInterface-support>

   The <NetworkInterface-support> element provides client device (e.g.
   network adapter) information.The element MAY be present.

   The <NetworkInterface-support> element has the following child
   elements:

      <interface> for Identifier that relates the link to the link's
      device interface.  The element MAY be present.

      <mac> for MAC address associated with the link's device interface.
      The element MAY be present .

      <status> for Current status of the instance: active, inactive.
      The element MAY be present .

      <ip> for Internet Protocol(IP) network address of the link.  The
      element MAY be present .

      <gateway> for gateway Internet Protocol(IP) network address.  The
      element MAY be present .

      <allocation> for Address allocation mechanism: dynamic, static.
      The element MAY be present .

4.1.2.3.2.1.5.  <storagelink-support>

   The <storagelink-support> element provides a link from a Resource to
   a target Storage instance.  The element MAY be present.

   The <storagelink-support> element has the following child elements:

      <deviceid> for Device identifier.  The element MAY be present.

Shao Weixiang, et al.     Expires June 30, 2012                [Page 20]
Internet-Draft            Cloud Service Broker             December 2011

      <mountpoint> for Point to where the storage is mounted in the
      guest OS.  The element MAY be present .

      <status> for Current status of the instance: active, inactive.
      The element MAY be present .

4.1.2.3.2.2.  <PaaS-support>

   The <PaaS-support> element provides the Cloud Service Provider's
   details PaaS service and resource information.  The element MAY be
   present.

   The <PaaS-support> element may has the following child elements:

      <Link> for Links to other resources that are in relationship to
      the PaaS-support information (e.g. a XML document of PaaS
      information supported by CSP ).  See Section 4.1.2.3.2.5.

   Note: PaaS support informations are based on the specific CSP's
   platform (e.g. <Distributed-file-system> for Distributed file system
   information, <Distributed-database> for Distributed database
   information, <Distributed-cache> for Distributed cache information,
   <Distributed-computing-schedule> for Distributed computing schedule
   information, <Messaging> for Messaging information).  The detail PaaS
   support informations need to be further studied.

4.1.2.3.2.3.  <SaaS-support>

   The <SaaS-support> element provides the Cloud Service Provider's
   details SaaS service and resource information.  The element MAY be
   present.

   The <SaaS-support> element may has the following child elements,
   further study:

      <Link> for Links to other resources that are in relationship to
      the SaaS-support information (e.g. a XML document of SaaS
      information supported by CSP ).  See Section 4.1.2.3.2.5.

   Note: SaaS support informations are based on the specific CSP's
   platform (e.g. <Custom-Resource-Management> for Custom Resource
   Management system information, <Video-share> for Video share service
   information, <File-share> for File share service information, <Short-
   Message-Service> for Short Message Service information, <Multimedia-
   Message-Service> for Multimedia Message Service information).  The
   detail SaaS support informations need to be further studied.

Shao Weixiang, et al.     Expires June 30, 2012                [Page 21]
Internet-Draft            Cloud Service Broker             December 2011

4.1.2.3.2.4.  <DSaaS-support>

   The <DSaaS-support> element provides the Cloud Service Provider's
   details DSaaS service and resource information.  The element MAY be
   present.

   The <DSaaS-support> element has the following child elements:

      <Link> for Links to other resources that are in relationship to
      the DSaaS-support information (e.g. a XML document of DSaaS
      information supported by CSP ).  See Section 4.1.2.3.2.5.

      <DataObject-support> for Data Object information.  See
      Section 4.1.2.3.2.4.1.

      <ContainerObject-support> for Container Object information.  See
      Section 4.1.2.3.2.4.2.

      <DomainObject-support> for Domain Object information.  See
      Section 4.1.2.3.2.4.3.

      <QueueObject-support> for Queue Object information.  See
      Section 4.1.2.3.2.4.4.

      <CapabilityObject-support> for Capability Object information.  See
      Section 4.1.2.3.2.4.5.

4.1.2.3.2.4.1.  <DataObject-support>

   The <DataObject-support> element provides the DSaaS details file
   resource information within a filesystem.  The element MAY be
   present.

   The <DataObject-support> element has the following child elements:

      <mimetype> Mime type of the data contained within the value field
      of the data object.  The element MAY be present.

      <metadata> Metadata for the data object.  The element MAY be
      present .

      <objectURI> URI for the data object.  The element MAY be present .

      <objectID> ID for the data object.  The element MAY be present .

Shao Weixiang, et al.     Expires June 30, 2012                [Page 22]
Internet-Draft            Cloud Service Broker             December 2011

      <parentURI> parent URI for the data object.  The element MAY be
      present .

      <domainURI> URI of the owning domain.  The element MAY be present
      .

      <capabilitiesURI> URI to the capabilities for the object.  The
      element MAY be present .

      <value> The data object value.  The element MAY be present .

      <status> Current state of the data object.  The element MAY be
      present .

4.1.2.3.2.4.2.  <ContainerObject-support>

   The <ContainerObject-support> element provides the DSaaS details
   directory resource information within a filesystem.  The element MAY
   be present.

   The <ContainerObject-support>element has the following child
   elements:

      <metadata> Metadata for the Container object.  The element MAY be
      present .

      <objectURI> URI for the container object.  The element MAY be
      present .

      <objectID> ID for the container object.  The element MAY be
      present .

      <parentURI> parent URI for the container object.  The element MAY
      be present .

      <domainURI> URI of the owning domain.  The element MAY be present
      .

      <capabilitiesURI> URI to the capabilities for the object.  The
      element MAY be present .

      <exports> A structure for each protocol enabled for this
      container: OCCI, iSCSI, NFS, FCOE.  The element MAY be present .

      <snapshots> URI(s) of the SnapShot containers.  The element MAY be
      present .

Shao Weixiang, et al.     Expires June 30, 2012                [Page 23]
Internet-Draft            Cloud Service Broker             December 2011

      <children> children objects in the container.  The element MAY be
      present .

      <status> Current state of the container object.  The element MAY
      be present .

4.1.2.3.2.4.3.  <DomainObject-support>

   The <DomainObject-support> element provides the DSaaS details storage
   system information.  The element MAY be present.

   The <DomainObject-support> element has the following child elements:

      <metadata> Metadata for the Domain object.  The element MAY be
      present .

      <objectURI> URI for the Domain object.  The element MAY be present
      .

      <objectID> ID for the Domain object.  The element MAY be present .

      <parentURI> parent URI for the Domain object.  The element MAY be
      present .

      <domainURI> URI of the owning domain.  The element MAY be present
      .

      <capabilitiesURI> URI to the capabilities for the object.  The
      element MAY be present .

      <enabled>The enable state of the domain: "true" or "false".  The
      element MAY be present .

      <children> children objects in the container.  The element MAY be
      present .

4.1.2.3.2.4.4.  <QueueObject-support>

   The <QueueObject-support> element provides the DSaaS details queue
   information, a special class of container object and are used to
   provide first-in, first-out access when storing and retrieving data.
   The element MAY be present.

   The <QueueObject-support> element has the following child elements:

Shao Weixiang, et al.     Expires June 30, 2012                [Page 24]
Internet-Draft            Cloud Service Broker             December 2011

      <metadata> Metadata for the Queue object.  The element MAY be
      present .

      <objectURI> URI for the Queue object.  The element MAY be present
      .

      <objectID> ID for the Queue object.  The element MAY be present .

      <parentURI> parent URI for the Queue object.  The element MAY be
      present .

      <domainURI> URI of the owning domain.  The element MAY be present
      .

      <capabilitiesURI> URI to the capabilities for the object.  The
      element MAY be present .

      <status> Current state of the Queue object.  The element MAY be
      present .

4.1.2.3.2.4.5.  <CapabilityObject-support>

   The <CapabilityObject-support> element provides the DSaaS details
   Capability information, a special class of container object.  The
   element MAY be present.

   The <CapabilityObject-support>element has the following child
   elements:

      <type> Capability object type: Cloud Storage System-Wide
      Capabilities, Storage System Metadata Capabilities, Data System
      Metadata Capabilities, Data Object Capabilities, Container
      Capabilities, Domain Capabilities,Queue Object Capabilities.  The
      element MAY be present .

      <objectURI> URI for the Capability object.  The element MAY be
      present .

      <objectID> ID for the Capability object.  The element MAY be
      present .

      <parentURI> parent URI for the Capability object.  The element MAY
      be present .

      <capabilities> A tag list of capabilities supported by the
      corresponding object.  The element MAY be present .

Shao Weixiang, et al.     Expires June 30, 2012                [Page 25]
Internet-Draft            Cloud Service Broker             December 2011

      <children> children capabilities objects.  The element MAY be
      present .

4.1.2.3.2.5.  <Link>

   The <Link> element provides the document describe details support
   information.  The element MAY be present.

   The <Link> element has the following child elements:

      <rel> Describes the relationship between the URI and the resource.
      The element MAY be present.

      <href> URI of the document.  The element MAY be present .

4.1.2.3.3.  <encryption-support>

   The <encyption-support> element allows a Cloud Service Provider to
   declare support for encrypting, 'true' or 'false'.  The element MAY
   be present.

   The <encryption> element has no attributes.

   The <encryption> element has no child elements.

4.1.2.3.4.  <label>

   The <label> element allows a Cloud Service Provider to declare a
   piece of information that will be understood by the csb.  It's a
   string to allow arbitrary values to be returned to allow arbitrary
   classification, and as such is not meant to provide any explicit
   information associated with the features of a Cloud Service Provider.
   The element MAY be present.

   The <label> element has no attributes.

   The <label> element has no child elements.

4.1.2.4.  <csbresponse>

   Responses to requests are indicated by a <response> element from
   Section 6.

   The <response> element has following attributes:

Shao Weixiang, et al.     Expires June 30, 2012                [Page 26]
Internet-Draft            Cloud Service Broker             December 2011

   status:  numeric code indicating the response status.  The attribute
      MUST be present.

   reason:  string specifying a reason for the response status.  The
      attribute MAY be present.

   The following status codes are defined for 'status':

   +-----------+-------------------------------------------------------+
   | code      | description                                           |
   +-----------+-------------------------------------------------------+
   | 200       | OK                                                    |
   |           |                                                       |
   | 400       | Syntax error                                          |
   |           |                                                       |
   | 401       | Unable to create Subscription                         |
   |           |                                                       |
   | 402       | Unable to update Subscription                         |
   |           |                                                       |
   | 403       | Unable to remove Subscription                         |
   |           |                                                       |
   | 404       | Subscription does not exist                           |
   |           |                                                       |
   | 405       | Subscription already exists                           |
   |           |                                                       |
   | 420       | Unsupported attribute or element                      |
   +-----------+-------------------------------------------------------+

                     Table 1: <response> status codes

   In case a new subscription request made by an csb (action='create')
   has been accepted, the Cloud Service Provider MUST reply with a
   <csbresponse> with status code 200.  The same rule applies whenever a
   request to update (action='update') or remove (action='remove')
   anexisting transac tion can be fulfilled by the Cloud Service
   Provider.

   A subscription request, nevertheless, may fail for several reasons.
   In such a case, the status codes defined in Table 1 must be used
   instead.

   Specifically, if the Cloud Service Provider fails to handle a request
   due to a syntax error in the request itself (e.g., incorrext XML,
   violation of the schema constraints or invalid values in any of the
   attributes/elements) the Cloud Service Provider MUST reply with a
   <csbresponse> with status code 400.

   If a syntactically correct request fails because the request also

Shao Weixiang, et al.     Expires June 30, 2012                [Page 27]
Internet-Draft            Cloud Service Broker             December 2011

   includes any attribute/element the Cloud Service Provider doesn't
   understand, the Cloud Service Provider MUST reply with a
   <csbresponse> with status code 420.

   If a syntactically correct request fails because the csb wants to
   create a new subscription, but the provided intended id for the
   subscription already exists, the Cloud Service Provider MUST reply
   with a <csbresponse> with status code 405.

   If a syntactically correct request failes because the csb wants to
   update/remove a subscription that doesn't exist, the Cloud Service
   Provider MUST reply with a <csbresponse> with status code 404.

   If the Cloud Service Provider is unable to accept a request for any
   other reason (e.g., the csb has no more resources to fulfil the
   request), the Cloud Service Provider MUST reply with a <csbresponse>
   with status code 401/402/403, depending on the action the csb
   provided in its request:

   o  action='create' --> 401;

   o  action='update' --> 402;

   o  action='remove' --> 403;

   As explained in Section 4.1.2.2.1, even in case of an accepted
   subscription request the Cloud Service Provider might change the
   suggested 'expires' and 'frequency' values provided by the csb in its
   <csbrequest>, if it considers them unacceptable (e.g., the requested
   frequency is too high).  In such a case, the Cloud Service Provider
   MUST add an additional <subscription> element to the response,
   including the updated values, to inform the csb about the change.
   The Cloud Service Provider MAY include such element if the values
   have been accepted or were omitted in the request.

4.2.  Cloud Service Consumer Interface

   The Cloud Service Consumer interface provides the ability for
   requesters/consumers such as WEB service, applications, users to
   access and control an appropriate Cloud Service and resource by Cloud
   Service Provider to satisfy specific criteria.  CSB receives cloud
   service consumer request from Cloud Service Requesters/Consumers
   using Consumer interface message Package within Cloud service request
   message, the message include detailed demand cloud service
   information of Cloud Service Requesters /Consumers to the CSB.  CSB
   returns cloud service consumer responses to Cloud Service Requesters/
   Consumers using Consumer interface message Package within response
   message, the message include CSB's feedback information which CSB

Shao Weixiang, et al.     Expires June 30, 2012                [Page 28]
Internet-Draft            Cloud Service Broker             December 2011

   make an informed decision and provide the requester/consumer with an
   appropriate Cloud Service Provider's cloud service and resource.

4.2.1.  HTTP Consumer Interface Usage

   The following information explains the primary operations required to
   request and then receive information from an csb.  The following
   description will describe the use of HTTP [RFC2616] and HTTPS
   [RFC2818] as transport for a request for cloud resource and the
   appropriate response.

   The cloud resource request, as defined by the <CloudResourceRequest>
   element from Section 7, MUST be carried in the body of an HTTP/HTTPS
   request.  The MIME type contained in the HTTP/HTTPS request/response
   MUST be 'application/csb-consumer+xml'.  This value MUST be reflected
   in the appropriate HTTP headers like 'Content-Type' and 'Accept'.
   The body of the HTTP/HTTPS request MUST only contain the
   'CloudResourceRequest' element as defined in Section 7.  The
   'CloudResourceRequest' element is the primary container of
   information related to a Cloud resource request.

   The Cloud resource response, as defined by the
   <CloudResourceResponse> element from Section 7, MUST be carried in
   the body of an HTTP/HTTPS 200 response to the original HTTP/HTTPS
   request.  The MIME type contained in the HTTP/HTTPS request/response
   MUST be 'application/csb-consumer+xml'.  This value MUST be reflected
   in the appropriate HTTP headers like 'Content-Type' and 'Accept'.
   The body of the HTTP/HTTPS 200 response MUST only contain the
   'CloudResourceResponse' element as defined in Section 7.  The
   'CloudResourceResponse' element is the primary container of
   information related to a Cloud resource response.

   CSB can map existing HTTP verbs to operation for accessing and
   controling an appropriate Cloud Service and resource.  POST map to
   Create operation, GET map to Retrieve operation, PUT map to Create or
   Update operation, DELETE map to Delete operation, COPY map to
   Duplicate operation,HEAD map to Retrieve Metadata Only operation,
   MOVE map to Relocate operation, and OPTIONS verbs represents a
   request for information about the communication options available on
   the request/response chain identified by the Request-URI.

4.2.2.  Consumer interface Message Package Definition

   This Consumer interface Message package is uesd for cloud services
   consumer information interaction between Cloud Service Requesters/
   Consumers and CSB.

   This section defines the XML elements for the Consumer interface.

Shao Weixiang, et al.     Expires June 30, 2012                [Page 29]
Internet-Draft            Cloud Service Broker             December 2011

   The formal XML schema definition for the Consumer interface can be
   found in Section 7.

   The root element is <csbconsumer>.  All other XML elements (request,
   response) are contained within it.  The csb Consumer interface
   request element is detailed in Section 4.2.2.1. csb Consumer
   interface response element is contained in Section 4.2.2.2.

   The <csbconsumer> element has the following attributes:

   version:   a token specifying the csb-consumer package version.  The
      value is fixed as '1.0' for this version of the package.  The
      attribute MUST be present.

   The <csbconsumer> element has the following child elements, only one
   of which is allowed to occur.

      <CloudServiceRequest> for sending a Consumer request.  See
      Section 4.2.2.1.

      <CloudServiceResponse> for sending a Consumer response.  See
      Section 4.2.2.2.

4.2.2.1.  <CloudServiceRequest> element

   The <CloudServiceRequest> element provides a container for requester/
   consumer wishing to access and control cloud service resource from an
   external csb entity.

   The <CloudServiceRequest> element has the following child element.

      <job-info> for cloud service request job information.  See
      Section 4.2.2.3.

      <IaaS> for IaaS resource information .  See Section 4.2.2.6.

      <PaaS> for PaaS resource information .  See Section 4.2.2.7.

      <SaaS> for SaaS resource information .  See Section 4.2.2.8.

      <DSaaS> for DSaaS resource information .  See Section 4.2.2.9.

      <encryption> for encryption .  See Section 4.2.2.4.

Shao Weixiang, et al.     Expires June 30, 2012                [Page 30]
Internet-Draft            Cloud Service Broker             December 2011

4.2.2.2.  <CloudServiceResponse> element

   The <CloudServiceResponse> element provides a container for
   requester/consumer receiving cloud service information from an
   external csb entity.

   The <CloudServiceResponse> element has a single attribute 'status'
   which indicates the status code of the operation.  The following
   status codes are defined for 'status':

   +-----------+-------------------------------------------------------+
   | code      | description                                           |
   +-----------+-------------------------------------------------------+
   | 200       | OK                                                    |
   |           |                                                       |
   | 400       | Syntax error                                          |
   |           |                                                       |
   | 408       | Unable to find Resource                               |
   |           |                                                       |
   | 409       | Unable to update Resource                             |
   |           |                                                       |
   | 410       | Unable to remove Resource                             |
   |           |                                                       |
   | 420       | Unsupported attribute or element                      |
   +-----------+-------------------------------------------------------+

                     Table 2: <response> status codes

   In case a new cloud service request made by a requester/consumer has
   been accepted, the Cloud MUST reply with a <CloudServiceResponse>
   with status code 200 and the feedback cloud service information
   elements such as <IaaS> element, <PaaS> element, <SaaS> element,
   <DSaaS> element.  The same rule applies whenever a request to update
   (action='update') or remove (action='remove') an existing transaction
   can be fulfilled by the csb.

   A cloud service request, nevertheless, may fail for several reasons.
   In such a case, the status codes defined in Table 1 must be used
   instead.

   Specifically, if the csb fails to handle a request due to a syntax
   error in the request itself (e.g., incorrext XML, violation of the
   schema constraints or invalid values in any of the attributes/
   elements) the csb MUST reply with a <CloudServiceResponse> with
   status code 400.

   If a syntactically correct request fails because the request also
   includes any attribute/element the csb doesn't understand, the csb

Shao Weixiang, et al.     Expires June 30, 2012                [Page 31]
Internet-Draft            Cloud Service Broker             December 2011

   MUST reply with a <CloudServiceResponse> with status code 420.

   If a syntactically correct request fails because the csb couldn't
   find any Cloud able to fulfil the requirements presented by the
   requester/consumer in its request, the csb MUST reply with a
   <CloudServiceResponse> with status code 408.

   If a syntactically correct request fails because the csb couldn't
   update an existing request according to the new requirements
   presented by the requester/consumer in its request, the csb MUST
   reply with a <CloudServiceResponse> with status code 409.

   If a syntactically correct request fails because the csb couldn't
   remove an existing request and release the related resources as
   requested by the requester/consumer, the csb MUST reply with a
   <CloudServiceResponse> with status code 410.

   The <CloudServiceResponse> element has the following child element.

      <response-job-info> for cloud service response job information.
      See Section 4.2.2.5.

      <IaaS> for IaaS resource information .  See Section 4.2.2.6.

      <PaaS> for PaaS resource information .  See Section 4.2.2.7.

      <SaaS> for SaaS resource information .  See Section 4.2.2.8.

      <DSaaS> for DSaaS resource information .  See Section 4.2.2.9.

      <encryption> for encryption .  See Section 4.2.2.4.

4.2.2.3.  <job-info> element

   The <job-info> element is included in Consumer requests.  The element
   MAY be present.

   The <job-info> element has no attributes.

   The <job-info> element has the following child elements:

   job-id:   is a unique identifier that explicitly references an
      existing cloud service request job on the csb.

   action:   provides the operation that should be carried out on an
      existing job on an csb:

Shao Weixiang, et al.     Expires June 30, 2012                [Page 32]
Internet-Draft            Cloud Service Broker             December 2011

      *  The value of 'update' instructs the csb to attempt to update
         the existing cloud service request job.

      *  The value of 'remove' instructs the csb to attempt to remove
         the existing cloud service request job.

4.2.2.4.  <encryption>

   The <encyption> element allows a Cloud Service requester/consumer to
   declare whether use encrypting or not, 'true' or 'false'.  The
   element MAY be present.

   The <encryption> element has no attributes.

   The <encryption> element has no child elements.

4.2.2.5.  <response-job-info> element

   The <response-job-info> element is included in Consumer responses.
   This applies to responses to both requests to create new job and
   requests to update an existing job.  The element MAY be present:
   specifically, the element MUST be included in case the request was
   successful, while it would not appear otherwise (e.g., in case the
   request ended up with an error).

   The <response-job-info> element has no attributes.

   The <response-job-info> element has the following child elements:

   job-id:   is a unique identifier that explicitly references an
      existing job on the csb.

   job-status:   is the job status on CSB.

   expires:   includes the number of seconds that the cloud resources
      are reserved as part of this interaction.  If the lease is not
      refreshed before expiry, the csb will re-claim the resources and
      they will no longer be guaranteed.  It is RECOMMENDED that a
      minimum value of 300 seconds be used for the value of the
      'expires' attribute.  It is also RECOMMENDED that a requester/
      consumer refresh the lease at an interval that is not too close to
      the expiry time.  A value of 80% of the timeout period could be
      used.

   Cloud-service-URI:   is the URI to reach the Cloud handling the
      requested service resource.

Shao Weixiang, et al.     Expires June 30, 2012                [Page 33]
Internet-Draft            Cloud Service Broker             December 2011

4.2.2.6.  <IaaS>

   The <IaaS> element provides the details IaaS consumer information.
   The element MAY be present.

   The <IaaS> element has the following child elements:

      <Link> for Links to other resources that are in relationship to
      the IaaS information (e.g. a XML document of IaaS information
      requested by CSR ).  See Section 4.1.2.3.2.5.

      <compute> for computing resource information.  See
      Section 4.2.2.6.1.

      <network> for network resource information.  See
      Section 4.2.2.6.2.

      <storage> for storage resource information.  See
      Section 4.2.2.6.3.

      <NetworkInterface> for Network Interface information.  See
      Section 4.2.2.6.4.

      <storagelink> for storage link information.  See
      Section 4.2.2.6.5.

4.2.2.6.1.  <compute>

   The <compute> element provides the IaaS details computing resource
   information.  The element MAY be present.

   The <compute> element has the following child elements:

      <architecture> for CPU Architecture of the instance, example: x86,
      x64.  The element MAY be present.

      <cores> for Number of CPU cores assigned to the instance.  The
      element MAY be present .

      <hostname> for Fully Qualified DNS hostname for the instance.  The
      element MAY be present .

      <speed> for CPU Clock frequency (speed) in gigahertz.  The element
      MAY be present .

Shao Weixiang, et al.     Expires June 30, 2012                [Page 34]
Internet-Draft            Cloud Service Broker             December 2011

      <memory> for Maximum RAM in gigabytes allocated to the instance.
      The element MAY be present .

      <status> for Current state of the instance: active, inactive,
      suspended.  The element MAY be present .

      <action> for Actions applicable to instances of the Compute type:
      start, stop, restart, suspend.  The element MAY be present.

4.2.2.6.2.  <network>

   The <network> element provides the IaaS details network resource
   information.  The element MAY be present.

   The <network> element has the following child elements:

      <vlan> for 802.1q VLAN Ientifier (e.g. 343).  The element MAY be
      present.

      <VLANlabel> for Tag based VLANs (e.g. external-dmz).  The element
      MAY be present .

      <address> for Internet Protocol(IP) network address.  The element
      MAY be present .

      <gateway> for gateway Internet Protocol(IP) network address.  The
      element MAY be present .

      <allocation> for Address allocation mechanism: dynamic, static.
      The element MAY be present .

      <status> for Current state of the instance: active, inactive.  The
      element MAY be present .

      <action> for Actions applicable to instances of the Network type:
      up, down.  The element MAY be present .

4.2.2.6.3.  <storage>

   The <storage> element provides the IaaS details storage resource
   information.The element MAY be present.

   The <storage> element has the following child elements:

      <size> for Storage size in gigabytes of the instance.  The element
      MAY be present.

Shao Weixiang, et al.     Expires June 30, 2012                [Page 35]
Internet-Draft            Cloud Service Broker             December 2011

      <status> for Current status of the instance.  The element MAY be
      present .

      <action> for Actions applicable to instances of the Storage type:
      online, offline, backup, snapshot, resize.  The element MAY be
      present .

4.2.2.6.4.  <NetworkInterface>

   The <NetworkInterface> element provides client device (e.g. network
   adapter) information.The element MAY be present.

   The <NetworkInterface> element has the following child elements:

      <interface> for Identifier that relates the link to the link's
      device interface.  The element MAY be present.

      <mac> for MAC address associated with the link's device interface.
      The element MAY be present .

      <status> for Current status of the instance.  The element MAY be
      present .

      <ip> for Internet Protocol(IP) network address of the link.  The
      element MAY be present .

      <gateway> for gateway Internet Protocol(IP) network address.  The
      element MAY be present .

      <allocation> for Address allocation mechanism: dynamic, static.
      The element MAY be present .

4.2.2.6.5.  <storagelink>

   The <storagelink> element provides a link from a Resource to a target
   Storage instance.  The element MAY be present.

   The <storagelink> element has the following child elements:

      <deviceid> for Device identifier.  The element MAY be present.

      <mountpoint> for Point to where the storage is mounted in the
      guest OS.  The element MAY be present .

      <status> for Current status of the instance.  The element MAY be
      present .

Shao Weixiang, et al.     Expires June 30, 2012                [Page 36]
Internet-Draft            Cloud Service Broker             December 2011

4.2.2.7.  <PaaS>

   The <PaaS> element provides the details PaaS comsumption information.
   The element MAY be present.

   The <PaaS> element may has the following child elements:

      <Link> for Links to other resources that are in relationship to
      the PaaS information (e.g. a XML document of PaaS information
      requested by CSR ).  See Section 4.1.2.3.2.5.

4.2.2.8.  <SaaS>

   The <SaaS> element provides the details SaaS comsumption information.
   The element MAY be present.

   The <SaaS> element may has the following child elements:

      <Link> for Links to other resources that are in relationship to
      the SaaS information (e.g. a XML document of SaaS information
      requested by CSR ).  See Section 4.1.2.3.2.5.

4.2.2.9.  <DSaaS>

   The <DSaaS> element provides the details DSaaS comsumption
   information.  The element MAY be present.

   The <DSaaS> element has the following child elements:

      <Link> for Links to other resources that are in relationship to
      the DSaaS information (e.g. a XML document of DSaaS information
      requested by CSR ).  See Section 4.1.2.3.2.5.

      <DataObject> for Data Object information.  See Section 4.2.2.9.1.

      <ContainerObject> for Container Object information.  See
      Section 4.2.2.9.2.

      <DomainObject> for Domain Object information.  See
      Section 4.2.2.9.3.

      <QueueObject> for Queue Object information.  See
      Section 4.2.2.9.4.

      <CapabilityObject> for Capability Object information.  See
      Section 4.2.2.9.5.

Shao Weixiang, et al.     Expires June 30, 2012                [Page 37]
Internet-Draft            Cloud Service Broker             December 2011

4.2.2.9.1.  <DataObject>

   The <DataObject> element provides the DSaaS details file resource
   information within a filesystem.  The element MAY be present.

   The <DataObject> element has the following child elements:

      <mimetype> Mime type of the data contained within the value field
      of the data object.  The element MAY be present.

      <metadata> Metadata for the data object.  The element MAY be
      present .

      <objectURI> URI for the data object.  The element MAY be present .

      <objectID> ID for the data object.  The element MAY be present .

      <parentURI> parent URI for the data object.  The element MAY be
      present .

      <domainURI> URI of the owning domain.  The element MAY be present
      .

      <capabilitiesURI> URI to the capabilities for the object.  The
      element MAY be present .

      <value> The data object value.  The element MAY be present .

      <status> Current state of the data object.  The element MAY be
      present .

4.2.2.9.2.  <ContainerObject>

   The <ContainerObject> element provides the DSaaS details directory
   resource information within a filesystem.  The element MAY be
   present.

   The <ContainerObject>element has the following child elements:

      <metadata> Metadata for the Container object.  The element MAY be
      present .

      <objectURI> URI for the container object.  The element MAY be
      present .

Shao Weixiang, et al.     Expires June 30, 2012                [Page 38]
Internet-Draft            Cloud Service Broker             December 2011

      <objectID> ID for the container object.  The element MAY be
      present .

      <parentURI> parent URI for the container object.  The element MAY
      be present .

      <domainURI> URI of the owning domain.  The element MAY be present
      .

      <capabilitiesURI> URI to the capabilities for the object.  The
      element MAY be present .

      <exports> A structure for each protocol enabled for this
      container: OCCI, iSCSI, NFS, FCOE.  The element MAY be present .

      <snapshots> URI(s) of the SnapShot containers.  The element MAY be
      present .

      <children> children objects in the container.  The element MAY be
      present .

      <status> Current state of the container object.  The element MAY
      be present .

4.2.2.9.3.  <DomainObject>

   The <DomainObject> element provides the DSaaS details storage system
   information.  The element MAY be present.

   The <DomainObject> element has the following child elements:

      <metadata> Metadata for the Domain object.  The element MAY be
      present .

      <objectURI> URI for the Domain object.  The element MAY be present
      .

      <objectID> ID for the Domain object.  The element MAY be present .

      <parentURI> parent URI for the Domain object.  The element MAY be
      present .

      <domainURI> URI of the owning domain.  The element MAY be present
      .

Shao Weixiang, et al.     Expires June 30, 2012                [Page 39]
Internet-Draft            Cloud Service Broker             December 2011

      <capabilitiesURI> URI to the capabilities for the object.  The
      element MAY be present .

      <enabled>The enable state of the domain: "true" or "false".  The
      element MAY be present .

      <children> children objects in the container.  The element MAY be
      present .

4.2.2.9.4.  <QueueObject>

   The <QueueObject> element provides the DSaaS details queue
   information, a special class of container object and are used to
   provide first-in, first-out access when storing and retrieving data.
   The element MAY be present.

   The <QueueObject> element has the following child elements:

      <metadata> Metadata for the Queue object.  The element MAY be
      present .

      <objectURI> URI for the Queue object.  The element MAY be present
      .

      <objectID> ID for the Queue object.  The element MAY be present .

      <parentURI> parent URI for the Queue object.  The element MAY be
      present .

      <domainURI> URI of the owning domain.  The element MAY be present
      .

      <capabilitiesURI> URI to the capabilities for the object.  The
      element MAY be present .

      <status> Current state of the Queue object.  The element MAY be
      present .

4.2.2.9.5.  <CapabilityObject>

   The <CapabilityObject> element provides the DSaaS details Capability
   information, a special class of container object .  The element MAY
   be present.

   The <CapabilityObject>element has the following child elements:

Shao Weixiang, et al.     Expires June 30, 2012                [Page 40]
Internet-Draft            Cloud Service Broker             December 2011

      <type> Capability object type: Cloud Storage System-Wide
      Capabilities, Storage System Metadata Capabilities, Data System
      Metadata Capabilities, Data Object Capabilities, Container
      Capabilities, Domain Capabilities,Queue Object Capabilities.  The
      element MAY be present .

      <objectURI> URI for the Capability object.  The element MAY be
      present .

      <objectID> ID for the Capability object.  The element MAY be
      present .

      <parentURI> parent URI for the Capability object.  The element MAY
      be present .

      <capabilities> A tag list of capabilities supported by the
      corresponding object.  The element MAY be present .

      <children> children capabilities objects.  The element MAY be
      present .

Shao Weixiang, et al.     Expires June 30, 2012                [Page 41]
Internet-Draft            Cloud Service Broker             December 2011

5.  Examples

   This section provides examples of both the Publish and Consumer
   interfaces.

   Note that due to RFC formatting conventions, this section often
   splits HTTP across lines whose content would exceed 72 characters.  A
   backslash character marks where this line folding has taken place.
   This backslash and its trailing CRLF and whitespace would not appear
   in the actual protocol contents.  Besides, also note that the
   indentation of the XML content is only provided for readability:
   actual messages will follow strict XML syntax, which allows for, but
   does not require, indentation.

5.1.  Publish Example

   Figure 4 shows the subscription/notification mechanism the Publish
   interface is based on, as defined in Section 4.1.  The csb subscribes
   for information at the Cloud (message A1.), and the Cloud accepts the
   subscription (A2).  Notifications are triggered by the Cloud (A3.)
   and acknowledged by the csb (A4.).

           csb                                            cloud
            |                                              |
            | A1. HTTP POST  (csb subscription)            |
            |--------------------------------------------->|
            |                                   A2. 200 OK |
            |<---------------------------------------------|
            |                                              |
            .                                              .
            .                                              .
            |                                              |
            |                                              |--+ collect
            |                                              |  |
            |                                              |<-+ info
            |              B1. HTTP PUT (csb notification) |
            |<---------------------------------------------|
            | B2. 200 OK                                   |
            |--------------------------------------------->|
            |                                              |
            .                                              .
            .                                              .

                Figure 4: Publish Example: Sequence Diagram

Shao Weixiang, et al.     Expires June 30, 2012                [Page 42]
Internet-Draft            Cloud Service Broker             December 2011

   The rest of this section includes a full dump of the messages
   associated with the previous sequence diagram, specifically:

   1.  the subscription (A1), in an <csbrequest>

   2.  the Cloud accepting the subscription (A2), in an <csbresponse>
       200 OK;

   3.  a notification (A3), in a <csbnotification>

   4.  the ack to the notification (A4), in 200 message

  A1. csb -> Cloud (HTTP POST,publish request)
  ------------------------------------------
  POST /csb/publish HTTP/1.1
  Content-Length: 870
  Content-Type: application/csb-publish+xml
  Host: csb.example.net:8080
  Connection: Keep-Alive
  User-Agent: Apache-HttpClient/4.0.1 (java 1.5)

  <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  <csbpublish version="1.0" xmlns="urn:ietf:params:xml:ns:csb-publish">
      <csbrequest>
          <subscription action="create" seqnumber="1" id="p0T65U">
              <expires>600</expires>
              <frequency>20</frequency>
          </subscription>
      </csbrequest>
  </csbpublish>

  A2. csb <- Cloud (200 to POST, request accepted)
  ---------------------------------------------
  HTTP/1.1 200 OK
  X-Powered-By: Servlet/2.5
  Server: Sun GlassFish Communications Server 1.5
  Content-Type: application/csb-publish+xml;charset=ISO-8859-1
  Content-Length: 506
  Date: Mon, 08 Feb 2011 16:53:34 GMT

  <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  <csbpublish version="1.0" xmlns="urn:ietf:params:xml:ns:csb-publish">
          <csbresponse status="200" reason="OK: Request accepted"/>

Shao Weixiang, et al.     Expires June 30, 2012                [Page 43]
Internet-Draft            Cloud Service Broker             December 2011

  </csbpublish>

  B1. csb <- Cloud (HTTP PUT, event notification from Cloud)
  ---------------------------------------------------
  POST /csb/publish HTTP/1.1
  Server: Sun GlassFish Communications Server 1.5
  Content-Length: 1870
  Content-Type: application/csb-publish+xml
  Date: Mon, 08 Feb 2011 16:53:39 GMT

  <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  <csbpublish version="1.0" xmlns="urn:ietf:params:xml:ns:csb-publish" >
      <csbnotification seqnumber="1" id="QQ6J3c">
          <Cloud-Service-Provider>
             <Cloud-Service-Provider-id>a1b2c3d4
                  </Cloud-Service-Provider-id>
             <Cloud-Service-Provider-status>active
                  </Cloud-Service-Provider-status>
             <Cloud-Service-Provider-URI>.........
                  </Cloud-Service-Provider-URI>
          </Cloud-Service-Provider>
          <Cloud-Service>
             <Cloud-Service-id>w1x2y3z4</Cloud-Service-id>
             <Cloud-Service-status>active</Cloud-Service-status>
             <Cloud-Service-URI>.........</Cloud-Service-URI>
             <IaaS-support>
                <compute-support>
                  <architecture>......</architecture>
                  <cores >......</cores>
                  <hostname>......</hostname>
                  <speed>......</speed>
                  <memory>......</memory>
                  <status>......</status>
                </compute-support>
                <Network-support>
                  <vlan>......</vlan>
                  <VLANlabel>......</VLANlabel>
                  <address>......</address>
                  <gateway>......</gateway>
                  <allocation>......</allocation>
                </Network-support>
                <Storage-support>
                  <size>......</size>
                  <status>......</status>
                </Storage-support>
            </IaaS-support>
          </Cloud-Service>

Shao Weixiang, et al.     Expires June 30, 2012                [Page 44]
Internet-Draft            Cloud Service Broker             December 2011

          <Cloud-Service>
             <Cloud-Service-id>w2x3y4z5</Cloud-Service-id>
             <Cloud-Service-status>active</Cloud-Service-status>
             <Cloud-Service-URI>.........</Cloud-Service-URI>
             <DSaaS-support>
                <DataObject-support>
                  <metadata>.....</metadata>
                  <objectURI>.....</objectURI>
                  <objectID>.....</objectID>
                  <parentURI>.....</parentURI>
                  <domainURI>.....</domainURI>
                  <capabilitiesURI>.....</capabilitiesURI>
                  <Mimetype>.....</Mimetype>
                  <value>.....</value>
                </DataObject-support>
                <Container-support>
                  <metadata>.....</metadata>
                  <objectURI>.....</objectURI>
                  <objectID>.....</objectID>
                  <parentURI>.....</parentURI>
                  <domainURI>.....</domainURI>
                  <capabilitiesURI>.....</capabilitiesURI>
                  <exports>.....</exports>
                  <snapshots>.....</snapshots>
                  <children>.....</children>
                </Container-support>
                <Domain-support>
                  <metadata>.....</metadata>
                  <objectURI>.....</objectURI>
                  <objectID>.....</objectID>
                  <parentURI>.....</parentURI>
                  <domainURI>.....</domainURI>
                  <capabilitiesURI>.....</capabilitiesURI>
                  <children>.....</children>
                  <Location>.....</Location>
                </domain-support>
                <Queue-support>
                  <metadata>.....</metadata>
                  <objectURI>.....</objectURI>
                  <objectID>.....</objectID>
                  <parentURI>.....</parentURI>
                  <domainURI>.....</domainURI>
                  <capabilitiesURI>.....</capabilitiesURI>
                  <queueValues>.....</queueValues>
                </Queue-support>
             </DSaaS-support>
          </Cloud-Service>
          <Cloud-Service>

Shao Weixiang, et al.     Expires June 30, 2012                [Page 45]
Internet-Draft            Cloud Service Broker             December 2011

             <Cloud-Service-id>w3x6y6z9</Cloud-Service-id>
             <Cloud-Service-status>active</Cloud-Service-status>
             <Cloud-Service-URI>.........</Cloud-Service-URI>
             <PaaS-support>
                <link>
                  <rel>example CSP1's work flow</rel>
                  <href>...</href>
                </link>
             </PaaS-support>
          </Cloud-Service>
          <Cloud-Service>
             <Cloud-Service-id>w4x7y6h0</Cloud-Service-id>
             <Cloud-Service-status>active</Cloud-Service-status>
             <Cloud-Service-URI>.........</Cloud-Service-URI>
             <SaaS-support>
                <link>
                  <rel>example CSP2's sms service</rel>
                  <href>...</href>
                </link>
             </SaaS-support>
           </Cloud-Service>
           <encryption>false</encryption>
      </csbnotification>
  </csbpublish>

  B2. csb -> Cloud (200 to PUT)
  ------------------------------
  HTTP/1.1 200 OK

5.2.  Consumer Example

   The following example assumes the interested Requester/Consumer
   already knows the HTTP URL where an csb is listening for Consumer
   messages.

   Figure 5 shows the HTTP-based transaction between the Requester/
   Consumer and the csb.  The Requester sends a consumer request as
   payload of an HTTP POST message (1.), and the csb provides an answer
   in an HTTP 200 OK message (2.).

Shao Weixiang, et al.     Expires June 30, 2012                [Page 46]
Internet-Draft            Cloud Service Broker             December 2011

   Requester/Consumer                                CSB
       |                                              |
       | 1. HTTP POST (Consumer request)              |
       |--------------------------------------------->|
       |                                              |
       |                                              |
       |                                              |--+ Parse request
       |                                              |  | and see if
       |                                              |<-+ any cloud
       |                                              |    applies
       |                2. 200 OK (Consumer response) |
       |<---------------------------------------------|
       |                                              |
       |--+ Parse response and                        |
       |  | start job                             |
       |<-+ with Cloud reported by csb                |
       |                                              |
       .                                              .
       .                                              .

               Figure 5: Consumer Example: Sequence Diagram

   The rest of this section includes a full dump of the messages
   associated with the previous sequence diagram, specifically:

   1.  the Consumer request (1), in a <CloudServiceRequest> (HTTP POST,
       Content-Type 'application/csb-consumer+xml');

   2.  the Consumer response (2), in an <CloudServiceResponse> (HTTP 200
       OK, Content-Type 'application/csb-consumer+xml').

1. Requester/Consumer -> CSB (HTTP POST, Consumer request)
------------------------------------------
POST /csb/Consumer HTTP/1.1
Content-Length: 870
Content-Type: application/csb-consumer+xml
Host: csb.example.net:8080
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.0.1 (java 1.5)

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<csbconsumer version="1.0" xmlns="urn:ietf:params:xml:ns:csb-consumer">
    <CloudServiceRequest>
       <IaaS>
          <compute>

Shao Weixiang, et al.     Expires June 30, 2012                [Page 47]
Internet-Draft            Cloud Service Broker             December 2011

                <architecture>......</architecture>
            <cores >......</cores>
            <hostname>......</hostname>
            <speed>......</speed>
            <memory>......</memory>
            <status>......</status>
          </compute>
          <Network>
            <vlan>......</vlan>
            <VLANlabel>......</VLANlabel>
            <address>......</address>
            <gateway>......</gateway>
            <allocation>......</allocation>
          </Network>
          <Storage>
            <size>......</size>
            <status>......</status>
          </Storage>
       </IaaS>
    </CloudServiceRequest>
</csbconsumer>

2. Requester/Consumer <- CSB (200 to POST, Consumer response)
---------------------------------------------
HTTP/1.1 200 OK
X-Powered-By: Servlet/2.5
Server: Sun GlassFish Communications Server 1.5
Content-Type: application/csb-consumer+xml;charset=ISO-8859-1
Content-Length: 506
Date: Mon, 08 Feb 2011 16:33:34 GMT

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<csbconsumer version="1.0" xmlns="urn:ietf:params:xml:ns:csb-consumer" >
    <CloudServiceResponse reason="Resource found" status="200">
        <response-job-info>
            <job-id>0GX1jCYZ8WBa</job-id>
            <job-status>success</job-status>
            <expires>3600</expires>
            <Cloud-service-URI>http://xyz.example.com/IaaS?%E5%8D%97%
            -E4%BA%AC%E5%9C%B0%E5%9B%BE&um=9-hsTdK1BYKGvAOErJDTBA
            </Cloud-service-URI>
        </response-job-info>
        <IaaS>
          <compute>
                <architecture>......</architecture>
            <cores >......</cores>
            <hostname>......</hostname>

Shao Weixiang, et al.     Expires June 30, 2012                [Page 48]
Internet-Draft            Cloud Service Broker             December 2011

            <speed>......</speed>
            <memory>......</memory>
            <status>......</status>
          </compute>
          <Network>
            <vlan>......</vlan>
            <VLANlabel>......</VLANlabel>
            <address>......</address>
            <gateway>......</gateway>
            <allocation>......</allocation>
          </Network>
          <Storage>
            <size>......</size>
            <status>......</status>
          </Storage>
        </IaaS>
    </CloudServiceResponse>
</csbconsumer>

Shao Weixiang, et al.     Expires June 30, 2012                [Page 49]
Internet-Draft            Cloud Service Broker             December 2011

6.  Cloud Service Publish Interface XML Schema

   This section gives the XML Schema Definition [W3C.REC-xmlschema-1-
   20041028], [W3C.REC-xmlschema-2-20041028] of the "application/
   csb-publish+xml" format.

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="urn:ietf:params:xml:ns:csb-publish"
 elementFormDefault="qualified" blockDefault="#all"
 xmlns="urn:ietf:params:xml:ns:csb-publish"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema">

 <xsd:annotation>
  <xsd:documentation>
   IETF OPSAWG CSB 1.0

   This is the schema of the IETF OPSAWG CSB Publish Interface package.

   The schema namespace is urn:ietf:params:xml:ns:csb-publish

  </xsd:documentation>
 </xsd:annotation>

 <!--
  #############################################################

  SCHEMA IMPORTS

  #############################################################
 -->

 <xsd:import namespace="http://www.w3.org/XML/1998/namespace"
  schemaLocation="http://www.w3.org/2001/xml.xsd">
  <xsd:annotation>
   <xsd:documentation>
    This import brings in the XML attributes for
    xml:base, xml:lang, etc
   </xsd:documentation>
  </xsd:annotation>
 </xsd:import>

<!--
  #####################################################

  Extensible core type

Shao Weixiang, et al.     Expires June 30, 2012                [Page 50]
Internet-Draft            Cloud Service Broker             December 2011

  #####################################################
 -->

 <xsd:complexType name="Tcore">
  <xsd:annotation>
   <xsd:documentation>
    This type is extended by other (non-mixed) component types to
    allow attributes from other namespaces.
   </xsd:documentation>
  </xsd:annotation>
  <xsd:sequence/>
  <xsd:anyAttribute namespace="##other" processContents="lax" />
 </xsd:complexType>

<!--
  #####################################################

  TOP LEVEL ELEMENT: csbpublish

  #####################################################
 -->

<xsd:complexType name="csbpublishType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
     <xsd:choice>
      <xsd:element ref="csbrequest" />
      <xsd:element ref="csbresponse" />
      <xsd:element ref="csbnotification" />
      <xsd:any namespace="##other" minOccurs="0"
       maxOccurs="unbounded" processContents="lax" />
     </xsd:choice>
    </xsd:sequence>
    <xsd:attribute name="version" type="version.datatype"
      use="required" />
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>

 <xsd:element name="csbpublish" type="csbpublishType" />

<!--
  #####################################################

Shao Weixiang, et al.     Expires June 30, 2012                [Page 51]
Internet-Draft            Cloud Service Broker             December 2011

  csbrequest TYPE

  #####################################################
 -->

<!--  csbrequest -->

 <xsd:complexType name="csbrequestType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
     <xsd:element ref="subscription" />
     <xsd:any namespace="##other" minOccurs="0"
      maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>

 <xsd:element name="csbrequest" type="csbrequestType" />

<!--  subscription -->

<xsd:complexType name="subscriptionType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
     <xsd:element name="expires" type="xsd:nonNegativeInteger"
      minOccurs="0" maxOccurs="1" />
     <xsd:element name="frequency" type="xsd:nonNegativeInteger"
      minOccurs="0" maxOccurs="1" />
     <xsd:any namespace="##other" minOccurs="0"
      maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:attribute name="id" type="id.datatype" use="required" />
    <xsd:attribute name="seqnumber" type="xsd:nonNegativeInteger"
      use="required" />
    <xsd:attribute name="action" type="action.datatype"
      use="required" />
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>

 <xsd:element name="subscription" type="subscriptionType" />

Shao Weixiang, et al.     Expires June 30, 2012                [Page 52]
Internet-Draft            Cloud Service Broker             December 2011

<!--
  #####################################################

  csbresponse TYPE

  #####################################################
 -->

<!--  csbresponse -->

 <xsd:complexType name="csbresponseType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
     <xsd:any namespace="##other" minOccurs="0"
       maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:attribute name="status" type="status.datatype"
     use="required" />
    <xsd:attribute name="reason" type="xsd:string" />
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>

 <xsd:element name="csbresponse" type="csbresponseType" />

<!--
  #####################################################

  csbnotification TYPE

  #####################################################
 -->

<!--  csbnotification -->

<xsd:complexType name="csbnotificationType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
     <xsd:element ref="Cloud-Service-Provider" />
     <xsd:element ref="Cloud-Service" />
     <xsd:element ref="encryption-support" minOccurs="0" />
     <xsd:element ref="label" minOccurs="0" />
     <xsd:any namespace="##other" minOccurs="0"
      maxOccurs="unbounded" processContents="lax" />

Shao Weixiang, et al.     Expires June 30, 2012                [Page 53]
Internet-Draft            Cloud Service Broker             December 2011

    </xsd:sequence>
     <xsd:attribute name="id" type="id.datatype"
      use="required" />
     <xsd:attribute name="seqnumber" type="xsd:nonNegativeInteger"
      use="required" />
     <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>

 <xsd:element name="csbnotification" type="csbnotificationType" />

<!--  Cloud-Service-Provider -->

<xsd:complexType name="Cloud-Service-ProviderType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
     <xsd:element name="Cloud-Service-Provider-id"
        type="id.datatype"/>
     <xsd:element name="Cloud-Service-Provider-status"
        type="CSPstatus.datatype" />
     <xsd:element name="Cloud-Service-Provider-URI" type="xsd:anyURI"
         minOccurs="0" maxOccurs="1" />
     <xsd:any namespace="##other" minOccurs="0"
      maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>

 <xsd:element name="Cloud-Service-Provider"
        type="Cloud-Service-ProviderType" />

<!--  Cloud-Service-->

<xsd:complexType name="Cloud-ServiceType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
     <xsd:element name="Cloud-Service-id" type="id.datatype"/>
     <xsd:element name="Cloud-Service-status"
        type="CSstatus.datatype"/>
     <xsd:element name="Cloud-Service-URI" type="xsd:anyURI"
        minOccurs="0" maxOccurs="1" />
     <xsd:choice>
       <xsd:element ref="IaaS-support" minOccurs="0" />
       <xsd:element ref="PaaS-support" minOccurs="0" />

Shao Weixiang, et al.     Expires June 30, 2012                [Page 54]
Internet-Draft            Cloud Service Broker             December 2011

       <xsd:element ref="SaaS-support" minOccurs="0" />
       <xsd:element ref="DSaaS-support" minOccurs="0" />
     </xsd:choice>
     <xsd:any namespace="##other" minOccurs="0"
      maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>

 <xsd:element name="Cloud-Service" type="Cloud-ServiceType" />

<!--  IaaS-support-->

<xsd:complexType name="IaaS-supportType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
     <xsd:element ref="Link" minOccurs="0" />
     <xsd:element ref="compute-support" minOccurs="0" />
     <xsd:element ref="network-support" minOccurs="0" />
     <xsd:element ref="storage-support" minOccurs="0" />
     <xsd:element ref="NetworkInterface-support" minOccurs="0" />
     <xsd:element ref="storagelink-support" minOccurs="0" />
     <xsd:any namespace="##other" minOccurs="0"
      maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>

 <xsd:element name="IaaS-support" type="IaaS-supportType" />

<xsd:complexType name="compute-supportType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
     <xsd:element name="architecture" type="xsd:string"
        minOccurs="0" />
     <xsd:element name="cores" type="xsd:nonNegativeInteger"
        minOccurs="0" />
     <xsd:element name="hostname" type="xsd:string" minOccurs="0" />
     <xsd:element name="speed" type="xsd:nonNegativeInteger"
        minOccurs="0" />
     <xsd:element name="memory" type="xsd:nonNegativeInteger"
        minOccurs="0" />
     <xsd:element name="status" type="computestatus.datatype"
        minOccurs="0" />

Shao Weixiang, et al.     Expires June 30, 2012                [Page 55]
Internet-Draft            Cloud Service Broker             December 2011

     <xsd:element name="action" type="computeaction.datatype"
        minOccurs="0" />
     <xsd:any namespace="##other" minOccurs="0"
      maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>

 <xsd:element name="compute-support" type="compute-supportType" />

<xsd:complexType name="network-supportType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
     <xsd:element name="vlan" type="id.datatype"        minOccurs="0"/>
     <xsd:element name="VLANlabel" type="label.datatype" minOccurs="0"/>
     <xsd:element name="address" type="xsd:string" minOccurs="0" />
     <xsd:element name="gateway" type="xsd:string" minOccurs="0" />
     <xsd:element name="allocation" type="allocation.datatype"
        minOccurs="0" />
     <xsd:element name="status" type="networkstatus.datatype"
        minOccurs="0" />
     <xsd:element name="action" type="networkaction.datatype"
        minOccurs="0" />
     <xsd:any namespace="##other" minOccurs="0"
      maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>

 <xsd:element name="network-support" type="network-supportType" />

<xsd:complexType name="storage-supportType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
     <xsd:element name="size" type="xsd:nonNegativeInteger"
        minOccurs="0" />
     <xsd:element name="status" type="storagestatus.datatype"
        minOccurs="0" />
     <xsd:element name="action" type="storageaction.datatype"
        minOccurs="0" />
     <xsd:any namespace="##other" minOccurs="0"
      maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
   </xsd:extension>

Shao Weixiang, et al.     Expires June 30, 2012                [Page 56]
Internet-Draft            Cloud Service Broker             December 2011

  </xsd:complexContent>
 </xsd:complexType>

 <xsd:element name="storage-support" type="storage-supportType" />

<xsd:complexType name="NetworkInterface-supportType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
     <xsd:element name="interface" type="id.datatype"   minOccurs="0"/>
     <xsd:element name="mac" type="xsd:string" minOccurs="0" />
     <xsd:element name="status" type="networkstatus.datatype"
        minOccurs="0" />
     <xsd:element name="ip" type="xsd:string" minOccurs="0" />
     <xsd:element name="gateway" type="xsd:string" minOccurs="0" />
     <xsd:element name="allocation" type="allocation.datatype"
        minOccurs="0" />
     <xsd:any namespace="##other" minOccurs="0"
      maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>

 <xsd:element name="NetworkInterface-support"
        type="NetworkInterface-supportType" />

<xsd:complexType name="storagelink-supportType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
     <xsd:element name="deviceid" type="id.datatype"    minOccurs="0" />
     <xsd:element name="mountpoint" type="xsd:string" minOccurs="0" />
     <xsd:element name="status" type="networkstatus.datatype"
        minOccurs="0" />
     <xsd:any namespace="##other" minOccurs="0"
      maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>

 <xsd:element name="storagelink-support"
        type="storagelink-supportType" />

<!--  PaaS-support-->

<xsd:complexType name="PaaS-supportType">

Shao Weixiang, et al.     Expires June 30, 2012                [Page 57]
Internet-Draft            Cloud Service Broker             December 2011

  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
        <!--  further study-->
     <xsd:element ref="Link" minOccurs="0" />
     <xsd:any namespace="##other" minOccurs="0"
      maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>

 <xsd:element name="PaaS-support" type="PaaS-supportType" />

<!--  SaaS-support-->

<xsd:complexType name="SaaS-supportType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
     <xsd:element ref="Link" minOccurs="0" />
     <xsd:any namespace="##other" minOccurs="0"
      maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>

 <xsd:element name="SaaS-support" type="SaaS-supportType" />

<!--  DSaaS-support-->

<xsd:complexType name="DSaaS-supportType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
     <xsd:element ref="Link" minOccurs="0" />
     <xsd:element ref="DataObject-support" minOccurs="0" />
     <xsd:element ref="ContainerObject-support" minOccurs="0" />
     <xsd:element ref="DomainObject-support" minOccurs="0" />
     <xsd:element ref="QueueObject-support" minOccurs="0" />
     <xsd:element ref="CapabilityObject-support" minOccurs="0" />
     <xsd:any namespace="##other" minOccurs="0"
      maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>

Shao Weixiang, et al.     Expires June 30, 2012                [Page 58]
Internet-Draft            Cloud Service Broker             December 2011

 <xsd:element name="DSaaS-support" type="DSaaS-supportType" />

<xsd:complexType name="DataObject-supportType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
     <xsd:element name="mimetype" type="xsd:string" minOccurs="0" />
     <xsd:element name="metadata" type="xsd:string" minOccurs="0" />
     <xsd:element name="objectURI" type="xsd:anyURI" minOccurs="0" />
     <xsd:element name="objectID" type="id.datatype" minOccurs="0" />
     <xsd:element name="parentURI" type="xsd:anyURI" minOccurs="0" />
     <xsd:element name="domainURI" type="xsd:anyURI" minOccurs="0" />
     <xsd:element name="capabilitiesURI" type="xsd:anyURI"
        minOccurs="0" />
     <xsd:element name="value" type="xsd:string" minOccurs="0" />
     <xsd:element name="status" type="xsd:string" minOccurs="0" />
     <xsd:any namespace="##other" minOccurs="0"
      maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>

 <xsd:element name="DataObject-support"
        type="DataObject-supportType" />

<xsd:complexType name="ContainerObject-supportType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
     <xsd:element name="metadata" type="xsd:string" minOccurs="0" />
     <xsd:element name="objectURI" type="xsd:anyURI" minOccurs="0" />
     <xsd:element name="objectID" type="id.datatype" minOccurs="0" />
     <xsd:element name="parentURI" type="xsd:anyURI" minOccurs="0" />
     <xsd:element name="domainURI" type="xsd:anyURI" minOccurs="0" />
     <xsd:element name="capabilitiesURI" type="xsd:anyURI"
        minOccurs="0" />
     <xsd:element name="exports" type="xsd:string" minOccurs="0" />
     <xsd:element name="snapshots" type="xsd:string" minOccurs="0" />
     <xsd:element name="children" type="xsd:string" minOccurs="0" />
     <xsd:element name="status" type="xsd:string" minOccurs="0" />
     <xsd:any namespace="##other" minOccurs="0"
      maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>

Shao Weixiang, et al.     Expires June 30, 2012                [Page 59]
Internet-Draft            Cloud Service Broker             December 2011

 <xsd:element name="ContainerObject-support"
        type="ContainerObject-supportType" />

<xsd:complexType name="DomainObject-supportType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
     <xsd:element name="metadata" type="xsd:string" minOccurs="0" />
     <xsd:element name="objectURI" type="xsd:anyURI" minOccurs="0" />
     <xsd:element name="objectID" type="id.datatype" minOccurs="0" />
     <xsd:element name="parentURI" type="xsd:anyURI" minOccurs="0" />
     <xsd:element name="domainURI" type="xsd:anyURI" minOccurs="0" />
     <xsd:element name="capabilitiesURI" type="xsd:anyURI"
        minOccurs="0" />
     <xsd:element name="enabled" type="boolean.datatype"
        minOccurs="0" />
     <xsd:element name="children" type="xsd:string" minOccurs="0" />
     <xsd:any namespace="##other" minOccurs="0"
      maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>

 <xsd:element name="DomainObject-support"
        type="DomainObject-supportType" />

<xsd:complexType name="QueueObject-supportType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
     <xsd:element name="metadata" type="xsd:string" minOccurs="0" />
     <xsd:element name="objectURI" type="xsd:anyURI" minOccurs="0" />
     <xsd:element name="objectID" type="id.datatype" minOccurs="0" />
     <xsd:element name="parentURI" type="xsd:anyURI" minOccurs="0" />
     <xsd:element name="domainURI" type="xsd:anyURI" minOccurs="0" />
     <xsd:element name="capabilitiesURI" type="xsd:anyURI"
        minOccurs="0" />
     <xsd:element name="status" type="xsd:string" minOccurs="0" />
     <xsd:any namespace="##other" minOccurs="0"
      maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>

 <xsd:element name="QueueObject-support"
        type="QueueObject-supportType" />

Shao Weixiang, et al.     Expires June 30, 2012                [Page 60]
Internet-Draft            Cloud Service Broker             December 2011

<xsd:complexType name="CapabilityObject-supportType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
     <xsd:element name="type"
        type="Capabilityobjecttype.datatype" minOccurs="0" />
     <xsd:element name="objectURI" type="xsd:anyURI" minOccurs="0" />
     <xsd:element name="objectID" type="id.datatype" minOccurs="0" />
     <xsd:element name="parentURI" type="xsd:anyURI" minOccurs="0" />
     <xsd:element name="domainURI" type="xsd:anyURI" minOccurs="0" />
     <xsd:element name="capabilitiesURI" type="xsd:anyURI"
        minOccurs="0" />
     <xsd:element name="status" type="xsd:string" minOccurs="0" />
     <xsd:any namespace="##other" minOccurs="0"
      maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>

 <xsd:element name="CapabilityObject-support"
        type="CapabilityObject-supportType" />

<!--  label -->

 <xsd:element name="label" type="label.datatype" />

<!--  encryption -->

<xsd:element name="encryption-support" type="boolean.datatype" />

<!--Link -->
<xsd:complexType name="LinkType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
     <xsd:element name="rel" type="xsd:string" minOccurs="0" />
     <xsd:element name="href" type="xsd:anyURI" minOccurs="0" />
     <xsd:any namespace="##other" minOccurs="0"
      maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>

 <xsd:element name="Link" type="LinkType" />

<!--

Shao Weixiang, et al.     Expires June 30, 2012                [Page 61]
Internet-Draft            Cloud Service Broker             December 2011

  ####################################################

  DATATYPES

  ####################################################
 -->

 <xsd:simpleType name="version.datatype">
  <xsd:restriction base="xsd:NMTOKEN">
   <xsd:enumeration value="1.0" />
  </xsd:restriction>
 </xsd:simpleType>

<xsd:simpleType name="id.datatype">
  <xsd:restriction base="xsd:NMTOKEN" />
 </xsd:simpleType>

 <xsd:simpleType name="status.datatype">
  <xsd:restriction base="xsd:positiveInteger">
   <xsd:pattern value="[0-9][0-9][0-9]" />
  </xsd:restriction>
 </xsd:simpleType>

 <xsd:simpleType name="CSPstatus.datatype">
  <xsd:restriction base="xsd:NMTOKEN">
   <xsd:enumeration value="active" />
   <xsd:enumeration value="deactivated" />
   <xsd:enumeration value="unavailable" />
  </xsd:restriction>
 </xsd:simpleType>

 <xsd:simpleType name="CSstatus.datatype">
  <xsd:restriction base="xsd:NMTOKEN">
   <xsd:enumeration value="active" />
   <xsd:enumeration value="deactivated" />
   <xsd:enumeration value="unavailable" />
  </xsd:restriction>
 </xsd:simpleType>

 <xsd:simpleType name="computestatus.datatype">
  <xsd:restriction base="xsd:NMTOKEN">
   <xsd:enumeration value="active" />
   <xsd:enumeration value="inactive" />
   <xsd:enumeration value="suspended" />
  </xsd:restriction>
 </xsd:simpleType>

Shao Weixiang, et al.     Expires June 30, 2012                [Page 62]
Internet-Draft            Cloud Service Broker             December 2011

 <xsd:simpleType name="networkstatus.datatype">
  <xsd:restriction base="xsd:NMTOKEN">
   <xsd:enumeration value="active" />
   <xsd:enumeration value="inactive" />
  </xsd:restriction>
 </xsd:simpleType>

 <xsd:simpleType name="storagestatus.datatype">
  <xsd:restriction base="xsd:NMTOKEN">
   <xsd:enumeration value="online" />
   <xsd:enumeration value="offline" />
   <xsd:enumeration value="degraded" />
  </xsd:restriction>
 </xsd:simpleType>

 <xsd:simpleType name="action.datatype">
  <xsd:restriction base="xsd:NMTOKEN">
   <xsd:enumeration value="create" />
   <xsd:enumeration value="update" />
   <xsd:enumeration value="remove" />
  </xsd:restriction>
 </xsd:simpleType>

 <xsd:simpleType name="computeaction.datatype">
  <xsd:restriction base="xsd:NMTOKEN">
   <xsd:enumeration value="start" />
   <xsd:enumeration value="stop" />
   <xsd:enumeration value="restart" />
   <xsd:enumeration value="suspend" />
  </xsd:restriction>
 </xsd:simpleType>

 <xsd:simpleType name="networkaction.datatype">
  <xsd:restriction base="xsd:NMTOKEN">
   <xsd:enumeration value="up" />
   <xsd:enumeration value="down" />
  </xsd:restriction>
 </xsd:simpleType>

 <xsd:simpleType name="storageaction.datatype">
  <xsd:restriction base="xsd:NMTOKEN">
   <xsd:enumeration value="online" />
   <xsd:enumeration value="offline" />
   <xsd:enumeration value="backup" />
   <xsd:enumeration value="snapshot" />
   <xsd:enumeration value="resize" />
  </xsd:restriction>
 </xsd:simpleType>

Shao Weixiang, et al.     Expires June 30, 2012                [Page 63]
Internet-Draft            Cloud Service Broker             December 2011

 <xsd:simpleType name="allocation.datatype">
  <xsd:restriction base="xsd:NMTOKEN">
   <xsd:enumeration value="dynamic" />
   <xsd:enumeration value="static" />
  </xsd:restriction>
 </xsd:simpleType>

 <xsd:simpleType name="boolean.datatype">
  <xsd:restriction base="xsd:NMTOKEN">
   <xsd:enumeration value="true" />
   <xsd:enumeration value="false" />
  </xsd:restriction>
 </xsd:simpleType>

 <xsd:simpleType name="Capabilityobjecttype.datatype">
  <xsd:restriction base="xsd:NMTOKEN">
   <xsd:enumeration value="Cloud Storage System-Wide Capabilities" />
   <xsd:enumeration value="Storage System Metadata Capabilities" />
   <xsd:enumeration value="Data System Metadata Capabilities" />
   <xsd:enumeration value="Data Object Capabilities" />
   <xsd:enumeration value="Container Capabilities" />
   <xsd:enumeration value="Domain Capabilities" />
   <xsd:enumeration value="Queue Object Capabilities" />
  </xsd:restriction>
 </xsd:simpleType>

 <xsd:simpleType name="label.datatype">
  <xsd:restriction base="xsd:NMTOKEN" />
 </xsd:simpleType>

</xsd:schema>

                                 Figure 6

Shao Weixiang, et al.     Expires June 30, 2012                [Page 64]
Internet-Draft            Cloud Service Broker             December 2011

7.  Cloud Service Consumer Interface XML Schema

   This section gives the XML Schema Definition [W3C.REC-xmlschema-1-
   20041028], [W3C.REC-xmlschema-2-20041028] of the "application/
   csb-consumer+xml" format.

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="urn:ietf:params:xml:ns:csb-consumer"
 elementFormDefault="qualified" blockDefault="#all"
 xmlns="urn:ietf:params:xml:ns:csb-consumer"
 xmlns:xsd="http://www.w3.org/2001/XMLSchema">

 <xsd:annotation>
  <xsd:documentation>
   IETF OPSAWG csb 1.0

   This is the schema of the IETF OPSAWG CSB Consumer interface
   Package.

   The schema namespace is urn:ietf:params:xml:ns:csb-consumer

  </xsd:documentation>
 </xsd:annotation>

 <!--
  #############################################################

  SCHEMA IMPORTS

  #############################################################
 -->

 <xsd:import namespace="http://www.w3.org/XML/1998/namespace"
  schemaLocation="http://www.w3.org/2001/xml.xsd">
  <xsd:annotation>
   <xsd:documentation>
    This import brings in the XML attributes for
    xml:base, xml:lang, etc
   </xsd:documentation>
  </xsd:annotation>
 </xsd:import>

<!--
  #####################################################

Shao Weixiang, et al.     Expires June 30, 2012                [Page 65]
Internet-Draft            Cloud Service Broker             December 2011

  Extensible core type

  #####################################################
 -->

 <xsd:complexType name="Tcore">
  <xsd:annotation>
   <xsd:documentation>
    This type is extended by other (non-mixed) component types to
    allow attributes from other namespaces.
   </xsd:documentation>
  </xsd:annotation>
  <xsd:sequence/>
  <xsd:anyAttribute namespace="##other" processContents="lax" />
 </xsd:complexType>

<!--
  #####################################################

  TOP LEVEL ELEMENT: csbconsumer

  #####################################################
 -->

<xsd:complexType name="csbconsumerType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
     <xsd:choice>
      <xsd:element ref="CloudServiceRequest" />
      <xsd:element ref="CloudServiceResponse" />
      <xsd:any namespace="##other" minOccurs="0"
       maxOccurs="unbounded" processContents="lax" />
     </xsd:choice>
    </xsd:sequence>
    <xsd:attribute name="version" type="version.datatype"
      use="required" />
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>

 <xsd:element name="csbconsumer" type="csbconsumerType" />

<!--
  #####################################################

Shao Weixiang, et al.     Expires June 30, 2012                [Page 66]
Internet-Draft            Cloud Service Broker             December 2011

  CloudServiceRequest TYPE

  #####################################################
 -->

<!--  CloudServiceRequst -->

 <xsd:complexType name="CloudServiceRequestType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
      <xsd:element ref="job-info" minOccurs="0" />
      <xsd:element ref="IaaS" minOccurs="0" />
      <xsd:element ref="PaaS" minOccurs="0" />
      <xsd:element ref="SaaS" minOccurs="0" />
      <xsd:element ref="DSaaS" minOccurs="0" />
      <xsd:element ref="encryption" minOccurs="0" />
     <xsd:any namespace="##other" minOccurs="0"
      maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>

 <xsd:element name="CloudServiceRequest"
         type="CloudServiceRequestType" />

<!--
  #####################################################

  CloudServiceResponse TYPE

  #####################################################
 -->

<!--  CloudServiceResponse -->

 <xsd:complexType name="CloudServiceResponseType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
       <xsd:element ref="response-job-info" minOccurs="0" />
       <xsd:element ref="IaaS" minOccurs="0" />
       <xsd:element ref="PaaS" minOccurs="0" />
       <xsd:element ref="SaaS" minOccurs="0" />
       <xsd:element ref="DSaaS" minOccurs="0" />
       <xsd:any namespace="##other" minOccurs="0"

Shao Weixiang, et al.     Expires June 30, 2012                [Page 67]
Internet-Draft            Cloud Service Broker             December 2011

          maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:attribute name="status" type="status.datatype"
     use="required" />
    <xsd:attribute name="reason" type="xsd:string" />
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>

 <xsd:element name="CloudServiceResponse"
         type="CloudServiceResponseType" />

<!--
  ####################################################

  ELEMENTS

  ####################################################
 -->
<!--  job-info -->

<xsd:complexType name="job-infoType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
     <xsd:choice>
       <xsd:element name="job-id" type="id.datatype"/>
       <xsd:element name="action" type="action.datatype"/>
      <xsd:any namespace="##other" minOccurs="0"
       maxOccurs="unbounded" processContents="lax" />
     </xsd:choice>
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>

<xsd:element name="job-info" type="job-infoType" />

<!--  response-job-info -->

<xsd:complexType name="response-job-infoType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>

Shao Weixiang, et al.     Expires June 30, 2012                [Page 68]
Internet-Draft            Cloud Service Broker             December 2011

     <xsd:choice>
       <xsd:element name="job-id" type="id.datatype"/>
       <xsd:element name="job-status" type="xsd:string"/>
       <xsd:element name="expires" type="xsd:nonNegativeInteger"/>
       <xsd:element name="Cloud-service-URI" type="xsd:anyURI"
        minOccurs="0" />
      <xsd:any namespace="##other" minOccurs="0"
       maxOccurs="unbounded" processContents="lax" />
     </xsd:choice>
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>

<xsd:element name="response-job-info"
   type="response-job-infoType" />

<!--  IaaS-->

<xsd:complexType name="IaaSType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
     <xsd:element ref="Link" minOccurs="0" />
     <xsd:element ref="compute" minOccurs="0" />
     <xsd:element ref="network" minOccurs="0" />
     <xsd:element ref="storage" minOccurs="0" />
     <xsd:element ref="NetworkInterface" minOccurs="0" />
     <xsd:element ref="storagelink" minOccurs="0" />
     <xsd:any namespace="##other" minOccurs="0"
      maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>

 <xsd:element name="IaaS" type="IaaSType" />

<xsd:complexType name="computeType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
     <xsd:element name="architecture" type="xsd:string"
        minOccurs="0" />
     <xsd:element name="cores" type="xsd:nonNegativeInteger"
        minOccurs="0" />
     <xsd:element name="hostname" type="xsd:string" minOccurs="0" />

Shao Weixiang, et al.     Expires June 30, 2012                [Page 69]
Internet-Draft            Cloud Service Broker             December 2011

     <xsd:element name="speed" type="xsd:nonNegativeInteger"
        minOccurs="0" />
     <xsd:element name="memory" type="xsd:nonNegativeInteger"
        minOccurs="0" />
     <xsd:element name="status" type="computestatus.datatype"
        minOccurs="0" />
     <xsd:element name="action" type="computeaction.datatype"
        minOccurs="0" />
     <xsd:any namespace="##other" minOccurs="0"
      maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>

 <xsd:element name="compute" type="computeType" />

<xsd:complexType name="networkType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
     <xsd:element name="vlan" type="id.datatype"        minOccurs="0"/>
     <xsd:element name="VLANlabel" type="label.datatype" minOccurs="0"/>
     <xsd:element name="address" type="xsd:string" minOccurs="0" />
     <xsd:element name="gateway" type="xsd:string" minOccurs="0" />
     <xsd:element name="allocation" type="allocation.datatype"
        minOccurs="0" />
     <xsd:element name="status" type="networkstatus.datatype"
        minOccurs="0" />
     <xsd:element name="action" type="networkaction.datatype"
        minOccurs="0" />
     <xsd:any namespace="##other" minOccurs="0"
      maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>

 <xsd:element name="network" type="networkType" />

<xsd:complexType name="storageType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
     <xsd:element name="size" type="xsd:nonNegativeInteger"

Shao Weixiang, et al.     Expires June 30, 2012                [Page 70]
Internet-Draft            Cloud Service Broker             December 2011

        minOccurs="0" />
     <xsd:element name="status" type="storagestatus.datatype"
        minOccurs="0" />
     <xsd:element name="action" type="storageaction.datatype"
        minOccurs="0" />
     <xsd:any namespace="##other" minOccurs="0"
      maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>

 <xsd:element name="storage" type="storageType" />

<xsd:complexType name="NetworkInterfaceType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
     <xsd:element name="interface" type="id.datatype"   minOccurs="0" />
     <xsd:element name="mac" type="xsd:string" minOccurs="0" />
     <xsd:element name="status" type="networkstatus.datatype"
        minOccurs="0" />
     <xsd:element name="ip" type="xsd:string" minOccurs="0" />
     <xsd:element name="gateway" type="xsd:string" minOccurs="0" />
     <xsd:element name="allocation" type="allocation.datatype"
        minOccurs="0" />
     <xsd:any namespace="##other" minOccurs="0"
      maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>

 <xsd:element name="NetworkInterface" type="NetworkInterfaceType" />

<xsd:complexType name="storagelinkType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
     <xsd:element name="deviceid" type="id.datatype"    minOccurs="0" />
     <xsd:element name="mountpoint" type="xsd:string" minOccurs="0" />
     <xsd:element name="status" type="networkstatus.datatype"
        minOccurs="0" />
     <xsd:any namespace="##other" minOccurs="0"
      maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
   </xsd:extension>
  </xsd:complexContent>

Shao Weixiang, et al.     Expires June 30, 2012                [Page 71]
Internet-Draft            Cloud Service Broker             December 2011

 </xsd:complexType>

 <xsd:element name="storagelink" type="storagelinkType" />

<!--  PaaS-->

<xsd:complexType name="PaaSType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
     <xsd:element ref="Link" minOccurs="0" />
     <xsd:any namespace="##other" minOccurs="0"
      maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>

 <xsd:element name="PaaS" type="PaaSType" />

<!--  SaaS-->

<xsd:complexType name="SaaSType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
     <xsd:element ref="Link" minOccurs="0" />
     <xsd:any namespace="##other" minOccurs="0"
      maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>

 <xsd:element name="SaaS" type="SaaSType" />

<!--  DSaaS-->

<xsd:complexType name="DSaaSType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
     <xsd:element ref="Link" minOccurs="0" />
     <xsd:element ref="DataObject" minOccurs="0" />
     <xsd:element ref="ContainerObject" minOccurs="0" />
     <xsd:element ref="DomainObject" minOccurs="0" />
     <xsd:element ref="QueueObject" minOccurs="0" />
     <xsd:element ref="CapabilityObject" minOccurs="0" />

Shao Weixiang, et al.     Expires June 30, 2012                [Page 72]
Internet-Draft            Cloud Service Broker             December 2011

     <xsd:any namespace="##other" minOccurs="0"
      maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>

 <xsd:element name="DSaaS" type="DSaaSType" />

<xsd:complexType name="DataObjectType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
     <xsd:element name="mimetype" type="xsd:string" minOccurs="0" />
     <xsd:element name="metadata" type="xsd:string" minOccurs="0" />
     <xsd:element name="objectURI" type="xsd:anyURI" minOccurs="0" />
     <xsd:element name="objectID" type="id.datatype" minOccurs="0" />
     <xsd:element name="parentURI" type="xsd:anyURI" minOccurs="0" />
     <xsd:element name="domainURI" type="xsd:anyURI" minOccurs="0" />
     <xsd:element name="capabilitiesURI" type="xsd:anyURI"
        minOccurs="0" />
     <xsd:element name="value" type="xsd:string" minOccurs="0" />
     <xsd:element name="status" type="xsd:string" minOccurs="0" />
     <xsd:any namespace="##other" minOccurs="0"
      maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>

 <xsd:element name="DataObject" type="DataObjectType" />

<xsd:complexType name="ContainerObjectType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
     <xsd:element name="metadata" type="xsd:string" minOccurs="0" />
     <xsd:element name="objectURI" type="xsd:anyURI" minOccurs="0" />
     <xsd:element name="objectID" type="id.datatype" minOccurs="0" />
     <xsd:element name="parentURI" type="xsd:anyURI" minOccurs="0" />
     <xsd:element name="domainURI" type="xsd:anyURI" minOccurs="0" />
     <xsd:element name="capabilitiesURI" type="xsd:anyURI"
        minOccurs="0" />
     <xsd:element name="exports" type="xsd:string" minOccurs="0" />
     <xsd:element name="snapshots" type="xsd:string" minOccurs="0" />
     <xsd:element name="children" type="xsd:string" minOccurs="0" />
     <xsd:element name="status" type="xsd:string" minOccurs="0" />
     <xsd:any namespace="##other" minOccurs="0"

Shao Weixiang, et al.     Expires June 30, 2012                [Page 73]
Internet-Draft            Cloud Service Broker             December 2011

      maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>

 <xsd:element name="ContainerObject" type="ContainerObjectType" />

<xsd:complexType name="DomainObjectType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
     <xsd:element name="metadata" type="xsd:string" minOccurs="0" />
     <xsd:element name="objectURI" type="xsd:anyURI" minOccurs="0" />
     <xsd:element name="objectID" type="id.datatype" minOccurs="0" />
     <xsd:element name="parentURI" type="xsd:anyURI" minOccurs="0" />
     <xsd:element name="domainURI" type="xsd:anyURI" minOccurs="0" />
     <xsd:element name="capabilitiesURI" type="xsd:anyURI"
        minOccurs="0" />
     <xsd:element name="enabled" type="boolean.datatype"
        minOccurs="0" />
     <xsd:element name="children" type="xsd:string" minOccurs="0" />
     <xsd:any namespace="##other" minOccurs="0"
      maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>

 <xsd:element name="DomainObject" type="DomainObjectType" />

<xsd:complexType name="QueueObjectType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
     <xsd:element name="metadata" type="xsd:string" minOccurs="0" />
     <xsd:element name="objectURI" type="xsd:anyURI" minOccurs="0" />
     <xsd:element name="objectID" type="id.datatype" minOccurs="0" />
     <xsd:element name="parentURI" type="xsd:anyURI" minOccurs="0" />
     <xsd:element name="domainURI" type="xsd:anyURI" minOccurs="0" />
     <xsd:element name="capabilitiesURI" type="xsd:anyURI"
        minOccurs="0" />
     <xsd:element name="status" type="xsd:string" minOccurs="0" />
     <xsd:any namespace="##other" minOccurs="0"
      maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
   </xsd:extension>
  </xsd:complexContent>

Shao Weixiang, et al.     Expires June 30, 2012                [Page 74]
Internet-Draft            Cloud Service Broker             December 2011

 </xsd:complexType>

 <xsd:element name="QueueObject" type="QueueObjectType" />

<xsd:complexType name="CapabilityObjectType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
     <xsd:element name="type"
        type="Capabilityobjecttype.datatype" minOccurs="0" />
     <xsd:element name="objectURI" type="xsd:anyURI" minOccurs="0" />
     <xsd:element name="objectID" type="id.datatype" minOccurs="0" />
     <xsd:element name="parentURI" type="xsd:anyURI" minOccurs="0" />
     <xsd:element name="domainURI" type="xsd:anyURI" minOccurs="0" />
     <xsd:element name="capabilitiesURI" type="xsd:anyURI"
        minOccurs="0" />
     <xsd:element name="status" type="xsd:string" minOccurs="0" />
     <xsd:any namespace="##other" minOccurs="0"
      maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>

 <xsd:element name="CapabilityObject" type="CapabilityObjectType" />

<!--  encryption -->

<xsd:element name="encryption" type="boolean.datatype" />

<!--Link -->
<xsd:complexType name="LinkType">
  <xsd:complexContent>
   <xsd:extension base="Tcore">
    <xsd:sequence>
     <xsd:element name="rel" type="xsd:string" minOccurs="0" />
     <xsd:element name="href" type="xsd:anyURI" minOccurs="0" />
     <xsd:any namespace="##other" minOccurs="0"
      maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>

 <xsd:element name="Link" type="LinkType" />

<!--
  ####################################################

Shao Weixiang, et al.     Expires June 30, 2012                [Page 75]
Internet-Draft            Cloud Service Broker             December 2011

  DATATYPES

  ####################################################
 -->

 <xsd:simpleType name="version.datatype">
  <xsd:restriction base="xsd:NMTOKEN">
   <xsd:enumeration value="1.0" />
  </xsd:restriction>
 </xsd:simpleType>

<xsd:simpleType name="id.datatype">
  <xsd:restriction base="xsd:NMTOKEN" />
 </xsd:simpleType>

 <xsd:simpleType name="status.datatype">
  <xsd:restriction base="xsd:positiveInteger">
   <xsd:pattern value="[0-9][0-9][0-9]" />
  </xsd:restriction>
 </xsd:simpleType>

 <xsd:simpleType name="computestatus.datatype">
  <xsd:restriction base="xsd:NMTOKEN">
   <xsd:enumeration value="active" />
   <xsd:enumeration value="inactive" />
   <xsd:enumeration value="suspended" />
  </xsd:restriction>
 </xsd:simpleType>

 <xsd:simpleType name="networkstatus.datatype">
  <xsd:restriction base="xsd:NMTOKEN">
   <xsd:enumeration value="active" />
   <xsd:enumeration value="inactive" />
  </xsd:restriction>
 </xsd:simpleType>

 <xsd:simpleType name="storagestatus.datatype">
  <xsd:restriction base="xsd:NMTOKEN">
   <xsd:enumeration value="online" />
   <xsd:enumeration value="offline" />
   <xsd:enumeration value="degraded" />
  </xsd:restriction>
 </xsd:simpleType>

 <xsd:simpleType name="action.datatype">
  <xsd:restriction base="xsd:NMTOKEN">
   <xsd:enumeration value="update" />
   <xsd:enumeration value="remove" />

Shao Weixiang, et al.     Expires June 30, 2012                [Page 76]
Internet-Draft            Cloud Service Broker             December 2011

  </xsd:restriction>
 </xsd:simpleType>

 <xsd:simpleType name="computeaction.datatype">
  <xsd:restriction base="xsd:NMTOKEN">
   <xsd:enumeration value="start" />
   <xsd:enumeration value="stop" />
   <xsd:enumeration value="restart" />
   <xsd:enumeration value="suspend" />
  </xsd:restriction>
 </xsd:simpleType>

 <xsd:simpleType name="networkaction.datatype">
  <xsd:restriction base="xsd:NMTOKEN">
   <xsd:enumeration value="up" />
   <xsd:enumeration value="down" />
  </xsd:restriction>
 </xsd:simpleType>

 <xsd:simpleType name="storageaction.datatype">
  <xsd:restriction base="xsd:NMTOKEN">
   <xsd:enumeration value="online" />
   <xsd:enumeration value="offline" />
   <xsd:enumeration value="backup" />
   <xsd:enumeration value="snapshot" />
   <xsd:enumeration value="resize" />
  </xsd:restriction>
 </xsd:simpleType>

 <xsd:simpleType name="allocation.datatype">
  <xsd:restriction base="xsd:NMTOKEN">
   <xsd:enumeration value="dynamic" />
   <xsd:enumeration value="static" />
  </xsd:restriction>
 </xsd:simpleType>

 <xsd:simpleType name="boolean.datatype">
  <xsd:restriction base="xsd:NMTOKEN">
   <xsd:enumeration value="true" />
   <xsd:enumeration value="false" />
  </xsd:restriction>
 </xsd:simpleType>

 <xsd:simpleType name="Capabilityobjecttype.datatype">
  <xsd:restriction base="xsd:NMTOKEN">
   <xsd:enumeration value="Cloud Storage System-Wide Capabilities" />
   <xsd:enumeration value="Storage System Metadata Capabilities" />
   <xsd:enumeration value="Data System Metadata Capabilities" />

Shao Weixiang, et al.     Expires June 30, 2012                [Page 77]
Internet-Draft            Cloud Service Broker             December 2011

   <xsd:enumeration value="Data Object Capabilities" />
   <xsd:enumeration value="Container Capabilities" />
   <xsd:enumeration value="Domain Capabilities" />
   <xsd:enumeration value="Queue Object Capabilities" />
  </xsd:restriction>
 </xsd:simpleType>

 <xsd:simpleType name="label.datatype">
  <xsd:restriction base="xsd:NMTOKEN" />
 </xsd:simpleType>

</xsd:schema>

                                 Figure 7

Shao Weixiang, et al.     Expires June 30, 2012                [Page 78]
Internet-Draft            Cloud Service Broker             December 2011

8.  Security Considerations

   The csb network entity has two primary interfaces, Publish and
   Consumer, that carry sensitive information and must therefore be
   appropriately protected and secured.

   These two interfaces, uses Hypertext Transfer Protocol (HTTP) as the
   mechanism for clients to connect to an csb to request cloud
   resources.  In the case of the HTTP use, any binding using the two
   interfaces MUST be capable of being transacted over TLS, as described
   in RFC 2818 [RFC2818].

   Finally, it is worthwhile to also discuss authorization issues
   related to the specification.  Neither the Publishing nor the
   Consumer interface provide an explicit means for implementing
   authentication, i.e., they do not envisage protocol messages to make
   sure, for instance, that only authorized requesters/consumers can
   make use of the services provided by a csb.  Nevertheless,
   considering both the interfaces are transported in well-established
   protocols (HTTP), support for such an functionality can be expressed
   by means of the authentication mechanisms provided by the protocol
   themselves.  Therefore, any csb-aware entity (applications, clients,
   Cloud Service Providers, Media Resource Broker itself) MUST support
   the HTTP Digest access authentication.  That said, the usage of such
   Digest access authentications is recommended and not mandatory, which
   means csb-aware entities MAY exploit it in deployment.

Shao Weixiang, et al.     Expires June 30, 2012                [Page 79]
Internet-Draft            Cloud Service Broker             December 2011

9.  IANA Considerations

   There are several IANA considerations associated with this
   specification.

9.1.  application/csb-publish+xml MIME Type

   MIME media type name:   application

   MIME subtype name:   csb-publish+xml

   Mandatory parameters:   none

   Optional parameters:   Same as charset parameter application/xml as
      specified in RFC 3023 [RFC3023].

   Encoding considerations:   Same as encoding considerations of
      application/xml as specified in RFC 3023 [RFC3023].

   Security considerations:   See Section 10 of RFC 3023 [RFC3023] and
      Section 8 of RFCXXXX [[NOTE TO RFC-EDITOR/IANA: Please replace
      XXXX with the RFC number of this specification.]].

   Interoperability considerations:   none.

   Published specification:   This document.

   Applications which use this media type:   This document type has been
      used to support a Cloud Service Broker (csb) entity.

   Additional Information:

   Magic Number:   None

   File Extension:   .xdf

   Macintosh file type code:   "TEXT"

   Intended usage: COMMON

   Author/Change controller:   The IETF.

9.2.  application/csb-consumer+xml MIME Type

Shao Weixiang, et al.     Expires June 30, 2012                [Page 80]
Internet-Draft            Cloud Service Broker             December 2011

   MIME media type name:   application

   MIME subtype name:   csb-consumer+xml

   Mandatory parameters:   none

   Optional parameters:   Same as charset parameter application/xml as
      specified in RFC 3023 [RFC3023].

   Encoding considerations:   Same as encoding considerations of
      application/xml as specified in RFC 3023 [RFC3023].

   Security considerations:   See Section 10 of RFC 3023 [RFC3023] and
      Section 8 of RFCXXXX [[NOTE TO RFC-EDITOR/IANA: Please replace
      XXXX with the RFC number of this specification.]].

   Interoperability considerations:   none.

   Published specification:   This document.

   Applications which use this media type:   This document type has been
      used to support a Cloud Service Broker (csb) entity.

   Additional Information:

   Magic Number:   None

   File Extension:   .xdf

   Macintosh file type code:   "TEXT"

   Intended usage: COMMON

   Author/Change controller:   The IETF.

9.3.  URN Sub-Namespace  Registration for csb-publish

   Please register the URN name space
   "urn:ietf:params:xml:ns:csb-publish", with the ID of "csb-publish".
   The template is in Section 6.

9.4.  URN Sub-Namespace Registration for csb-consumer

   Please register the URN name space
   "urn:ietf:params:xml:ns:csb-consumer", with the ID of "csb-consumer".
   The template is in Section 7.

Shao Weixiang, et al.     Expires June 30, 2012                [Page 81]
Internet-Draft            Cloud Service Broker             December 2011

9.5.  XML Schema Registration for csb-publish

   Please register the schema for csb-publish:

   URI:   urn:ietf:params:xml:ns:csb-publish

   ID:   csb-publish

   Filename:   csb-publish

   Registrant Contact:   IETF OPSAWG (opsawg@ietf.org)

   Schema:   The XML for the schema is in Section 6 of this document.

9.6.  XML Schema Registration for csb-consumer

   Please register the schema for csb-consumer:

   URI:   urn:ietf:params:xml:ns:csb-consumer

   ID:   csb-consumer

   Filename:   csb-consumer

   Registrant Contact:   IETF OPSAWG (opsawg@ietf.org)

   Schema:   The XML for the schema is in Section 7 of this document.

Shao Weixiang, et al.     Expires June 30, 2012                [Page 82]
Internet-Draft            Cloud Service Broker             December 2011

10.  References

10.1.  Normative References

   [CCUCWP]   Open Cloud Manifesto, "Cloud Computing Use Cases White
              Paper V4.0", 2010.

   [CSAguide]
              Cloud Security Alliance, "Security Guidance for Critical
              Areas of Focus in Cloud Computing V2.1", 2009.

   [DMTF CIMI]
              Distributed Management Task Force, "Cloud Infrastructure
              Management Interface(CIMI) Model and REST Interface over
              HTTP", DMTF DSP0263, 2011.

   [DMTF OVF]
              Distributed Management Task Force, "Open Virtualization
              Format Specification V1.1.0", DMTF DSP0243, 2010.

   [ITU-T FGCC Ecosystem]
              ITU-T Focus Group Cloud Computing, "Draft deliverable on
              Introduction to the cloud ecosystem:  definitions,
              taxonomies, use cases, high level requirements", 2011.

   [NIST RA]  National Institute of Standards and Technology, "NIST
              Special Publication 500-292 Cloud Computing       Reference
              Architecture", 2011.

   [OGF OCCI]
              Open Grid Forum, "Open Cloud Computing Interface", 2011.

   [RFC2046]  Freed, N. and N. Borenstein, "Multipurpose Internet Mail
              Extensions (MIME) Part Two: Media Types", RFC 2046,
              November 1996.

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, March 1997.

   [RFC2616]  Fielding, R., Gettys, J., Mogul, J., Frystyk, H.,
              Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext
              Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999.

   [RFC2818]  Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000.

   [RFC3023]  Murata, M., St. Laurent, S., and D. Kohn, "XML Media
              Types", RFC 3023, January 2001.

Shao Weixiang, et al.     Expires June 30, 2012                [Page 83]
Internet-Draft            Cloud Service Broker             December 2011

   [SNIA CDMI]
              Storage Networking Industry Association, "Cloud Data
              Management Interface V1.0", 2010.

   [USG CCDD]
              National Institute of Standards and Technology, "NIST US
              Government Cloud Computing Technology Roadmap Volume III
              Technical Considerations for USG Cloud Computing
              Deployment Decisions", 2011.

   [W3C.CR-wsdl20-20051215]
              Chinnici, R., Moreau, J., Ryman, A., and S. Weerawarana,
              "Web Services Description Language (WSDL) Version 2.0 Part
              1: Core Language", W3C CR CR-wsdl20-20051215,
              December 2005.

   [W3C.REC-soap12-part1-20030624]
              Hadley, M., Mendelsohn, N., Moreau, J., Gudgin, M., and H.
              Nielsen, "SOAP Version 1.2 Part 1: Messaging Framework",
              World Wide Web Consortium FirstEdition REC-soap12-part1-
              20030624, June 2003,
              <http://www.w3.org/TR/2003/REC-soap12-part1-20030624>.

   [W3C.REC-soap12-part2-20030624]
              Nielsen, H., Mendelsohn, N., Moreau, J., Hadley, M., and
              M. Gudgin, "SOAP Version 1.2 Part 2: Adjuncts", World Wide
              Web Consortium FirstEdition REC-soap12-part2-20030624,
              June 2003,
              <http://www.w3.org/TR/2003/REC-soap12-part2-20030624>.

10.2.  Informative References

   [RFC4281]  Gellens, R., Singer, D., and P. Frojdh, "The Codecs
              Parameter for "Bucket" Media Types", RFC 4281,
              November 2005.

Shao Weixiang, et al.     Expires June 30, 2012                [Page 84]
Internet-Draft            Cloud Service Broker             December 2011

Authors' Addresses

   Shao Weixiang
   ZTE Corporation

   Email: shao.weixiang@zte.com.cn

   Hu Jie
   ZTE Corporation

   Email: hu.jie@zte.com.cn

   Bhumip Khasnabish
   ZTE Corporation

   Email: bhumip.khasnabish@zteusa.com

Shao Weixiang, et al.     Expires June 30, 2012                [Page 85]