Internet DRAFT - draft-shao-opsawg-cloud-service-broker
draft-shao-opsawg-cloud-service-broker
opsawg Shao Weixiang
Internet-Draft Hu Jie
Intended status: Standards Track Bhumip Khasnabish
Expires: September 27, 2012 ZTE Corporation
March 26, 2012
Cloud Service Broker
draft-shao-opsawg-cloud-service-broker-03
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 September 27, 2012.
Copyright Notice
Copyright (c) 2012 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 September 27, 2012 [Page 1]
Internet-Draft Cloud Service Broker March 2012
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 . . . . 30
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 September 27, 2012 [Page 2]
Internet-Draft Cloud Service Broker March 2012
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.
As specified in the SOP Requirements [SOP Requirements]document, A
Virtual Provider who does not host or manage services, but redirects
requests to other providers who do that. Cloud Service Broker can be
considered as a Virtual Provider.
Shao Weixiang, et al. Expires September 27, 2012 [Page 3]
Internet-Draft Cloud Service Broker March 2012
The simplest deployment view is illustrated in Figure 1.
+---+-----+---+ +---+-----+---+
| 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
Shao Weixiang, et al. Expires September 27, 2012 [Page 4]
Internet-Draft Cloud Service Broker March 2012
Providers and specific function pattern to execute related cloud
service operations such as intermediation,proxy,monitoring,
transformation/portability, governance, provisioning, screening,
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.
According to SOP Architecture [SOP Architecture]document, CSB is
similar to the proxy and specific Cloud Service Providers's platform
is similar to Service Node in a SOP Network Architecture.
Shao Weixiang, et al. Expires September 27, 2012 [Page 5]
Internet-Draft Cloud Service Broker March 2012
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 September 27, 2012 [Page 6]
Internet-Draft Cloud Service Broker March 2012
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 September 27, 2012 [Page 7]
Internet-Draft Cloud Service Broker March 2012
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.
According to SOP Architecture [SOP Architecture]document, Cloud
Service Consumer Interface can provide similar functions defined in
Requesting Proxy.
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
Shao Weixiang, et al. Expires September 27, 2012 [Page 8]
Internet-Draft Cloud Service Broker March 2012
Architecture [NIST RA].
Upon the basic function pattern, the cloud service process module can
provide advanced function patterns, such as security service, QoS/SLA
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].
According to SOP Architecture [SOP Architecture]document, cloud
service process module can provide similar functions defined in
Serving Proxy.
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 September 27, 2012 [Page 9]
Internet-Draft Cloud Service Broker March 2012
+------------------------------+------------------------------+
| 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 September 27, 2012 [Page 10]
Internet-Draft Cloud Service Broker March 2012
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 September 27, 2012 [Page 11]
Internet-Draft Cloud Service Broker March 2012
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.
According to Service Orchestration Protocol [Service Orchestration
Protocol]document, The Cloud Service Publish interface can do similar
operations as Service Publishing and Subscribing.
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/
Shao Weixiang, et al. Expires September 27, 2012 [Page 12]
Internet-Draft Cloud Service Broker March 2012
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
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
Shao Weixiang, et al. Expires September 27, 2012 [Page 13]
Internet-Draft Cloud Service Broker March 2012
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:
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:
Shao Weixiang, et al. Expires September 27, 2012 [Page 14]
Internet-Draft Cloud Service Broker March 2012
id: indicates a unique token representing the subscription between
the csb and the Cloud Service Provider. The attribute MUST be
present.
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.
Shao Weixiang, et al. Expires September 27, 2012 [Page 15]
Internet-Draft Cloud Service Broker March 2012
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>
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
Shao Weixiang, et al. Expires September 27, 2012 [Page 16]
Internet-Draft Cloud Service Broker March 2012
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:
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
Shao Weixiang, et al. Expires September 27, 2012 [Page 17]
Internet-Draft Cloud Service Broker March 2012
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.
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.
Shao Weixiang, et al. Expires September 27, 2012 [Page 18]
Internet-Draft Cloud Service Broker March 2012
<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 .
<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 .
Shao Weixiang, et al. Expires September 27, 2012 [Page 19]
Internet-Draft Cloud Service Broker March 2012
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:
<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.
Shao Weixiang, et al. Expires September 27, 2012 [Page 20]
Internet-Draft Cloud Service Broker March 2012
The <storagelink-support> 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: 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-
Shao Weixiang, et al. Expires September 27, 2012 [Page 21]
Internet-Draft Cloud Service Broker March 2012
Message-Service> for Multimedia Message Service information). The
detail SaaS support informations need to be further studied.
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 .
Shao Weixiang, et al. Expires September 27, 2012 [Page 22]
Internet-Draft Cloud Service Broker March 2012
<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.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 .
Shao Weixiang, et al. Expires September 27, 2012 [Page 23]
Internet-Draft Cloud Service Broker March 2012
<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.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 September 27, 2012 [Page 24]
Internet-Draft Cloud Service Broker March 2012
<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 September 27, 2012 [Page 25]
Internet-Draft Cloud Service Broker March 2012
<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 September 27, 2012 [Page 26]
Internet-Draft Cloud Service Broker March 2012
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 September 27, 2012 [Page 27]
Internet-Draft Cloud Service Broker March 2012
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 September 27, 2012 [Page 28]
Internet-Draft Cloud Service Broker March 2012
make an informed decision and provide the requester/consumer with an
appropriate Cloud Service Provider's cloud service and resource.
According to Service Orchestration Protocol [Service Orchestration
Protocol]document, The Cloud Service Consumer interface can do
similar operations as Service Management.
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.
Shao Weixiang, et al. Expires September 27, 2012 [Page 29]
Internet-Draft Cloud Service Broker March 2012
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.
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.
Shao Weixiang, et al. Expires September 27, 2012 [Page 30]
Internet-Draft Cloud Service Broker March 2012
<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.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
Shao Weixiang, et al. Expires September 27, 2012 [Page 31]
Internet-Draft Cloud Service Broker March 2012
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
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:
Shao Weixiang, et al. Expires September 27, 2012 [Page 32]
Internet-Draft Cloud Service Broker March 2012
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:
* 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
Shao Weixiang, et al. Expires September 27, 2012 [Page 33]
Internet-Draft Cloud Service Broker March 2012
used.
Cloud-service-URI: is the URI to reach the Cloud handling the
requested service resource.
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 .
Shao Weixiang, et al. Expires September 27, 2012 [Page 34]
Internet-Draft Cloud Service Broker March 2012
<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.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:
Shao Weixiang, et al. Expires September 27, 2012 [Page 35]
Internet-Draft Cloud Service Broker March 2012
<size> for Storage size in gigabytes of the instance. The element
MAY be present.
<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 .
Shao Weixiang, et al. Expires September 27, 2012 [Page 36]
Internet-Draft Cloud Service Broker March 2012
<status> for Current status of the instance. The element MAY be
present .
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.
Shao Weixiang, et al. Expires September 27, 2012 [Page 37]
Internet-Draft Cloud Service Broker March 2012
<CapabilityObject> for Capability Object information. See
Section 4.2.2.9.5.
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 .
Shao Weixiang, et al. Expires September 27, 2012 [Page 38]
Internet-Draft Cloud Service Broker March 2012
<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 .
<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 .
Shao Weixiang, et al. Expires September 27, 2012 [Page 39]
Internet-Draft Cloud Service Broker March 2012
<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.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 September 27, 2012 [Page 40]
Internet-Draft Cloud Service Broker March 2012
<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 September 27, 2012 [Page 41]
Internet-Draft Cloud Service Broker March 2012
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 September 27, 2012 [Page 42]
Internet-Draft Cloud Service Broker March 2012
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 September 27, 2012 [Page 43]
Internet-Draft Cloud Service Broker March 2012
</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 September 27, 2012 [Page 44]
Internet-Draft Cloud Service Broker March 2012
<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 September 27, 2012 [Page 45]
Internet-Draft Cloud Service Broker March 2012
<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 September 27, 2012 [Page 46]
Internet-Draft Cloud Service Broker March 2012
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 September 27, 2012 [Page 47]
Internet-Draft Cloud Service Broker March 2012
<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 September 27, 2012 [Page 48]
Internet-Draft Cloud Service Broker March 2012
<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 September 27, 2012 [Page 49]
Internet-Draft Cloud Service Broker March 2012
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 September 27, 2012 [Page 50]
Internet-Draft Cloud Service Broker March 2012
#####################################################
-->
<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 September 27, 2012 [Page 51]
Internet-Draft Cloud Service Broker March 2012
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 September 27, 2012 [Page 52]
Internet-Draft Cloud Service Broker March 2012
<!--
#####################################################
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 September 27, 2012 [Page 53]
Internet-Draft Cloud Service Broker March 2012
</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 September 27, 2012 [Page 54]
Internet-Draft Cloud Service Broker March 2012
<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 September 27, 2012 [Page 55]
Internet-Draft Cloud Service Broker March 2012
<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 September 27, 2012 [Page 56]
Internet-Draft Cloud Service Broker March 2012
</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 September 27, 2012 [Page 57]
Internet-Draft Cloud Service Broker March 2012
<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 September 27, 2012 [Page 58]
Internet-Draft Cloud Service Broker March 2012
<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 September 27, 2012 [Page 59]
Internet-Draft Cloud Service Broker March 2012
<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 September 27, 2012 [Page 60]
Internet-Draft Cloud Service Broker March 2012
<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 September 27, 2012 [Page 61]
Internet-Draft Cloud Service Broker March 2012
####################################################
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 September 27, 2012 [Page 62]
Internet-Draft Cloud Service Broker March 2012
<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 September 27, 2012 [Page 63]
Internet-Draft Cloud Service Broker March 2012
<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 September 27, 2012 [Page 64]
Internet-Draft Cloud Service Broker March 2012
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 September 27, 2012 [Page 65]
Internet-Draft Cloud Service Broker March 2012
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 September 27, 2012 [Page 66]
Internet-Draft Cloud Service Broker March 2012
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 September 27, 2012 [Page 67]
Internet-Draft Cloud Service Broker March 2012
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 September 27, 2012 [Page 68]
Internet-Draft Cloud Service Broker March 2012
<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 September 27, 2012 [Page 69]
Internet-Draft Cloud Service Broker March 2012
<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 September 27, 2012 [Page 70]
Internet-Draft Cloud Service Broker March 2012
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 September 27, 2012 [Page 71]
Internet-Draft Cloud Service Broker March 2012
</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 September 27, 2012 [Page 72]
Internet-Draft Cloud Service Broker March 2012
<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 September 27, 2012 [Page 73]
Internet-Draft Cloud Service Broker March 2012
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 September 27, 2012 [Page 74]
Internet-Draft Cloud Service Broker March 2012
</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 September 27, 2012 [Page 75]
Internet-Draft Cloud Service Broker March 2012
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 September 27, 2012 [Page 76]
Internet-Draft Cloud Service Broker March 2012
</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 September 27, 2012 [Page 77]
Internet-Draft Cloud Service Broker March 2012
<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 September 27, 2012 [Page 78]
Internet-Draft Cloud Service Broker March 2012
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 September 27, 2012 [Page 79]
Internet-Draft Cloud Service Broker March 2012
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 September 27, 2012 [Page 80]
Internet-Draft Cloud Service Broker March 2012
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 September 27, 2012 [Page 81]
Internet-Draft Cloud Service Broker March 2012
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 September 27, 2012 [Page 82]
Internet-Draft Cloud Service Broker March 2012
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 September 27, 2012 [Page 83]
Internet-Draft Cloud Service Broker March 2012
[SNIA CDMI]
Storage Networking Industry Association, "Cloud Data
Management Interface V1.0", 2010.
[SOP Architecture]
IETF, "draft-dalela-sop-architecture-00", 2012.
[SOP Requirements]
IETF, "draft-dalela-orchestration-00", 2012.
[Service Orchestration Protocol]
IETF, "draft-dalela-sop-00", 2012.
[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]
Gudgin, M., Mendelsohn, N., Hadley, M., Nielsen, H., and
J. Moreau, "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]
Hadley, M., Mendelsohn, N., Moreau, J., Gudgin, M., and H.
Nielsen, "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 September 27, 2012 [Page 84]
Internet-Draft Cloud Service Broker March 2012
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 September 27, 2012 [Page 85]