Page 1
Cloud Application Management for Platforms
Version 1.0
August 29, 2012
Authors (alphabetically):
Mark Carlson (Oracle)
Martin Chapman (Oracle)
Alex Heneveld (Cloudsoft)
Scott Hinkelman (Oracle)
Duncan Johnston-Watt (Cloudsoft)
Anish Karmarkar (Oracle)
Tobias Kunze (Red Hat)
Ashok Malhotra (Oracle)
Jeff Mischkinsky (Oracle)
Adrian Otto (Rackspace)
Vivek Pandey (CloudBees Inc.)
Gilbert Pilz (Oracle)
Zhexuan Song (Huawei)
Prasad Yendluri (Software AG)
Location: http://cloudspecs.org/camp/CAMP-v1.0.pdf
Abstract
This document defines the artifacts and APIs that need to be offered by a Platform
as a Service (PaaS) cloud to manage the building, running, administration,
monitoring and patching of applications in the cloud. Its purpose is to enable
interoperability among self-service interfaces to PaaS clouds by defining artifacts
and formats that can be used with any conforming cloud and enable independent
vendors to create tools and services that interact with any conforming cloud using
the defined interfaces. Cloud vendors can use these interfaces to develop new
PaaS offerings that will interact with independently developed tools and
components.
Page 2
Cloud Application Management for Platforms
Copyright Notice
© Copyright CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG, 2010, 2012. All
rights reserved.
License
The Cloud Application Management for Platforms (CAMP) Specification is being provided by the
copyright holders under the following license. By using and/or copying this work, you agree that you have
read, understood and will comply with the following terms and conditions:
Permission to copy, display and distribute the Cloud Application Management for Platforms (CAMP)
Specification and/or portions thereof, without modification, in any medium without fee or royalty is hereby
granted, provided that you include the following on ALL copies of the Cloud Application Management for
Platforms (CAMP) Specification, or portions thereof, that you make:
1. A link or URL to the Cloud Application Management for Platforms (CAMP) Specification at this location:
http://cloudspecs.org/camp/CAMP-v1.0.pdf
2. The full text of the copyright notice as shown in the Cloud Application Management for Platforms
(CAMP) Specification.
CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG (collectively, the "Authors")
agree to grant you a royalty-free license, under reasonable, non-discriminatory terms and conditions to
patents that they deem necessary to implement the Cloud Application Management for Platforms (CAMP)
Specification.
THE Cloud Application Management for Platforms (CAMP) SPECIFICATION IS PROVIDED "AS IS,"
AND THE AUTHORS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED,
REGARDING THIS SPECIFICATION AND THE IMPLEMENTATION OF ITS CONTENTS, INCLUDING,
BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
PURPOSE, NON-INFRINGEMENT OR TITLE.
THE AUTHORS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF OR RELATING TO ANY USE OR DISTRIBUTION OF
THE Cloud Application Management for Platforms (CAMP) SPECIFICATION.
The name and trademarks of the Authors may NOT be used in any manner, including advertising or
publicity pertaining to the Cloud Application Management for Platforms (CAMP) Specification or its
contents without specific, written prior permission. Title to copyright in the Cloud Application Management
for Platforms (CAMP) Specification will at all times remain with the Authors.
No other rights are granted by implication, estoppel or otherwise.
Page 3
Cloud Application Management for Platforms
Version 1.0 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG i
Contents
Abstract .................................................................................................................................................... 1 1
1. Introduction ............................................................................................................................................ 1 2
1.1. Overview ....................................................................................................................................... 1 3
1.2. Purpose ......................................................................................................................................... 1 4
1.3. Example ........................................................................................................................................ 2 5
1.4. Non-Goals ..................................................................................................................................... 3 6
1.5. PaaS Roles ................................................................................................................................... 3 7
1.6. Document Conventions ................................................................................................................. 4 8
2. Architecture ............................................................................................................................................ 4 9
2.1. Management Model ...................................................................................................................... 4 10
2.1.1. PaaS Resource Model .......................................................................................................... 6 11
2.1.2. Resource Relationships ........................................................................................................ 7 12
2.1.3. Management Model Diagrams .............................................................................................. 9 13
2.2. Importing a Platform Deployment Package ................................................................................ 12 14
2.3. Exporting a Platform Deployment Package ................................................................................ 13 15
3. Application Lifecycle ............................................................................................................................ 13 16
3.1. Uploaded ..................................................................................................................................... 14 17
3.2. Deployed ..................................................................................................................................... 14 18
3.3. Instantiated .................................................................................................................................. 14 19
3.4. Suspended .................................................................................................................................. 14 20
4. Platform Deployment Package ............................................................................................................ 15 21
4.1. PDP Package Structure .............................................................................................................. 15 22
4.2. Deployment Plan ......................................................................................................................... 15 23
4.2.1. Deployment Plan Schema ................................................................................................... 15 24
5. Resources ............................................................................................................................................ 16 25
5.1. Common Types ........................................................................................................................... 16 26
5.1.1. Boolean ............................................................................................................................... 16 27
5.1.2. String ................................................................................................................................... 16 28
5.1.3. URI ...................................................................................................................................... 16 29
5.1.4. Timestamp ........................................................................................................................... 16 30
5.1.5. Link ...................................................................................................................................... 16 31
5.1.6. ResourceState ..................................................................................................................... 16 32
5.2. Attribute Constraints .................................................................................................................... 17 33
Page 4
Cloud Application Management for Platforms
ii Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG Version 1.0
5.2.1. Cardinality ........................................................................................................................... 17 34
5.2.2. Mutability ............................................................................................................................. 17 35
5.2.3. Writeable ............................................................................................................................. 17 36
5.3. Common Resource Attributes ..................................................................................................... 17 37
5.3.1. uri ........................................................................................................................................ 17 38
5.3.2. name ................................................................................................................................... 17 39
5.3.3. description ........................................................................................................................... 17 40
5.3.4. created ................................................................................................................................ 18 41
5.3.5. tags ...................................................................................................................................... 18 42
5.4. Error Response Message ........................................................................................................... 18 43
5.5. Extensibility to the resource model ............................................................................................. 20 44
5.6. Platform ....................................................................................................................................... 20 45
5.6.1. specificationVersion ............................................................................................................ 21 46
5.6.2. implementationVersion ........................................................................................................ 21 47
5.6.3. assemblyTemplates ............................................................................................................ 21 48
5.6.4. assemblies .......................................................................................................................... 21 49
5.6.5. platformComponentTemplates ............................................................................................ 21 50
5.6.6. platformComponentCapabilities .......................................................................................... 21 51
5.6.7. platformComponents ........................................................................................................... 22 52
5.6.8. resourceState ...................................................................................................................... 22 53
5.7. AssemblyTemplate ...................................................................................................................... 22 54
5.7.1. definition .............................................................................................................................. 23 55
5.7.2. basedOn .............................................................................................................................. 23 56
5.7.3. applicationComponentTemplates ........................................................................................ 23 57
5.7.4. platformComponentTemplates ............................................................................................ 23 58
5.7.5. dependencies ...................................................................................................................... 23 59
5.8. ApplicationComponentTemplate ................................................................................................. 24 60
5.8.1. definition .............................................................................................................................. 24 61
5.8.2. basedOn .............................................................................................................................. 24 62
5.9. ApplicationComponentRequirement ........................................................................................... 24 63
5.9.1. definition .............................................................................................................................. 25 64
5.10. ApplicationComponentCapability ................................................................................................ 25 65
5.10.1. definition .............................................................................................................................. 25 66
5.11. PlatformComponentTemplate ..................................................................................................... 26 67
5.11.1. definition .............................................................................................................................. 26 68
Page 5
Cloud Application Management for Platforms
Version 1.0 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG iii
5.12. PlatformComponentRequirement ............................................................................................... 26 69
5.12.1. definition .............................................................................................................................. 27 70
5.13. PlatformComponentCapability .................................................................................................... 27 71
5.13.1. definition .............................................................................................................................. 27 72
5.14. Assembly ..................................................................................................................................... 27 73
5.14.1. definition .............................................................................................................................. 28 74
5.14.2. applicationComponents ....................................................................................................... 28 75
5.14.3. platformComponents ........................................................................................................... 28 76
5.14.4. assemblyTemplate .............................................................................................................. 28 77
5.14.5. resourceState ...................................................................................................................... 29 78
5.15. ApplicationComponent ................................................................................................................ 29 79
5.15.1. definition .............................................................................................................................. 29 80
5.15.2. applicationComponents ....................................................................................................... 30 81
5.15.3. platformComponents ........................................................................................................... 30 82
5.15.4. resourceState ...................................................................................................................... 30 83
5.16. PlatformComponent .................................................................................................................... 30 84
5.16.1. definition .............................................................................................................................. 31 85
5.16.2. externalManagementResource ........................................................................................... 31 86
5.16.3. resourceState ...................................................................................................................... 31 87
6. Protocol ................................................................................................................................................ 32 88
6.1. Transport Protocol ....................................................................................................................... 32 89
6.2. URI Space ................................................................................................................................... 32 90
6.3. Media Types ................................................................................................................................ 32 91
6.4. Request Headers ........................................................................................................................ 33 92
6.5. Request Parameters ................................................................................................................... 33 93
6.6. Response Headers ..................................................................................................................... 33 94
6.7. HTTP Status Codes .................................................................................................................... 33 95
6.8. Concurrent API versions ............................................................................................................. 33 96
6.9. Registering a PDP ....................................................................................................................... 34 97
6.10. Instantiating an Application ......................................................................................................... 34 98
6.11. Suspending and Resuming an Application ................................................................................. 35 99
6.12. Deleting an Application Instance and a Deployed Application .................................................... 35 100
7. Normative References ......................................................................................................................... 35 101
8. Non-Normative References ................................................................................................................. 36 102
Annex A. Glossary .................................................................................................................................. 37 103
Page 6
Cloud Application Management for Platforms
iv Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG Version 1.0
Annex B. Use Cases (Non-Normative) ................................................................................................... 38 104
B.1. Building the Application ............................................................................................................... 38 105
B.1.1. Build Application and Package ................................................................................................ 38 106
B.1.2. Build Application in the Cloud and Optionally Package .......................................................... 39 107
B.2. Deploying and Managing the Application .................................................................................... 40 108
B.2.1. Import Platform Deployment Package .................................................................................... 41 109
B.2.2. Upload Application .................................................................................................................. 41 110
B.2.3. Run/Stop/Suspend/Snapshot .................................................................................................. 42 111
B.2.4. Patch an Application Component Template ............................................................................ 42 112
B.2.5. Patch a Created, Deployed or Running Application................................................................ 42 113
Annex C. Example Database Platform Component (Non-Normative) .................................................... 42 114
C.1. Model ........................................................................................................................................... 42 115
C.2. DatabaseCapability ..................................................................................................................... 42 116
C.2.1. definition .................................................................................................................................. 43 117
C.2.2. clusterTypes ............................................................................................................................ 43 118
C.2.3. maxNumberNodes .................................................................................................................. 44 119
C.2.4. maxCores ................................................................................................................................ 44 120
C.2.5. maxMemSize ........................................................................................................................... 44 121
C.2.6. maxDiskSize ............................................................................................................................ 44 122
C.2.7. backupAvailable ...................................................................................................................... 44 123
C.2.8. synchronousCopyAvailable ..................................................................................................... 44 124
C.2.9. partitionAvailable ..................................................................................................................... 45 125
C.2.10. compressionAvailable ............................................................................................................. 45 126
C.2.11. retentionAvailable .................................................................................................................... 45 127
C.2.12. tunings ..................................................................................................................................... 45 128
C.2.13. cachingAvailable ..................................................................................................................... 45 129
C.3. DatabaseRequirement ................................................................................................................ 45 130
C.3.1. definition .................................................................................................................................. 46 131
C.3.2. clusterTypes ............................................................................................................................ 46 132
C.3.3. numberNodesRange ............................................................................................................... 47 133
C.3.4. coreRange ............................................................................................................................... 47 134
C.3.5. memSizeRange ....................................................................................................................... 47 135
C.3.6. diskSizeRange ........................................................................................................................ 47 136
C.3.7. backupEnabled........................................................................................................................ 47 137
C.3.8. synchronousCopyEnabled ...................................................................................................... 47 138
Page 7
Cloud Application Management for Platforms
Version 1.0 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG v
C.3.9. partitionEnabled ...................................................................................................................... 48 139
C.3.10. compressionEnabled ............................................................................................................... 48 140
C.3.11. retentionEnabled ..................................................................................................................... 48 141
C.3.12. tunings ..................................................................................................................................... 48 142
C.3.13. cachingEnabled ....................................................................................................................... 48 143
C.4. DatabaseTemplate ...................................................................................................................... 48 144
C.4.1. definition .................................................................................................................................. 49 145
C.4.2. clusterType .............................................................................................................................. 49 146
C.4.3. numberNodes .......................................................................................................................... 50 147
C.4.4. cores ........................................................................................................................................ 50 148
C.4.5. memSize ................................................................................................................................. 50 149
C.4.6. diskSize ................................................................................................................................... 50 150
C.4.7. backupEnabled........................................................................................................................ 50 151
C.4.8. synchronousCopyEnabled ...................................................................................................... 50 152
C.4.9. partitionEnabled ...................................................................................................................... 51 153
C.4.10. compressionEnabled ............................................................................................................... 51 154
C.4.11. retentionEnabled ..................................................................................................................... 51 155
C.4.12. tuning ....................................................................................................................................... 51 156
C.4.13. cachingEnabled ....................................................................................................................... 51 157
C.5. Database ..................................................................................................................................... 51 158
C.5.1. definition .................................................................................................................................. 52 159
C.5.2. externalManagementResource ............................................................................................... 52 160
C.5.3. clusterType .............................................................................................................................. 53 161
C.5.4. numberNodes .......................................................................................................................... 53 162
C.5.5. cores ........................................................................................................................................ 53 163
C.5.6. memSize ................................................................................................................................. 53 164
C.5.7. diskSize ................................................................................................................................... 53 165
C.5.8. backupEnabled........................................................................................................................ 53 166
C.5.9. synchronousCopyEnabled ...................................................................................................... 53 167
C.5.10. partitionEnabled ...................................................................................................................... 54 168
C.5.11. compressionEnabled ............................................................................................................... 54 169
C.5.12. retentionEnabled ..................................................................................................................... 54 170
C.5.13. tuning ....................................................................................................................................... 54 171
C.5.14. cachingEnabled ....................................................................................................................... 54 172
C.5.15. operationsThroughput ............................................................................................................. 54 173
Page 8
Cloud Application Management for Platforms
vi Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG Version 1.0
C.5.16. operationsBandwidth ............................................................................................................... 55 174
C.5.17. resourceState .......................................................................................................................... 55 175
Annex D. Implementation Considerations (Non-Normative) ................................................................... 55 176
D.1. Types of Platform Deployments .................................................................................................. 55 177
D.2. Scaling ......................................................................................................................................... 56 178
179
Page 9
Cloud Application Management for Platforms
1 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG Version 1.0
1. Introduction
1.1. Overview
Platform as a Service (PaaS) is a term that refers to a type of cloud computing in which the service 180
provider offers customers/consumers access to one or more instances of a running application computing 181
platform or application service stack. NIST defines PaaS [SP800-145] as a “service model” with the 182
following characteristics: 183
The capability provided to the consumer is to deploy onto the cloud infrastructure consumer-created or 184
acquired applications created using programming languages and tools supported by the provider. The 185
consumer does not manage or control the underlying cloud infrastructure including network, servers, operating 186
systems, or storage, but has control over the deployed applications and possibly application hosting 187
environment configurations. 188
There are multiple commercial PaaS offerings in existence using languages such as Java, Python and 189
Ruby and frameworks such as Spring and Rails. Although these offerings differ in such aspects as 190
programming languages, application frameworks, etc., there are inherent similarities in the way they 191
manage the lifecycle of the applications that are targeted for, and deployed upon them. The core 192
proposition of this specification is that these similarities can be leveraged to produce a generic application 193
and platform management API that is language, framework, and platform neutral. 194
For PaaS consumers this management API would have the following benefits: 195
“Portability between clouds” is emerging as one of the primary concerns of cloud computing. By 196
standardizing the management API for the use cases around deploying, stopping, starting, and 197
updating applications, this specification increases consumers’ ability to port their applications 198
between PaaS offerings. 199
It is likely that implementations of this specification will appear as plugins for application 200
development environments (ADEs) and application management systems. Past experience has 201
shown that, over time, such generic implementations are likely to receive more attention and be 202
of higher quality than the implementations written for solitary, proprietary application management 203
interfaces. 204
For PaaS providers this management API would have the following benefits: 205
Because the strength and features of a PaaS offering’s application management API are unlikely 206
to be perceived as key differentiators from other PaaS offerings, the existence of a consensus 207
management API allows providers to leverage the experience and insight of the specification’s 208
contributors and invest their design resources in other, more valuable areas. 209
By increasing the portability of applications between PaaS offerings, this management API helps 210
“grow the pie” of the PaaS marketplace by addressing one of the key pain points for PaaS 211
consumers. 212
1.2. Purpose
This document defines the artifacts and APIs that need to be offered by a Platform as a Service (PaaS) 213
cloud to manage the building, running, administration, monitoring and patching of applications in the 214
cloud. Its purpose is to enable interoperability among self-service interfaces to PaaS clouds by defining 215
artifacts and formats that can be used with any conforming cloud and enable independent vendors to 216
create tools and services that interact with any conforming cloud using the defined interfaces. Cloud 217
Page 10
Cloud Application Management for Platforms
Version 1.0 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG 2
vendors can use these interfaces to develop new PaaS offerings that will interact with independently 218
developed tools and components. 219
The following is a non-exhaustive list of the use cases which are supported by this specification. Details 220
of these use cases can be found in Annex B. 221
Building and packaging an application in a local Application Development Environment (ADE) 222
Building an application in an ADE running in the cloud 223
Importing a Platform Deployment Package into the cloud 224
Uploading application artifacts into the cloud 225
Run, stop, suspend, snapshot, and patch an application 226
1.3. Example
This example illustrates a scenario in which the application administrator wants to run and monitor an 227
application. It assumes that the application package was previously made available to the platform, either 228
because it was uploaded to the platform or developed directly on the platform. 229
The administrator starts by deploying the application package to the platform. This is done by sending an 230
HTTP POST request to the platform entry point URL as shown below, where "/myPaaS" is the entry point 231
and "/myPaas/pkgs/1" is the location of the application package. 232
POST /myPaaS HTTP/1.1 233
Host: example.org 234
Content-Type: application/vnd.org.example.PaaS+json; type=... 235 Content-Length: ... 236
237
{ 238
"pdp_uri": "/myPaaS/pkgs/1" 239 } 240
On receiving such a request the platform deploys the application package and creates a new resource 241
"/myPaas/templates/1" that represents the deployed application. The response from the platform is show 242
below. 243
HTTP/1.1 201 Created 244
Location: http://example.org/myPaaS/templates/1 245 Content-Type: ... 246
Content-Length: ... 247
248 ... 249
Once the application is deployed, the administrator starts the application by sending an HTTP POST 250
request to the resource that represents the deployed application, which was obtained in the previous step 251
("/myPaaS/templates/1"). 252
POST /myPaaS/templates/1 HTTP/1.1 253
Host: example.org 254
On successful start the platform creates a new resource representing the running application and 255
provides the URL of that resource "/myPaaS/apps/1" in the response as show below. 256
HTTP/1.1 201 Created 257
Location: http://example.org/myPaaS/apps/1 258
Content-Type: ... 259
Page 11
Cloud Application Management for Platforms
3 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG Version 1.0
Content-Length: ... 260
261 ... 262
The administrator can now monitor the running application by sending an HTTP GET request to the 263
resource that represents the running application, which was obtained in the previous step 264
("/myPaas/apps/1"). 265
GET /myPaaS/apps/1 HTTP/1.1 266
Host: example.org 267
The response contains the JSON representation of the running application as shown below. 268
HTTP/1.1 200 OK 269
Content-Type: application/vnd.org.example.PaaS+json; type=Assembly 270 Content-Length: ... 271
272
{ 273
"uri": "http://example.org/myPaaS/apps/1", 274 "name": "Hello Cloud App", 275
"description": "Hello Cloud Application Running in a PaaS Env", 276
"created": "2012-06-04T20:47Z", 277 "definition": "...", 278
"applicationComponents": [ 279
{ 280 "href": "/myPaaS/apps/1/acs/1" 281
}, 282
{ 283
"href": "myPaaS/apps/1/acs/2" 284 } 285
], 286
"platformComponents": [ 287 { 288
"href": "/myPaaS/pcs/1" 289
}, 290 { 291
"href": "myPaaS/pcs/2" 292
} 293
], 294 "assemblyTemplate": "/myPaaS/templates/1", 295
"resourceState": { 296
"state": "RUNNING" 297 } 298
} 299
1.4. Non-Goals
The specification of functional interfaces specific to services provided by individual components (see 300
Application Components and Platform Components, below) is out of scope for this document. This is 301
because such interfaces may be quite diverse and differ significantly from platform to platform. 302
1.5. PaaS Roles
There are many roles that can be defined for a PaaS environment. For the purposes of this specification 303
we identify four roles: 304
Page 12
Cloud Application Management for Platforms
Version 1.0 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG 4
Application Developer: The person that builds and tests an application and presents the developed 305
artifacts for deployment. 306
Application Administrator: The person that deploys applications and manages the application 307
throughout its life-cycle. 308
Together these two roles make up the consumers of the management API described in this specification. 309
This specification is intended mainly for Application Administrators, though it does constraint the artifacts 310
that an Application Developer presents for deployment. 311
Platform Administrator: The person that manages the platform. This specification describes some of the 312
functions of a Platform Administrator, though most of the functions of this role are outside its scope. 313
Application End-User: A user of an application deployed on the platform. The interactions of the 314
Application end-user and the application are outside the scope of this specification. 315
1.6. Document Conventions
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD 316
NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described 317
in RFC 2119 [RFC2119]. 318
Only the lower case versions of these keywords are used in this document in accordance with RFC 2119 319
in order to conform to ISO document requirements. 320
2. Architecture
2.1. Management Model
This document specifies the self-service management API that a Platform as a Service offering presents 321
to the consumer of the platform. The API is typically the interface into a platform implementation layer that 322
controls the deployment of applications and their use of the platform. 323
Page 13
Cloud Application Management for Platforms
5 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG Version 1.0
Figure 1 - Typical PaaS Architecture
The figure above shows a typical architecture of a Platform as a Service cloud. The platform 324
implementation is a management client of the underlying resources that transforms (through policies) the 325
application requirements expressed by the Application Administrator into provisioning and other 326
operations on those resources. The Platform Administrator manages the underlying hardware, storage, 327
networks, and software services that make up the platform through existing administrative interfaces. 328
Thus the Application Administrator is able to concentrate on their application and it’s deployment 329
environment rather than having to be a systems administrator, database administrator and middleware 330
administrator as well (as is the case with IaaS). 331
The goal of the management interface is to provide the PaaS consumer with a model that is as simple as 332
possible, and yet still provides the essential elements that give them control over the deployment, 333
execution, administration and metering of their application and it’s deployment environment. 334
Page 14
Cloud Application Management for Platforms
Version 1.0 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG 6
2.1.1. PaaS Resource Model
The model of resources manipulated through the interface, in combination with the protocol used to 335
remotely accomplish this, constitutes the self-service PaaS management API. The model contains 336
resource types corresponding to the artifacts discussed earlier. 337
2.1.1.1. Platform
The Platform resource is the primary view of the platform and what is running on it. The Platform 338
references deployed applications (as Assembly Templates) as well as running applications (as 339
Assemblies) and enables discovery of the PaaS offering in terms of Platform Components and their 340
capabilities. The Platform also determines the scope of access for sharing amongst multiple applications. 341
2.1.1.2. Assemblies
The Assembly Template resource represents a deployed application and its dependencies on the 342
platform and other application components. 343
The Assembly resource represents a running application. Operations on an Assembly affect the 344
components and elements of that application. 345
2.1.1.3. Components
There are two kinds of components, application components and platform components, each of which 346
may exist in either template or instantiated forms. 347
The Application Component Template resource represents a discrete configuration of a deployed 348
application component. The attributes of this resource represent the configuration values that will be 349
applied to the component upon instantiation. 350
The Application Component resource represents an instantiated instance of an application component. 351
The Platform Component Template resource represents a discrete configuration of a platform component. 352
The attributes of this resource represent the configuration values that will be applied to the component 353
upon instantiation. 354
The Platform Component resource represents an instantiated instance of a platform component in use by 355
an application. In addition to the configuration metadata (derived from the corresponding Platform 356
Component Template on instantiation), the attributes of this resource also include metering information 357
for this component. Such information is typically used in generating the consumer’s bill. 358
2.1.1.4. Capabilities and Requirements
Like Templates, Capability resources represent the configuration of instantiatable Components 359
(Application Components or Platform Components). Unlike Templates, which delineate discrete 360
configurations, Capabilities specify ranges of configuration values. 361
Requirement resources are created by the Application Developer or Application Administrator to express 362
an application’s dependency on a component that is capable of satisfying a certain set of requirements. 363
For example, an application component may depend upon a messaging service that supports a certain 364
version of an AMQP API, can accept messages of up to 2MB in size, and which provides a persistent 365
message store. 366
The process of matching Requirements with Capabilities is referred to as “requirement resolution”. 367
Page 15
Cloud Application Management for Platforms
7 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG Version 1.0
2.1.2. Resource Relationships
A Platform provides a set of Platform Components that may be used by the invoking applications. 368
Examples of Platform Components include a servlet container, a web server, an LDAP store, and a 369
database instance. The implementation and operation of Platform Components is managed by the 370
Platform Administrator. Platforms may also provide higher-level business components such as a business 371
rules manager to gain competitive advantage and developer loyalty. 372
An application is composed of a set of Application Components that depend on one or more Platform 373
Components. Examples of Application Components include Ruby gems, Java libraries, and PHP 374
modules. Application Components may also include non-code artifacts such as datasets and collections 375
of identity information. 376
Application Components may also interact with other Application Components. Thus, an Application 377
Component has two different sets of dependencies. It depends on the Components provided by the 378
platform, and depends on services provided by other Application Components. Such Application 379
Components may be on the same platform or may reside at some other location. The Assembly resource 380
is used to aggregate the management of these components as shown below: 381
Figure 2 - Runtime Management Resources
Platform Components have a set of Platform Component Capabilities that an application can choose from 382
to meet its requirements. Applications can tailor Platform Component Requirements (a refinement or 383
narrowing of the configuration ranges in the Capabilities) to meet their needs based on the range of 384
parameters expressed in the Platform Component Capability. 385
The relationships of an Assembly Template to Application Component Templates and Platform 386
Component Templates, or their Requirements are shown below: 387
Page 16
Cloud Application Management for Platforms
Version 1.0 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG 8
Figure 3 - Template Management Resources
An Application Component can express the exact configuration of its dependency on other Components 388
using one of the Component Template resources (either an Application Component Template or Platform 389
Component Template). Alternatively, it can express a range of configuration values that are acceptable 390
for that dependency by using one of the Component Requirement resources (either an Application 391
Component Requirement or Platform Component Requirement). This might be done, for example, in an 392
ADE when the existing Component Templates are not known. During the deployment, these 393
Requirements are matched with Capabilities that have attribute values that fall within the ranges specified 394
by the Requirements. 395
An Application Component Template cannot be instantiated unless all of its dependencies are satisfied. 396
An Assembly Template cannot be instantiated until all of its Application Component Templates are 397
successfully instantiated. 398
When instantiated, an Assembly Template results in an Assembly. The Assembly resource references the 399
Assembly Template it was instantiated from, although attributes of the Assembly can deviate from the 400
original template. An Assembly can be snapshot at a point in time and the resulting snapshot can be used 401
to create a new Assembly Template. 402
A Deployment Plan is packaging management meta-data that includes a serialized copy of the Assembly 403
Template resource and all dependent management resources such as Application Component 404
Templates. Deployment Plans are an essential part of a Platform Deployment Package (PDP). 405
A Platform Deployment Package is an archive of executable images, dependency descriptions and 406
metadata (management resources) that can be used to move an Application and its Components from 407
Platform to Platform, or between an Application Development Environment and a Platform. It can be 408
thought of as a serialized form of an Assembly Template and all of its dependent management resources. 409
Page 17
Cloud Application Management for Platforms
9 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG Version 1.0
2.1.3. Management Model Diagrams
The figures in this section list attributes for various management resources. The attributes listed here are 410
not exhaustive. For a comprehensive list of attributes for resources see Section 5. 411
2.1.3.1. Basic Platform Resources
The CAMP model includes the resources below when no Assemblies have been created. 412
Figure 4 - Basic Platform Resources
An empty Platform will have a number of resources visible through the API when the Application 413
Administrator first accesses a new account. The Platform resource is used to find the other resources in 414
this diagram. The various Platform Component Capabilities allow for discovery of all the platform services 415
that are available with value ranges for each service’s attributes. The various Platform Component 416
Templates may represent pools of previously configured platform resources and represent this 417
configuration as specific values for each of the attributes. These values are chosen from the range of 418
values in the corresponding Platform Component Capability. 419
2.1.3.2. Resources Loaded
After loading a PDP, the model may appear as follows: 420
Page 18
Cloud Application Management for Platforms
Version 1.0 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG 10
Figure 5 - Loaded Resources
An Assembly Template now is available with one or more Application Component Templates, Application 421
Component Requirements and Platform Component Requirements. The Application Component 422
Template resources represent actual code that was loaded with the deployment plan. The Application 423
Component Requirement resources were used to find Application Component Templates (pre-existing 424
software libraries for example) that were not part of the deployment plan but are required for the 425
application. The Application Component Capability resources show the range of configurable attributes 426
that the loaded Application Components can take on, when reused by future Application Components. 427
The Platform Component Requirement resources were used to find Platform Component Templates (pre-428
configured platform resources) that were part of the platform and required by the loaded Application 429
Components, but perhaps unknown at the time the deployment plan was created (in an ADE for 430
example). 431
2.1.3.3. Instantiated Resources
To start an application utilizing all of the previously configured Application Components and Platform 432
Components, an Assembly is created using the Assembly Template. This also causes the Application 433
Components and Platform Components corresponding to their respective templates to be created as 434
shown below. 435
Page 19
Cloud Application Management for Platforms
11 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG Version 1.0
Figure 6 - Instantiated Resources
To manage the operation of the application, the Application Administrator interacts with the Assembly 436
resource and the related Application Component and Platform Component resources. 437
The traversal of the resources in the model can be accomplished by following arrays of URIs from each 438
resource to the other resources it depends on as shown by the red arrows in the figure below: 439
Page 20
Cloud Application Management for Platforms
Version 1.0 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG 12
Figure 7 - Traversing Resources
2.2. Importing a Platform Deployment Package
A Platform Deployment Package may be imported into the platform and as a result the following takes 440
place: 441
1. One or more Assembly Templates are created with URIs to the other elements and with any 442
binary executables installed onto the platform. 443
2. One or more Application Component Templates are created with URIs to the other elements and 444
with and binary executables installed onto the platform. 445
3. Zero or more Platform Component Requirements are created, representing the requirements on 446
the underlying platform components. Connections may be made to existing Platform Component 447
Templates whose attribute values fall within the ranges specified by the requirements. 448
4. Zero or more Application Component Requirements are created, representing the requirements 449
on previously installed Application Components. Connections may be made to existing 450
Page 21
Cloud Application Management for Platforms
13 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG Version 1.0
Application Component Templates whose attribute values fall within the ranges specified by the 451
requirements. 452
2.3. Exporting a Platform Deployment Package
A Platform Deployment Package may be exported from the platform by an operation on an Assembly or 453
an Assembly Template. The Assembly (Assembly Template), dependent Application Components 454
(Application Component Templates) and Platform Components (Platform Component Templates) and 455
associated Capabilities Requirements, if any, as well as all related images are then used to create the 456
Deployment Plan and Platform Deployment Package. A URI to the Platform Deployment Package is 457
returned as a result. 458
3. Application Lifecycle
The following state diagram depicts lifecycle of an Application from the perspective of the PaaS 459
Management API. 460
Uploaded
Deployed
Instantiated Suspended
upload package
register
register
suspend
resume
delete instance
delete
delete instance
customize
instantiate
Figure 8 - Application Lifecycle
The following sections describe this diagram. It is important to note: 461
The states and transitions shown in this diagram are abstract and do not necessarily correspond 462
in a one-to-one fashion with any specific information or activities maintained or performed by 463
either the Consumer or the Provider. 464
The entities that define “the Application” vary between states. For example, in the “Deployed” 465
state, the Application is represented by the graph of entities rooted in an Assembly Template. In 466
Page 22
Cloud Application Management for Platforms
Version 1.0 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG 14
in the “Instantiated” state, the Application is represented by the graph of entities rooted in an 467
Assembly. 468
Platform-specific environments might add to or extend this lifecycle to accommodate the needs of 469
a particular framework or language. Such extensions are outside the scope of this specification. 470
3.1. Uploaded
While the development of Applications and their components is outside the scope of this specification, 471
nonetheless it is recognized that such development may occur either within the PaaS environment itself, 472
or externally (i.e. on the Application Developer’s local machine). In the latter case, the executable images, 473
and Deployment Plan, and other metadata that make up the Application shall be imported into the 474
platform in the form of a PDP. Because the PDP represents a significant interoperability point, the 475
Uploaded state exists to depict the upload package transition. During this transition the PDP is un-476
archived, validated, and parsed (not necessarily in that order). Invalid PDPs will cause the upload 477
package transition to fail. Once uploaded, the Application/PDP may be persisted in some fashion outside 478
the scope of this specification. The invocation of the register transition may occur either automatically or 479
via some unspecified action on the part of the Application Administrator. 480
3.2. Deployed
The Application enters the Deployed state via one of the register transitions. During these transitions the 481
Deployment Plan is parsed and validated and the corresponding Assembly Template, Application 482
Component Templates, Application Component Requirements, etc. are created as addressable entities in 483
the Platform. The register transition also encompasses the process of dependency resolution in which 484
Platform Component Requirements and Application Component Requirements are matched 485
(respectively) against candidate Platform Component Templates and Application Component Templates. 486
Note this process may require interaction with the Consumer. If the required dependencies are not 487
resolved or if the metadata is incomplete, the register transition shall not happen. 488
Once deployed, an Application may be customized by the Application Administrator. This is represented 489
by the customize transition. Customization may include changes to configuration parameters, modifying 490
dependencies, etc. Application Administrators may elect to copy or create new Assembly Templates – 491
effectively creating a new Application. 492
Deployed Applications may be removed as represented by the delete transition. Deleting an Application 493
removes its Assembly Template, Application Component Template, Platform Component Requirement, 494
and Application Component Requirement entities. 495
3.3. Instantiated
The Instantiated state represents a running Application. The management entity for an Application in this 496
state is the Assembly. The Assembly and its graph of dependent Application Components and Platform 497
Components are created upon entry to this state via the instantiate transition and removed during the 498
delete instance transition. 499
3.4. Suspended
The optional Suspended state represents an Application that has been suspended. During this state the 500
Application is unavailable to its clients and does not process any requests. This specification does not 501
specify whether the suspension is done at full scale with all its existing resources allocated, or scaled 502
back with minimum resources necessary to preserve its runtime context, or something in between. An 503
Page 23
Cloud Application Management for Platforms
15 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG Version 1.0
implementation can specify scale at which suspension is done or allow clients to specify the scale of 504
suspension via extensions. The scale at which the suspension is done affects resource utilization and 505
therefore cost during the suspension phase. It also affects the time it takes to resume processing client 506
requests at roughly the same rate as before suspension. 507
Note the delete instance transition has the same effect as the delete instance transition for an Instantiated 508
Application. 509
4. Platform Deployment Package
The Platform Deployment Package (PDP) ensures portability across platforms. It can be created by a 510
platform to export to another platform, which then imports it. It can also be created by an Application 511
Development Environment running locally or deployed as Software as a Service in the cloud. 512
4.1. PDP Package Structure
A PDP consists of the following files: 513
One Deployment Plan file with extension .dp 514
Zero or one manifest file with the extension .mf 515
Zero or one certificate with the extension .cert 516
Zero or more language specific bundles 517
Zero or more additional resource files 518
The manifest file contains a list of all the other files in the package and may contain file-related metadata 519
such as checksums. The certificate is used to sign the package manifest. The PDP may be delivered as a 520
single tar file consisting of the above items. 521
4.2. Deployment Plan
The Deployment Plan is an XML file that contains the templates, dependencies and platform component 522
configurations that enables the platform to create the environment and instantiate all the components in 523
order to launch the application. Attributes in the deployment plan are used by the platform to create the 524
Assembly Template, Component Templates and Component Dependencies. 525
4.2.1. Deployment Plan Schema
This section will be completed when the resource encoding in section 4 is complete. The intent is to reuse 526
that encoding in the Deployment Plan Schema such that implementations have a ready capability to 527
generate Platform Deployment Plans from their internal representations. 528
Page 24
Cloud Application Management for Platforms
Version 1.0 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG 16
5. Resources
The following sections describe the resources defined by this specification. 529
5.1. Common Types
Resource attributes are defined using the following types: 530
5.1.1. Boolean
As defined by JSON [RFC4627], a token having a literal value of either true or false. 531
5.1.2. String
A UNICODE string as defined by JSON [RFC4627]. 532
5.1.3. URI
A String (see above) that conforms to the syntax defined in RFC 3986 [RFC3986]. 533
5.1.4. Timestamp
A String (see above) that conforms to the syntax defined in ISO 8601 [ISO 8601:20044]. 534
5.1.5. Link
The management model defined in this specification involves resource entity attribute values that link to 535
other resource entities. For example, one of the Platform resource entity attribute values points to 536
Assembly Templates. The “Link” type defined here is used for such attribute values. 537
Link has one or more attributes. The attribute href whose value is a URL MUST be present. Other 538
attributes, not defined in this specification, MAY also be present. A JSON example is shown below: 539
"LinkName": {"href": "http://example.org/paas1/assemblies/1"} 540
5.1.6. ResourceState
This type is used to denote the state of the resource within the lifecycle defined for that resource. 541
The following table is the data model of this type. 542
Table 1 – ResourceState Data Model
Field Type Occurs Description
state String 1 Current state of the resource. This is a label
containing lifecycle state (e.g. INITIATED,
CREATING, CREATED, DESTROYING,
DESTROYED, READY).
When there are vendor extensions, the vendor
shall publish and document their semantics
progress Integer between 0 and 100 0..1 Indicates the progress made as an approximate
percentage. Not all state labels assign semantic
meaning to this field
Page 25
Cloud Application Management for Platforms
17 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG Version 1.0
messages Message[] 0..1 Include the message data model instances to
denote noteworthy communications
5.2. Attribute Constraints
Resource attributes are constrained along a number of axes. These are: 543
5.2.1. Cardinality
This constraint indicates the cardinality of the attribute. 544
5.2.2. Mutability
This constraint indicates the mutability of the attribute’s value(s). “immutable” indicates that the value of 545
the attribute, once set, shall not change for the lifetime of the resource. “mutable” indicates that the value 546
of the attribute may change due to the actions or activity of either the provider or the user. 547
5.2.3. Writeable
This constraint indicates the ability of a user to update the value of the attribute. It is only relevant for 548
mutable attributes. “false” indicates that the value(s) of the attribute can only be changed by the provider. 549
“true” indicates that users may change the value(s) of the attribute. 550
5.3. Common Resource Attributes
All the resources in this specification contain the following common attributes: 551
5.3.1. uri
Type: URI 552
Cardinality: 1 553
Mutability: immutable 554
This attribute expresses the URI of the resource. 555
5.3.2. name
Type: String 556
Cardinality: 1 557
Mutability: mutable 558
Writeable: true 559
This attribute expresses the human-readable name of the resource. 560
5.3.3. description
Type: String 561
Cardinality: 0..1 562
Mutability: mutable 563
Writeable: true 564
This attribute expresses the human-readable description of the resource. 565
Page 26
Cloud Application Management for Platforms
Version 1.0 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG 18
5.3.4. created
Type: Timestamp 566
Cardinality: 1 567
Mutability: immutable 568
This attribute expresses the time which the resource was created. 569
5.3.5. tags
Type: String[] 570
Cardinality: 0..1 571
Mutability: mutable 572
Writeable: true 573
This attribute is an array of String values that may be assigned by the provider or the user. These values 574
can be used for keywording and terms-of-interest. 575
5.4. Error Response Message
Media Type: application/vnd.org.example.PaaS+json;type=ErrorMessage 576
Successful requests will generally return an HTTP status code of 200 (OK), 201 (Created), 202 577
(Accepted), or 204 (No Content), to indicate that the requested action has been successfully performed or 578
submitted. In addition, they might include a response message body (with an appropriate media type) 579
containing a representation of the requested information. However, it is possible for a number of things to 580
go wrong. The various underlying causes are described (as discussed in the previous section) by various 581
HTTP status codes in the range 400-499 (for client side errors) or 500-599 (for server side problems). 582
If a response is returned with an error status code (400-499 or 500-599), where appropriate, the server is 583
encouraged to include a response message body containing an ErrorMessage object (as defined 584
below). The text values of such messages might be used, for example, to communicate with a human 585
user of the client side application. 586
The list of messages included in a single error response is encapsulated in the ErrorMessage data model. 587
The media type shall be returned in the Content-Type header. The client shall not include the 588
ErrorMessage media type in the Accept header. 589
Table 2 – ErrorMessage Data Model
Field Type Occurs Description
message Message 0..n Zero or more message data for each individual
message.
An individual message contains the following fields: 590
Table 3 - Message Data Model
Field Type Occurs Description
code String 0..1 Symbolic error code identifying the type of error
reported by this message
Page 27
Cloud Application Management for Platforms
19 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG Version 1.0
field String 0..1 Name of the field from the request data model
that this message is associated with
hint String 0..1 Localized text further describing the nature of
the problem, possibly including potential
workarounds that the client could try
text String 1 Localized text describing the nature of the
problem reported by this message
severity String 0..1 Label indicating the severity of the error
condition represented by this message
Vendor shall publish the enumerators that are
associated with this field and their semantics
stackTrace String 0..1 Vendor specific stack trace associated with this
message
source String 0..1 Symbolic identifier of the implementation
component that triggered this message
uri URI 0..1 A unique URI that reference this particular
message
namespace URI 0..1 A reference to the standard URI to indicate the
meaning of this message
The namespace attribute indicates the semantic meaning of the message which clients may handle 591
automatically. Messages with the same namespace shall adhere to the semantic requirements of that 592
namespace, but the payload (hint, text, severity, stackTrace) may be different. In other words, 593
given a namespace, clients processing the message should be able to subsequently interact with the 594
providers in a consistent manner across. 595
Each provider may extend the namespace to include specific scenarios and use cases. 596
The information captured in the message data element should be complementary to the HTTP status 597
code, and COULD provide more detailed information. However, it shall not contradict the HTTP status 598
code that is returned with the request. 599
The following table outlines the common namespace that would accompany this specification. 600
Table 4 - Common Message Namespace
Namespace Description
/msg/unknown Unknown error and information given is descriptive in nature
/msg/security Security issues
/msg/security/authentication An authentication error
/msg/access Access violation error
Page 28
Cloud Application Management for Platforms
Version 1.0 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG 20
/msg/allocation Allocation related issues
/msg/allocation/insufficient Insufficient resource to satisfy the request
/msg/infrastructure Infrastructure related issues
/msg/infrastructure/maintenance The request cannot be immediately responded due to the
infrastructure being in maintenance status
5.5. Extensibility to the resource model
To support returning selective attributes, the following shall be observed by the service provider: 601
The attribute name of a resource shall contain alphanumeric characters with “_” and “-“. Thus, [a-602
zA-Z0-9_\-] 603
5.6. Platform
Media Type: application/vnd.org.example.PaaS+json;type=Platform 604
For a user, a Platform represents the user’s starting view of all accessible resources and deployed 605
entities. This resource has the following, general representation: 606
{ 607
"uri": URI, 608
"name": String, 609
"description": String, 610 "created": Timestamp, 611
"tags": [ 612
String, + 613 ], ? 614
"specificationVersion": String[], 615
"implementationVersion": String, ? 616
"assemblyTemplates": [ 617 {"href": URI}, + 618
], ? 619
"assemblies": [ 620 {"href": URI}, + 621
], ? 622
"platformComponentTemplates": [ 623 {"href": URI}, + 624
], ? 625
"platformComponentCapabilities": [ 626
{"href": URI}, + 627 ], ? 628
"platformComponents": [ 629
{"href": URI}, + 630 ], ? 631
"resourceState": { 632
"state": String, 633
"progress": String, ? 634 "messages": [ 635
{ Message }, + 636
] ? 637
Page 29
Cloud Application Management for Platforms
21 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG Version 1.0
} 638
} 639
The Platform resource contains the following attributes: 640
5.6.1. specificationVersion
Type: String[] 641
Cardinality: 1 642
Mutability: immutable 643
This attribute lists the version(s) of this specification this instance the Platform supports. See section 6.8 644
for details on concurrent version support. 645
5.6.2. implementationVersion
Type: String 646
Cardinality: 0..1 647
Mutability: immutable 648
This attribute expresses the vendor specific version of the server implementation. 649
5.6.3. assemblyTemplates
Type: Link[] 650
Cardinality: 0..1 651
Mutability: mutable 652
Writeable: false 653
This attribute is an array of Links to the AssemblyTemplates that are accessible to the user. 654
5.6.4. assemblies
Type: Link[] 655
Cardinality: 0..1 656
Mutability: mutable 657
Writeable: false 658
This attribute is an array of Links to the Assembly resources that are accessible to the user. 659
5.6.5. platformComponentTemplates
Type: Link[] 660
Cardinality: 0..1 661
Mutability: mutable 662
Writeable: false 663
This attribute is an array of Links to the PlatformComponentRequirement resources that are accessible to 664
the user. 665
5.6.6. platformComponentCapabilities
Type: Link[] 666
Page 30
Cloud Application Management for Platforms
Version 1.0 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG 22
Cardinality: 0..1 667
Mutability: mutable 668
Writeable: false 669
This attribute is an array of Links to the PlatformComponentCapability resources that are accessible to 670
the user. 671
5.6.7. platformComponents
Type: Link[] 672
Cardinality: 0..1 673
Mutability: mutable 674
Writeable: false 675
This attribute is an array of Links to the PlatformComponentCapability resources that are accessible to 676
the user. 677
5.6.8. resourceState
Type: ResourceState 678
Cardinality: 1 679
Mutability: mutable 680
Writeable: false 681
This attribute expresses state of the resource within the lifecycle. 682
5.7. AssemblyTemplate
Media Type: application/vnd.org.example.PaaS+json;type=AssemblyTemplate 683
For an Application Administrator, an Assembly Template represents the definition of the deployable 684
Application. Application Administrators can create an Assembly Instance by specifying the URI of a 685
Assembly Template as a field in a deployment request. The platform shall instantiate the Application 686
Components and their configurations as specified in the definition of the Assembly Template. This 687
resource has the following, general representation: 688
{ 689
"uri": URI, 690
"name": String, 691 "description": String, 692
"created": Timestamp, 693
"tags": [ 694
String, + 695 ], ? 696
"definition": String, 697
"basedOn": {"href": URI}, ? 698 "applicationComponentTemplates": [ 699
{"href": URI}, + 700
], ? 701
"platformComponentTemplates": [ 702 {"href": URI}, + 703
], ? 704
"dependencies": [ 705
Page 31
Cloud Application Management for Platforms
23 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG Version 1.0
{"href": URI}, + 706
] ? 707 } 708
The AssemblyTemplate resource contains the following attributes: 709
5.7.1. definition
Type: String 710
Cardinality: 1 711
Mutability: mutable 712
Writeable: true 713
This attribute contains the definition of the AssemblyTemplate represented in some format, such as XML, 714
that contains the metadata necessary for the platform to deploy the Application. 715
5.7.2. basedOn
Type: Snapshot 716
Cardinality: 0..1 717
Mutability: mutable 718
Writeable: false 719
The attribute contains the snapshot of the Assembly on which this AssemblyTemplate is based. 720
5.7.3. applicationComponentTemplates
Type: Link[] 721
Cardinality: 0..1 722
Mutability: mutable 723
Writeable: true 724
This attribute is an array of Links to the ApplicationComponentTemplate resources that are part of this 725
AssemblyTemplate. 726
5.7.4. platformComponentTemplates
Type: Link[] 727
Cardinality: 0..1 728
Mutability: mutable 729
Writeable: true 730
This attribute is an array of Links to the PlatformComponentTemplate resources that are part of this 731
AssemblyTemplate. 732
5.7.5. dependencies
Type: Link[] 733
Cardinality: 0..1 734
Mutability: mutable 735
Writeable: true 736
Page 32
Cloud Application Management for Platforms
Version 1.0 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG 24
This attribute is an array of Links to the Dependency resources that are part of this AssemblyTemplate. 737
5.8. ApplicationComponentTemplate
Media Type: application/vnd.org.example.PaaS+json;type=ApplicationComponentTemplate 738
For an Application Administrator, an Application Component Template represents the definition of the 739
deployable Component. Application Administrators can create an Application Component by specifying 740
the URI of an Application Component Template (with referenced Application Component Templates) as a 741
field in a deployment request to create a standalone service. The cloud shall instantiate the Components 742
and their configurations as specified in the definition of the Application Component Template. This 743
resource has the following, general representation: 744
{ 745 "uri": URI, 746
"name": String, 747
"description": String, 748 "created": Timestamp, 749
"tags": [ 750
String, + 751 ], ? 752
"definition": String, 753
"basedOn": {"href": URI} ? 754
} 755
The ApplicationComponentTemplate resource contains the following attributes: 756
5.8.1. definition
Type: String 757
Cardinality: 1 758
Mutability: mutable 759
Writeable: true 760
This attribute contains the definition of the ApplicationComponentTemplate represented in some format, 761
such as XML, that contains the metadata necessary for the platform to deploy the Application. 762
5.8.2. basedOn
Type: Snapshot 763
Cardinality: 0..1 764
Mutability: mutable 765
Writeable: false 766
The attribute contains the snapshot of the ApplicationComponent on which this 767
ApplicationComponentTemplate is based. 768
5.9. ApplicationComponentRequirement
Media Type: application/vnd.org.example.PaaS+json;type=ApplicationComponentRequirement 769
For an Application Administrator, an Application Component Requirement represents an Application 770
Component’s requirement on another Application Component and its required range of component 771
Page 33
Cloud Application Management for Platforms
25 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG Version 1.0
capabilities. Each Application Component Requirement implements this class and adds its’ own Attribute 772
Ranges to the list below. This resource has the following, general representation: 773
{ 774
"uri": URI, 775 "name": String, 776
"description": String, 777
"created": Timestamp, 778
"tags": [ 779 String, + 780
], ? 781
"definition": String 782 } 783
The ApplicationComponentRequirement resource contains the following attributes: 784
5.9.1. definition
Type: String 785
Cardinality: 1 786
Mutability: mutable 787
Writeable: true 788
This attribute contains the definition of the ApplicationComponentRequirement represented in some 789
format, such as XML, that contains the metadata necessary for the platform to deploy the Application. 790
5.10. ApplicationComponentCapability
Media Type: application/vnd.org.example.PaaS+json;type=ApplicationComponentCapability 791
For an Application Administrator, an Application Component Capability represents the definition of an 792
Applicaton Component’s range of component capabilities. This resource has the following, general 793
representation: 794
{ 795
"uri": URI, 796
"name": String, 797
"description": String, 798 "created": Timestamp, 799
"tags": [ 800
String, + 801 ], ? 802
"definition": String 803
} 804
Each Application Component Capability implements this class and adds its’ own Attributes to the list 805
below. 806
5.10.1. definition
Type: String 807
Cardinality: 1 808
Mutability: mutable 809
Writeable: true 810
Page 34
Cloud Application Management for Platforms
Version 1.0 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG 26
This attribute contains the definition of the ApplicationComponentCapability represented in some format, 811
such as XML, that contains the metadata necessary for the platform to deploy the Application. 812
5.11. PlatformComponentTemplate
Media Type: application/vnd.org.example.PaaS+json;type=PlatformComponentTemplate 813
For an Application Administrator, a Platform Component Template represents the desired configuration of 814
a Platform Component with specific values for the component capabilities. The specified value for each 815
component attribute shall be in the range defined in the corresponding Platform Component Capability. 816
This resource has the following, general representation: 817
{ 818
"uri": URI, 819
"name": String, 820 "description": String, 821
"created": Timestamp, 822
"tags": [ 823
String, + 824 ], ? 825
"definition": String 826
} 827
Each Platform Component implements this class and adds its own Component Attributes to the list below. 828
5.11.1. definition
Type: String 829
Cardinality: 1 830
Mutability: mutable 831
Writeable: true 832
This attribute contains the definition of the PlatformComponentTemplate represented in some format, 833
such as XML, that contains the metadata necessary for the platform to deploy the Application. 834
5.12. PlatformComponentRequirement
Media Type: application/vnd.org.example.PaaS+json;type=PlatformComponentRequirement 835
For an Application Administrator, a Platform Component Requirement represents an Application 836
Component’s requirement on a Platform Component and its required range of component capabilities. 837
This resource has the following, general representation: 838
{ 839 "uri": URI, 840
"name": String, 841
"description": String, 842
"created": Timestamp, 843 "tags": [ 844
String, + 845
], ? 846 "definition": String 847
} 848
Page 35
Cloud Application Management for Platforms
27 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG Version 1.0
Each Platform Component Requirement implements this class and adds its own Attribute Ranges to the 849
list below. 850
5.12.1. definition
Type: String 851
Cardinality: 1 852
Mutability: mutable 853
Writeable: true 854
This attribute contains the definition of the PlatformComponentRequirement represented in some format, 855
such as XML, that contains the metadata necessary for the platform to deploy the Application. 856
5.13. PlatformComponentCapability
Media Type: application/vnd.org.example.PaaS+json;type=PlatformComponentCapability 857
For an Application Administrator, a Platform Component Capability represents the definition of Platform 858
Component and its range of component capabilities. This resource has the following, general 859
representation: 860
{ 861
"uri": URI, 862 "name": String, 863
"description": String, 864
"created": Timestamp, 865 "tags": [ 866
String, + 867
], ? 868 "definition": String 869
} 870
Each Platform Component Capability implements this class and adds its’ own Attributes to the list below. 871
5.13.1. definition
Type: String 872
Cardinality: 1 873
Mutability: mutable 874
Writeable: true 875
This attribute contains the definition of the PlatformComponentCapability represented in some format, 876
such as XML, that contains the metadata necessary for the platform to deploy the Application. 877
5.14. Assembly
Media Type: application/vnd.org.example.PaaS+json;type=Assembly 878
For an Application Administrator, an Assembly represents the definition of the deployed Application at 879
runtime. This resource has the following, general representation: 880
{ 881
"uri": URI, 882 "name": String, 883
Page 36
Cloud Application Management for Platforms
Version 1.0 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG 28
"description": String, 884
"created": Timestamp, 885 "tags": [ 886
String, + 887
], ? 888
"definition": String, 889 "applicationComponents": [ 890
{"href": URI}, + 891
], ? 892 "platformComponents": [ 893
{"href": URI}, + 894
], ? 895 "assemblyTemplate": {"href": URI}, ? 896
"resourceState": { 897
"state": String, 898
"progress": String, ? 899 "messages": [ 900
{ Message }, + 901
] ? 902 } 903
} 904
The Assembly resource contains the following attributes: 905
5.14.1. definition
Type: String 906
Cardinality: 1 907
Mutability: immutable 908
This attribute contains the definition of the Assembly represented in some format, such as XML, that 909
contains the metadata necessary for the platform to deploy the Application. 910
5.14.2. applicationComponents
Type: Link[] 911
Cardinality: 0..1 912
Mutability: immutable 913
This attribute is an array of Links to the ApplicationComponent resources that are part of this Assembly. 914
5.14.3. platformComponents
Type: Link[] 915
Cardinality: 0..1 916
Mutability: immutable 917
This attribute is an array of Links to the PlatformComponent resources that are part of this Assembly. 918
5.14.4. assemblyTemplate
Type: Link 919
Cardinality: 1 920
Mutability: immutable 921
Page 37
Cloud Application Management for Platforms
29 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG Version 1.0
This attribute is a Link to the AssemblyTemplate resource from which this Assembly was created. 922
5.14.5. resourceState
Type: ResourceState 923
Cardinality: 1 924
Mutability: mutable 925
Writeable: false 926
This attribute expresses state of the resource within the lifecycle. 927
5.15. ApplicationComponent
Media Type: application/vnd.org.example.PaaS+json;type=ApplicationComponent 928
For an Application Administrator, an Application Component represents the management of the deployed 929
Component at runtime. This resource has the following, general representation: 930
{ 931
"uri": URI, 932
"name": String, 933 "description": String, 934
"created": Timestamp, 935
"tags": [ 936 String, + 937
], ? 938
"definition": String, 939
"applicationComponents": [ 940 {"href": URI} + 941
], ? 942
"platformComponents": [ 943 {"href": URI}, + 944
], ? 945
"resourceState": { 946
"state": String, 947 "progress": String, ? 948
"messages": [ 949
{ Message }, + 950 ] ? 951
} 952
} 953
The ApplicationComponent resource contains the following attributes: 954
5.15.1. definition
Type: String 955
Cardinality: 1 956
Mutability: immutable 957
This attribute contains the definition of the ApplicationComponent represented in some format, such as 958
XML, that contains the metadata necessary for the platform to deploy the Application. 959
Page 38
Cloud Application Management for Platforms
Version 1.0 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG 30
5.15.2. applicationComponents
Type: Link[] 960
Cardinality: 0..1 961
Mutability: immutable 962
This attribute is an array of Links to the ApplicationComponent resources that this ApplicationComponent 963
depends on. 964
5.15.3. platformComponents
Type: Link[] 965
Cardinality: 0..1 966
Mutability: immutable 967
This attribute is an array of Links to the PlatformComponent resources that this ApplicationComponent 968
depends on. 969
5.15.4. resourceState
Type: ResourceState 970
Cardinality: 1 971
Mutability: mutable 972
Writeable: false 973
This attribute expresses state of the resource within the lifecycle. 974
5.16. PlatformComponent
Media Type: application/vnd.org.example.PaaS+json;type=PlatformComponent 975
For an Application Administrator, a Platform Component represents the runtime instance of a platform 976
component and its configuration of component attributes as well as metrics associated with those 977
attributes. This resource has the following, general representation: 978
{ 979
"uri": URI, 980
"name": String, 981 "description": String, 982
"created": Timestamp, 983
"tags": [ 984
String, + 985 ], ? 986
"definition": String, 987
"externalManagementResource": URI, ? 988 "resourceState": { 989
"state": String, 990
"progress": String, ? 991 "messages": [ 992
{ Message }, + 993
] ? 994
} 995 } 996
Page 39
Cloud Application Management for Platforms
31 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG Version 1.0
Each Platform Component implements this class and adds its own attributes and to the list below. 997
5.16.1. definition
Type: String 998
Cardinality: 1 999
Mutability: immutable 1000
This attribute contains the definition of the PlatformComponent represented in some format, such as 1001
XML, that contains the metadata necessary for the platform to deploy the Application. 1002
5.16.2. externalManagementResource
Type: URI 1003
Cardinality: 0..1 1004
Mutability: immutable 1005
A URI to an external management interface to manage this platform component (such as an IaaS API to 1006
manage the virtual machines that support this component). This is platform dependent and requires 1007
external documentation to understand its meaning. 1008
5.16.3. resourceState
Type: ResourceState 1009
Cardinality: 1 1010
Mutability: mutable 1011
Writeable: false 1012
This attribute expresses state of the resource within the lifecycle. 1013
Page 40
Cloud Application Management for Platforms
Version 1.0 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG 32
6. Protocol
6.1. Transport Protocol
All of The Platform APIs are based on the Hypertext Transfer Protocol, version 1.1 [RFC2616]. Each 1014
request will be authenticated using HTTP Basic Authentication [RFC2617] unless otherwise noted. 1015
Therefore, requests sent from clients across unsecured networks should use the HTTPS protocol. TLS 1016
1.1 [RFC4346] shall be implemented by the provider and TLS 1.2 [RFC5246] is strongly encouraged. 1017
When TLS is implemented, the following cipher suites shall be supported to ensure a minimum level of 1018
security and interoperability between implementations: 1019
TLS_RSA_WITH_AES_128_CBC_SHA (mandatory for TLS 1.1/1.2) 1020
TLS_RSA_WITH_AES_256_CBC_SHA256 (addresses 112-bit security strength requirements) 1021
TLS_RSA_WITH_NULL_SHA (for TLS without encryption) 1022
6.2. URI Space
The resources in the system are identified by URIs. To begin operations, a client shall know the URI for a 1023
resource. Dereferencing the URI will yield a representation of the resource containing resource attributes 1024
and links to associated resources. 1025
Clients shall not make assumptions about the layout of the URIs or the structure of the URIs of the 1026
resources. 1027
6.3. Media Types
In this specification, resource representations and request bodies are encoded in JSON, as specified in 1028
[RFC4627]. 1029
Each type of resource has its own media-type, which matches the pattern 1030
application/vnd.org.example.PaaS+json;type=Xxxxx, where “Xxxxx” represents the portion of the identifier 1031
unique to a particular resource type. The identifier shall be unique within the namespace of 1032
vnd.org.example.PaaS, and the media type should be registered in accordance to [RFC4288]. 1033
Note: The media types of the resources defined in this specification is an 1034
active area of discussion, and the authors seek feedback from readers and 1035
developers on this topic1. 1036
The Platform shall provide representations of all resources available in JSON, but other formats are 1037
allowed. This specification doesn't define any schemata or aid in validating an XML encoding. 1038
The Platform shall accept requests from clients encoded in JSON. 1039
If alternative formats are supported they shall be supported uniformly for all resources. 1040
1 The authors are aware that using the type parameter in the Content-Type HTTP header field is an
issue for Python.
Page 41
Cloud Application Management for Platforms
33 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG Version 1.0
6.4. Request Headers
This API does not impose any requirements on clients’ use of HTTP headers. All PUT requests that 1041
update a resource SHOULD contain the If-Match header field with a single entity tag value. If the If-1042
Match header field value in the request does not match the one on the server-side, the server MUST 1043
send back a '412 Precondition Failed' status code. 1044
6.5. Request Parameters
In order to address a subset of attributes in a resource, the client can use request parameters in GET and 1045
PUT requests to formulate the following 1046
Table 5 – Request Parameters
Format Description Example
?SelectAttr=attr
1,attr2,…
Comma (“,”) separated attribute names of
the resource to return.
If an attribute is not part of the resource,
an HTTP 4XX status code shall be
returned.
Assembly132?SelectAttr
=name,description,status
Would access only “name”, “description”,
“status” attributes of Assembly132.
The “SelectAttr” query parameter may appear more than once (separated by an “&”). The client shall URL 1047
encode the request parameters. 1048
When one or more request parameters are specified for a PUT request, a client shall not include 1049
attributes in the request entity body that are not specified in the request parameter. Upon receiving such a 1050
request the server shall respond with a 400 status code. 1051
6.6. Response Headers
Responses returned by the Platform makes standard use of HTTP headers. All HTTP responses that 1052
return representation of a resource SHOULD use strong ETag response header field indicating the 1053
current value of the entity tag for the resource. 1054
6.7. HTTP Status Codes
The API returns standard HTTP response codes. 1055
6.8. Concurrent API versions
Multiple API versions may be offered concurrently to allow backward compatibility for clients. To discover 1056
available versions a client issues a GET request for the <platform-url>/api/versions resource 1057
and may select one of the listed versions. Each available API version is assigned a namespace identified 1058
by a URL. 1059
The response to a GET request for <platform-url>/api/versions will include a list of available API 1060
versions and the URL where each version may be accessed. The list of available versions shall be 1061
expressed using the common Link type with an additional name version added to the link and its 1062
corresponding value. 1063
An example of client requests to the platform are as follows: 1064
Page 42
Cloud Application Management for Platforms
Version 1.0 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG 34
GET / => {…, "links": […, "/api/versions", …], …} 1065
1066 GET /api/versions => [ 1067
{"version" : "1.0", "href": "http://paas.example.org/"}, 1068
{"version" : "1.1", "href": "http://api.example.org/foo"}, 1069
] 1070
Only versions defined by a CAMP specification can be listed. Additional features not defined in this 1071
specification can be implemented using the extensibility features discussed in this specification. 1072
6.9. Registering a PDP
As indicated in Section 3, registering a package moves it to the deployed state. To register a PDP, a 1073
client sends a POST HTTP request to the Platform URL. The entity body of the request contains the URI 1074
that identifies the PDP that is being registered. If the URI that identifies the PDP is a relative URI, its base 1075
URI is the Platform URI. The JSON serialization of the HTTP request entity body is: 1076
{"pdp_uri" : "<uri-of-the-pdp>"} 1077
Where, the pdp_uri points to the URI of the PDP to be registered. The JSON object MAY contain 1078
additional name-value pairs that are not defined in this specification. On successful registration of the 1079
PDP, the server creates an AssemblyTemplate resource and sends a 201 Created HTTP status code with 1080
the Location header in the HTTP response. The Location header points to the newly created 1081
AssemblyTemplate resource. The server also updates the application_templates attribute of the 1082
Platform resource to include a reference to the newly created assembly template. 1083
An example HTTP request-response is as follows: 1084
POST /<platform-url> HTTP/1.1 1085 Host: example.org 1086
Content-Type: application/vnd.org.example.PaaS +json;type=Xxxxx 1087
Content-Length: ... 1088 1089
{"pdp_uri": "/paas/pdp/1"} 1090
1091 HTTP/1.1 201 Created 1092
Location: http://example.org/paas/asm_template/1 1093
Content-Type: ... 1094
Content-Length: ... 1095 1096
... 1097
6.10. Instantiating an Application
Once the application is in the deployed state, a client can instantiate the application by sending a POST 1098
HTTP request to the corresponding AssemblyTemplate URL. The entity body of the request can be 1099
empty. Interpretation of a non-empty entity body of the request is implementation-dependent. On success 1100
the server creates an Assembly resource and sends a 201 Created HTTP status code with the Location 1101
header in the HTTP response. The Location header points to the newly created Assembly resource. 1102
The server also updates the AssemblyInstances attribute of the Platform resource to include a 1103
reference to the newly created assembly. 1104
An example HTTP request-response is as follows: 1105
Page 43
Cloud Application Management for Platforms
35 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG Version 1.0
POST /paas/asm_template/1 HTTP/1.1 1106
Host: example.org 1107 1108
HTTP/1.1 201 Created 1109
Location: http://example.org/paas/assembly/1 1110
Content-Type: ... 1111 Content-Length: ... 1112
1113
... 1114
6.11. Suspending and Resuming an Application
To suspend, or resume an application, a client sends a POST HTTP request to the assembly resource 1115
URL. The entity body of the request contains the value of the new state for the application. The JSON 1116
serialization of the HTTP request entity body is: 1117
{"new_state" : "<new-state-value>"} 1118
Where, new_state specifies the new desired value for the application state. This specification defines 1119
two such values: "suspend", and "resume," whose semantics are as defined in Section 3. An 1120
implementation MAY have additional state values that it allows. The JSON object MAY contain additional 1121
name-value pairs that are not defined in this specification. An implementation can define additional state 1122
values or name-value pairs, to allow clients to specify the scale at which the application is suspended and 1123
resumed. 1124
An example HTTP request-response is as follows: 1125
POST /<assembly-resource-url> HTTP/1.1 1126 Host: example.org 1127
Content-Type: application/vnd.org.example.PaaS +json;type=Xxxxx 1128
Content-Length: ... 1129 1130
{"new_state": "suspend"} 1131
1132
HTTP/1.1 200 OK 1133
6.12. Deleting an Application Instance and a Deployed Application
To delete an application instance (an assembly), a client sends a DELETE HTTP request to the assembly 1134
resource URL. Similarly, to delete a deployed application, a client sends a DELETE HTTP request to the 1135
assembly template URL. 1136
7. Normative References
[RFC2119] 1137
S. Bradner, “Key words for use in RFCs to Indicate Requirement Levels”, IETF RFC 2119, March 1138
1997 1139
http://www.ietf.org/rfc/rfc2119.txt 1140
[RFC2616] 1141
R. Fielding et al, “Hypertext Transfer Protcol – HTTP/1.1”, IETF RFC 2616, June 1999 1142
http://www.w3.org/Protocols/rfc2616/rfc2616.html 1143
[RFC2617] 1144
Page 44
Cloud Application Management for Platforms
Version 1.0 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG 36
J. Franks et al, “HTTP Authentication: Basic and Digest Access Authentication”, IETF RFC 2617, 1145
June 1999 1146
http://www.ietf.org/rfc/rfc2617.txt 1147
[RFC 3986] 1148
T.Berners-Lee et al, “Uniform Resource Identifiers (URI): Generic Syntax”, IETF RFC 3986, August 1149
1998 1150
http://www.ietf.org/rfc/rfc3986.txt 1151
[RFC4288] 1152
N. Freed, J. Klensin, “Media Type Specifications and Registration Procedures”, IETF RFC 4288, 1153
December 2005 1154
http://www.ietf.org/rfc/rfc4288.txt 1155
[RFC4346] 1156
T. Dierks, E. Rescorla, “The Transport Layer Security (TLS) Protocol Version 1.2”, IETF RFC 4346, 1157
April 2006 1158
http://www.ietf.org/rfc/rfc4346.txt 1159
[RFC4627] 1160
D. Crockford, “The application/json Media Type for JavaScript Object Notation (JSON)”, IETF RFC 1161
4627, July 2006 1162
http://www.ietf.org/rfc/rfc4627.txt 1163
[RFC5246] 1164
T. Dierks, E. Rescorla, “The Transport Layer Security (TLS) Protocol Version 1.2”, IETF RFC 5246, 1165
August 2008 1166
http://www.ietf.org/rfc/rfc5246.txt 1167
[ISO 8601:20044] 1168
International Organization for Standardization, Geneva, Switzerland, “Data elements and interchange 1169
formats -- Information interchange - - Representation of dates and times”, March 2008 1170
http://www.iso.org/iso/iso_catalogue/ catalogue_tc/catalogue_detail.htm?csnumber=40874 1171
8. Non-Normative References
[SP800-145] 1172
Peter Mell, Timothy Grance, “The NIST Definition of Cloud Computing”, Special Publication 800-145, 1173
September 2011 1174
http://csrc.nist.gov/publications/nistpubs/800-145/SP800-145.pdf 1175
[OVF] 1176
Distributed Management Task Force, “Open Virtualization Format Specification”, DSP0243, 12 1177
January 2010 1178
http://www.dmtf.org/sites/default/files/standards/documents/DSP0243_1.1.0.pdf 1179
[Git] 1180
The Software Freedom Conservancy, “Git, the fast version control system”, March 2012 1181
http://git-scm.com/ 1182
Page 45
Cloud Application Management for Platforms
37 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG Version 1.0
Annex A. Glossary
application – a set of components that act together to provide useful functions and are typically exposed 1183
as a service to Application end-users. An application is represented by different resources (e.g. Assembly 1184
Template, Assembly) throughout its lifecycle. 1185
Application Component – a collection of code, resources and metadata that provides a set of related 1186
services or functionality. Examples include a Java library, or a PHP module. 1187
Application Component Capability – a management resource that represents an Application 1188
Component’s capabilities. 1189
Application Component Requirement – a management resource that represents a requirement on an 1190
Application Component, expressed with attributes that may have value ranges. 1191
Application Component Template - a management resource that represents an unrealized Application 1192
Component and includes a reference to the executable code as well as metadata for configuring the 1193
Application Component and referencing its platform and other components. 1194
Application Development Environment (ADE) – a developer tool used to create an application (can be 1195
an offline tool installed locally or part of the platform offering itself). 1196
Assembly – a management resource that represents a running application. 1197
Assembly Template - a management resource that represents an unrealized Assembly and includes a 1198
reference to the Application Component Templates used within the Application as well as metadata for 1199
configuring the Application Component and referencing its platform and other components. 1200
Deploy – the step of creating one or more management resources on the platform. Deployment can be 1201
done through the API for individual management resources (i.e via a POST to a URI), or can be done as 1202
part of the import of a Platform Deployment Package. 1203
Deployment Plan - packaging management meta-data that includes a serialized copy of the Assembly 1204
Template resource and all dependent management resources such as Application Component 1205
Templates. Deployment Plans are an essential part of a Platform Deployment Package. 1206
Platform – The collection of management resources that constitute the consumer visible view of the 1207
Platform as a Service offering. The Platform management resource is an aggregation and discovery 1208
point for all the Applications and their dependencies currently deployed and running. 1209
Platform as a Service (PaaS) - A type of cloud computing in which the service provider offers 1210
customers/consumers access to one or more instances of a running application computing platform or 1211
application service stack. 1212
Platform Component – a management resource that represents an application’s use of a realized and 1213
running Platform Component. 1214
Platform Component Capability – a management resource that represents a Platform Component’s 1215
capabilities. 1216
Platform Component Requirement – a management resource that represents a requirement on a 1217
Platform Component, expressed with attributes that may have value ranges. 1218
Page 46
Cloud Application Management for Platforms
Version 1.0 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG 38
Platform Component Template - a management resource that represents an unrealized Platform 1219
Component and includes references to metadata for configuring an instance of that Platform Component. 1220
Platform Deployment Package (PDP) - an archive of executable images, dependency descriptions and 1221
metadata (Management Resources serialized into a Deployment Plan) that can be used to move an 1222
Application and its Components from Platform to Platform, or between an Application Development 1223
Environment and a Platform (e.g. a storefront application with component binaries, database images and 1224
all the configurations needed to install and run). 1225
Annex B. Use Cases (Non-Normative)
The following is non-exhaustive list of detailed use cases addressed by this specification. 1226
B.1. Building the Application
B.1.1. Build Application and Package
The Application Developer selects a local Application Development Environment (ADE) and uses it to 1227
build an application. The ADE may be aware of the Platform Components that are available in the target 1228
platform for the application and may provide the developer with assistance in consuming these 1229
Components. Once built, the Components that make up the application are packaged along with any 1230
necessary metadata as part of a deployment package. The output of the ADE is a Platform Deployment 1231
Package (PDP) with bundled Component executables (including language specific packages such as 1232
.war files) and Metadata included in the deployment plan (including the requirements for Platform 1233
Component elements). This is shown in the Figure below. 1234
Figure 9 - Platform Deployment
If the platform is using an IaaS infrastructure, there will be additional packages for the deployment of 1235
Platform Components virtual machines referenced by the metadata in the PDP as shown below: 1236
Page 47
Cloud Application Management for Platforms
39 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG Version 1.0
Figure 10 - Platform Deployment with IaaS
This shows the configuration of Platform Components in a virtual machine configuration and packaging 1237
tool, which outputs OVF [OVF] packages (one for each Platform Component). These OVF packages are 1238
then deployed in an Infrastructure as a Service environment, creating the platform. The PaaS 1239
Management API will include extension points for the Platform Components that allow the administrator to 1240
invoke the IaaS management API to manage the Platform Components. 1241
B.1.2. Build Application in the Cloud and Optionally Package
This use case is the same as that described in the previous section except for the following: 1242
The ADE is itself an application that may be deployed on the Platform (see SaaS). 1243
The ADE is aware of the Platform Components that are available on the Platform for the 1244
Application. 1245
If the target platform for the application is “the same” as the platform that hosts the ADE, the 1246
packaging, registering and instantiation process may be simplified. 1247
Page 48
Cloud Application Management for Platforms
Version 1.0 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG 40
Figure 11 - ADE Development to a Platform
B.2. Deploying and Managing the Application
To deploy an application the Application Administrator shall have an account with the platform provider 1248
and access to the required resources. Assume that Assembly Templates, Application Component 1249
Templates and Platform Component Templates have already been created in the ADE and serialized into 1250
a Platform Deployment Package as shown below: 1251
Figure 12 - Platform Deployment Package (PDP)
Page 49
Cloud Application Management for Platforms
41 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG Version 1.0
B.2.1. Import Platform Deployment Package
This allows the Application Administrator to import a Platform Deployment Package and that creates the 1252
corresponding Management Resources on the Platform. The Platform Deployment Package is unpacked 1253
and Assembly Templates, Application Component Templates and their Platform Component Templates 1254
are realized in the API as Management Resources and an Assembly Instance can then be created that is 1255
ready to run. Any resources that the Components depend on are created as well. The inverse export 1256
operation creates a Platform Deployment Package from a given set of Management Resources. The 1257
imported Management Resources are shown in the Figure below: 1258
Figure 13 - Imported Platform Deployment Package
B.2.2. Upload Application
Instead of importing a Platform Deployment Package, the PaaS Management API also supports 1259
uploading of application files, be it code, configuration, or data files, in full or in part. The typical use case 1260
is that of “pushing” incremental updates (“diffs”) as one would when using a version control system such 1261
as Git [Git]. However, this upload mechanism is not limited to incremental uploads. It may also be used to 1262
upload applications in their entirety. 1263
Page 50
Cloud Application Management for Platforms
Version 1.0 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG 42
B.2.3. Run/Stop/Suspend/Snapshot
This allows the Application Administrator to run an Assembly or individual Application Components, stop 1264
them, put them into suspension or snapshot them. Assemblies in suspension can be restarted and 1265
Assemblies can be restarted from snapshots. 1266
B.2.4. Patch an Application Component Template
Replaces one or more Application Component Templates within an Assembly Template with, usually, 1267
updated versions. These updated templates will be used the next time an Assembly Instance is created 1268
from the Assembly Template or when already created Assemblies take up the change. 1269
B.2.5. Patch a Created, Deployed or Running Application
This operation replaces one or more Application Component Templates within the Assembly Template 1270
associated in a deployed or running Assembly. The updated templates are used the next time the 1271
Assembly or an Application Component within the Assembly Instance is deployed. 1272
Annex C. Example Database Platform Component (Non-Normative)
One important Platform Component that can be provided by many platforms is a database. The following 1273
sections illustrate how database components could be provided by extending the model defined in this 1274
specification. The material in these sections is non-normative. 1275
C.1. Model
A Database Platform Component provides four sub-classed resources as shown in the below diagram: 1276
Figure 14 - Database Platform Component Model
C.2. DatabaseCapability
Media Type: application/vnd.org.example.PaaS+json;type=DatabaseCapability 1277
Page 51
Cloud Application Management for Platforms
43 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG Version 1.0
For an Application Administrator, a Database Capability represents the definition of a database platform 1278
component and its range of capabilities. This resource has the following, general representation: 1279
{ 1280
"uri": URI, 1281 "name": String, 1282
"description": String, 1283
"created": Timestamp, 1284
"tags": [ 1285 String, + 1286
], ? 1287
"definition": String, 1288 "clusterTypes": [ 1289
String, + 1290
], 1291
"maxNumberNodes": String, 1292 "maxCores": String, 1293
"maxMemSize": String, 1294
"maxDiskSize": String, 1295 "backupAvailable": Boolean, 1296
"synchronousCopyAvailable": Boolean, 1297
"partitionAvailable": Boolean, 1298 "compressionAvailable": Boolean, 1299
"retentionAvailable": Boolean, 1300
"tunings": [ 1301
String, + 1302 ], 1303
"cachingAvailable": Boolean, 1304
} 1305
Each type of DatabasePlatformComponent implements this class and populates the attributes in the list 1306
below. 1307
C.2.1. definition
Type: String 1308
Cardinality: 1 1309
Mutability: mutable 1310
Writeable: false 1311
This attribute contains the definition of the DatabaseCapability represented in some format, such as XML, 1312
that contains the metadata necessary for the platform to deploy the Application. 1313
C.2.2. clusterTypes
Type: String[] 1314
Cardinality: 1 1315
Mutability: mutable 1316
Writeable: false 1317
An array of supported cluster types. Values include: “active” and “passive”. 1318
Page 52
Cloud Application Management for Platforms
Version 1.0 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG 44
C.2.3. maxNumberNodes
Type: String 1319
Cardinality: 1 1320
Mutability: mutable 1321
Writeable: false 1322
Expresses the maximum number of supported nodes for scaling purposes. 1323
C.2.4. maxCores
Type: String 1324
Cardinality: 1 1325
Mutability: mutable 1326
Writeable: false 1327
Expresses the maximum number of supported cores for scaling purposes. 1328
C.2.5. maxMemSize
Type: String 1329
Cardinality: 1 1330
Mutability: mutable 1331
Writeable: false 1332
Expresses the maximum size of supported memory for an instance. 1333
C.2.6. maxDiskSize
Type: String 1334
Cardinality: 1 1335
Mutability: mutable 1336
Writeable: false 1337
Expresses the limit to the size of a disk for an instance. 1338
C.2.7. backupAvailable
Type: Boolean 1339
Cardinality: 1 1340
Mutability: mutable 1341
Writeable: false 1342
true if backup can be enabled. 1343
C.2.8. synchronousCopyAvailable
Type: Boolean 1344
Cardinality: 1 1345
Mutability: mutable 1346
Writeable: false 1347
Page 53
Cloud Application Management for Platforms
45 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG Version 1.0
true if synchronous copy can be enabled 1348
C.2.9. partitionAvailable
Type: Boolean 1349
Cardinality: 1 1350
Mutability: mutable 1351
Writeable: false 1352
true if partitioning can be enabled 1353
C.2.10. compressionAvailable
Type: Boolean 1354
Cardinality: 1 1355
Mutability: mutable 1356
Writeable: false 1357
true if compression can be enabled 1358
C.2.11. retentionAvailable
Type: Boolean 1359
Cardinality: 1 1360
Mutability: mutable 1361
Writeable: false 1362
true if retention can be enabled 1363
C.2.12. tunings
Type: String[] 1364
Cardinality: 1 1365
Mutability: mutable 1366
Writeable: false 1367
An array of supported tuning types. Values include: “OLAP”, “DataMining”, and “Spatial” 1368
C.2.13. cachingAvailable
Type: Boolean 1369
Cardinality: 1 1370
Mutability: mutable 1371
Writeable: false 1372
true if caching can be enabled 1373
C.3. DatabaseRequirement
Media Type: application/vnd.org.example.PaaS+json;type=DatabaseRequirement 1374
Page 54
Cloud Application Management for Platforms
Version 1.0 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG 46
For an Application Administrator, a Database Requirement represents an Application Component’s 1375
requirements on a database platform component and its required range of capabilities. This resource has 1376
the following, general representation: 1377
{ 1378
"uri": URI, 1379
"name": String, 1380 "description": String, 1381
"created": Timestamp, 1382
"tags": [ 1383 String, + 1384
], ? 1385
"definition": String, 1386
"clusterTypes": [ 1387 String, + 1388
], 1389
"numberNodesRange": String, 1390 "coreRange": String, 1391
"memSizeRange": String, 1392
"diskSizeRange": String, 1393
"backupEnabled": Boolean, 1394 "synchronousCopyEnabled": Boolean, 1395
"partitionEnabled": Boolean, 1396
"compressionEnabled": Boolean, 1397 "retentionEnabled": Boolean, 1398
"tunings": [ 1399
String, + 1400 ], 1401
"cachingEnabled": Boolean 1402
} 1403
Each type of DatabaseRequirement implements this class and populates the attributes in the list below. 1404
C.3.1. definition
Type: String 1405
Cardinality: 1 1406
Mutability: mutable 1407
Writeable: true 1408
This attribute contains the definition of the DatabaseRequirement represented in some format, such as 1409
XML, that contains the metadata necessary for the platform to deploy the Application. 1410
C.3.2. clusterTypes
Type: String[] 1411
Cardinality: 1 1412
Mutability: mutable 1413
Writeable: true 1414
An array of required cluster types. Values include: “active” and “passive”. 1415
Page 55
Cloud Application Management for Platforms
47 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG Version 1.0
C.3.3. numberNodesRange
Type: String 1416
Cardinality: 1 1417
Mutability: mutable 1418
Writeable: true 1419
Expresses the range of the number of nodes for scaling purposes 1420
C.3.4. coreRange
Type: String 1421
Cardinality: 1 1422
Mutability: mutable 1423
Writeable: true 1424
Expresses the required range of number of cores. 1425
C.3.5. memSizeRange
Type: String 1426
Cardinality: 1 1427
Mutability: mutable 1428
Writeable: true 1429
Expresses the range of required memory sizes. 1430
C.3.6. diskSizeRange
Type: String 1431
Cardinality: 1 1432
Mutability: mutable 1433
Writeable: true 1434
Expresses the range if disk sizes required. 1435
C.3.7. backupEnabled
Type: Boolean 1436
Cardinality: 1 1437
Mutability: mutable 1438
Writeable: true 1439
true if backup is required. 1440
C.3.8. synchronousCopyEnabled
Type: Boolean 1441
Cardinality: 1 1442
Mutability: mutable 1443
Writeable: false 1444
Page 56
Cloud Application Management for Platforms
Version 1.0 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG 48
true if synchronous copy is required. 1445
C.3.9. partitionEnabled
Type: Boolean 1446
Cardinality: 1 1447
Mutability: mutable 1448
Writeable: true 1449
true if partitioning is required. 1450
C.3.10. compressionEnabled
Type: Boolean 1451
Cardinality: 1 1452
Mutability: mutable 1453
Writeable: true 1454
true if compression is required. 1455
C.3.11. retentionEnabled
Type: Boolean 1456
Cardinality: 1 1457
Mutability: mutable 1458
Writeable: true 1459
true if retention is required. 1460
C.3.12. tunings
Type: String[] 1461
Cardinality: 1 1462
Mutability: mutable 1463
Writeable: true 1464
An array of required tuning types. Values include: “OLAP”, “DataMining” and “Spatial”. 1465
C.3.13. cachingEnabled
Type: Boolean 1466
Cardinality: 1 1467
Mutability: mutable 1468
Writeable: true 1469
true if caching is required. 1470
C.4. DatabaseTemplate
Media Type: application/vnd.org.example.PaaS+json;type=DatabaseTemplate 1471
Page 57
Cloud Application Management for Platforms
49 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG Version 1.0
A Database Template represents the desired configuration of a Database Platform Component with 1472
specific values for the component capabilities. The specified value for each component attribute shall be 1473
in the range defined in the corresponding Database Capability. Some PaaS offerings might only offer a 1474
fixed number of Database Template instances that cannot be modified (read-only, no new instances) 1475
indicating pre-tuned and configured pools of database resources from which these draw. Other PaaS 1476
offerings may allow newly created Database Template instances with values in any combination. This 1477
resource has the following, general representation: 1478
{ 1479
"uri": URI, 1480 "name": String, 1481
"description": String, 1482
"created": Timestamp, 1483
"tags": [ 1484 String, + 1485
], ? 1486
"definition": String, 1487 "clusterType": String, 1488
"numberNodes": String, 1489
"cores": String, 1490
"memSize": String, 1491 "diskSize": String, 1492
"backupEnabled": Boolean, 1493
"synchronousCopyEnabled": Boolean, 1494 "partitionEnabled": Boolean, 1495
"compressionEnabled": Boolean, 1496
"retentionEnabled": Boolean, 1497 "tuning": String, 1498
"cachingEnabled": Boolean 1499
} 1500
Each type of DatabaseTemplate implements this class and populates the attributes in the list below. 1501
C.4.1. definition
Type: String 1502
Cardinality: 1 1503
Mutability: mutable 1504
Writeable: false 1505
This attribute contains the definition of the DatabaseTemplate represented in some format, such as XML, 1506
that contains the metadata necessary for the platform to deploy the Application. 1507
C.4.2. clusterType
Type: String 1508
Cardinality: 1 1509
Mutability: mutable 1510
Writeable: false 1511
The desired cluster type. Values include: “active” and “passive” 1512
Page 58
Cloud Application Management for Platforms
Version 1.0 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG 50
C.4.3. numberNodes
Type: String 1513
Cardinality: 1 1514
Mutability: mutable 1515
Writeable: false 1516
The desired number of nodes for an instance 1517
C.4.4. cores
Type: String 1518
Cardinality: 1 1519
Mutability: mutable 1520
Writeable: false 1521
The desired number of cores for an instance 1522
C.4.5. memSize
Type: String 1523
Cardinality: 1 1524
Mutability: mutable 1525
Writeable: false 1526
The desired size of memory for an instance 1527
C.4.6. diskSize
Type: String 1528
Cardinality: 1 1529
Mutability: mutable 1530
Writeable: false 1531
The desired size of a disk for an instance. 1532
C.4.7. backupEnabled
Type: Boolean 1533
Cardinality: 1 1534
Mutability: mutable 1535
Writeable: false 1536
true if backup is desired for an instance. 1537
C.4.8. synchronousCopyEnabled
Type: Boolean 1538
Cardinality: 1 1539
Mutability: mutable 1540
Writeable: false 1541
Page 59
Cloud Application Management for Platforms
51 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG Version 1.0
true if synchronous copy is desired for an instance. 1542
C.4.9. partitionEnabled
Type: Boolean 1543
Cardinality: 1 1544
Mutability: mutable 1545
Writeable: false 1546
true if partitioning is desired for an instance 1547
C.4.10. compressionEnabled
Type: Boolean 1548
Cardinality: 1 1549
Mutability: mutable 1550
Writeable: false 1551
true if compression is desired for an instance 1552
C.4.11. retentionEnabled
Type: Boolean 1553
Cardinality: 1 1554
Mutability: mutable 1555
Writeable: false 1556
true if retention is desired for an instance 1557
C.4.12. tuning
Type: String 1558
Cardinality: 1 1559
Mutability: mutable 1560
Writeable: false 1561
The desired tuning types. Values include: “OLAP”, “DataMining” and “Spatial” 1562
C.4.13. cachingEnabled
Type: Boolean 1563
Cardinality: 1 1564
Mutability: mutable 1565
Writeable: false 1566
true if caching is desired for an instance 1567
C.5. Database
Media Type: application/vnd.org.example.PaaS+json;type=Database 1568
Page 60
Cloud Application Management for Platforms
Version 1.0 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG 52
A Database represents the runtime instance of a Database Template and its configuration of component 1569
attributes as well as metrics associated with those attributes. Each Application’s use of a Database is 1570
represented by an instance of this resource. This resource has the following, general representation: 1571
{ 1572
"uri": URI, 1573
"name": String, 1574 "description": String, 1575
"created": Timestamp, 1576
"tags": [ 1577 String, + 1578
], ? 1579
"definition": String, 1580
"externalManagementResource": String, 1581 "clusterType": String, 1582
"numberNodes": String, 1583
"cores": String, 1584 "memSize": String, 1585
"diskSize": String, 1586
"backupEnabled": Boolean, 1587
"synchronousCopyEnabled": Boolean, 1588 "partitionEnabled": Boolean, 1589
"compressionEnabled": Boolean, 1590
"retentionEnabled": Boolean, 1591 "tuning": String, 1592
"cachingEnabled": Boolean, 1593
"operationsThroughput": String, 1594 "operationsBandwidth": String, 1595
"resourceState": { 1596
"state": String, 1597
"progress": String, ? 1598 "messages": [ 1599
{ Message }, + 1600
] ? 1601 } 1602
} 1603
Each type of Database implements this class and populates the attributes in the list below. 1604
C.5.1. definition
Type: String 1605
Cardinality: 1 1606
Mutability: immutable 1607
This attribute contains the definition of the Database represented in some format, such as XML, that 1608
contains the metadata necessary for the platform to deploy the Application. 1609
C.5.2. externalManagementResource
Type: URI 1610
Cardinality: 0..1 1611
Mutability: immutable 1612
Page 61
Cloud Application Management for Platforms
53 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG Version 1.0
A URI to an external management interface to manage this platform component (such as an IaaS API to 1613
manage the virtual machines that make up this database). This is platform dependent and requires 1614
external documentation to understand its meaning. 1615
C.5.3. clusterType
Type: String 1616
Cardinality: 1 1617
Mutability: immutable 1618
The actual cluster type. Values include: “active” and “passive” 1619
C.5.4. numberNodes
Type: String 1620
Cardinality: 1 1621
Mutability: immutable 1622
The actual number of nodes for an instance. 1623
C.5.5. cores
Type: String 1624
Cardinality: 1 1625
Mutability: immutable 1626
The actual number of cores for an instance. 1627
C.5.6. memSize
Type: String 1628
Cardinality: 1 1629
Mutability: immutable 1630
The actual size of memory for an instance. 1631
C.5.7. diskSize
Type: String 1632
Cardinality: 1 1633
Mutability: immutable 1634
The actual size of a disk for an instance. 1635
C.5.8. backupEnabled
Type: Boolean 1636
Cardinality: 1 1637
Mutability: immutable 1638
true if backup is enabled for this instance. 1639
C.5.9. synchronousCopyEnabled
Type: Boolean 1640
Page 62
Cloud Application Management for Platforms
Version 1.0 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG 54
Cardinality: 1 1641
Mutability: immutable 1642
true if synchronous copy is enabled for this instance. 1643
C.5.10. partitionEnabled
Type: Boolean 1644
Cardinality: 1 1645
Mutability: immutable 1646
true if partitioning is enabled for this instance. 1647
C.5.11. compressionEnabled
Type: Boolean 1648
Cardinality: 1 1649
Mutability: immutable 1650
true if compression is enabled for this instance. 1651
C.5.12. retentionEnabled
Type: Boolean 1652
Cardinality: 1 1653
Mutability: immutable 1654
true if retention is enabled for this instance. 1655
C.5.13. tuning
Type: String 1656
Cardinality: 1 1657
Mutability: immutable 1658
The actual tuning type of the database instance. Values include: “OLAP”, “DataMining” and “Spatial” 1659
C.5.14. cachingEnabled
Type: Boolean 1660
Cardinality: 1 1661
Mutability: immutable 1662
true if caching is enabled for this instance. 1663
C.5.15. operationsThroughput
Type: String 1664
Cardinality: 1 1665
Mutability: mutable 1666
Writeable: false 1667
The billable operations per second. 1668
Page 63
Cloud Application Management for Platforms
55 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG Version 1.0
C.5.16. operationsBandwidth
Type: String 1669
Cardinality: 1 1670
Mutability: mutable 1671
Writeable: false 1672
The billable MegaBytes per second. 1673
C.5.17. resourceState
Type: ResourceState 1674
Cardinality: 1 1675
Mutability: mutable 1676
Writeable: false 1677
This attribute expresses state of the database instance within its lifecycle. 1678
Annex D. Implementation Considerations (Non-
Normative)mplementation Considerations (Non-Normative)
D.1. Types of Platform Deployments
Platforms can be built with resources that provide isolation at different levels. For example, each Platform 1679
Component (e.g. application server, database) can sit atop a stack of virtual machine, operating system, 1680
and component, as seen below: 1681
Figure 15 - Platform Component Virtual Machine Isolation
The point of isolation in the above is the virtual machine. 1682
The level at which isolation is provided has profound effects upon the way in which Platform Components 1683
are managed and secured. In the above example, each consumer is provided with a dedicated VM, OS, 1684
and Platform Component. It is likely (though not certain) that, in the above model, the Consumer will 1685
perform both the Application Administrator and the Platform Administrator roles - managing not only their 1686
application but also the underlying infrastructure including, potentially, the operating system. 1687
Platform Components can also be deployed without a hypervisor, and instead use multiple Platform 1688
Components running on a single OS as shown below: 1689
Page 64
Cloud Application Management for Platforms
Version 1.0 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG 56
Figure 16 - Platform Component Operating System Isolation
The point of isolation in the above is the operating system. 1690
Although the consumer may still perform both the Application Administrator and some portions of the 1691
Platform Administrator roles, for obvious security reasons consumers cannot be allowed control of the 1692
operating system as a single OS can be shared by multiple consumers. 1693
Lastly, the Platform Component container itself can offer virtualize instances of the Platform Component 1694
to each consumer and isolate multiple consumers from each other as shown below: 1695
Figure 17 - Platform Component Container Isolation
The point of isolation in the above is the Platform Component container. 1696
In the above case the consumer can only act as an Application Administrator. The tasks of configuring 1697
and managing the Platform Component container (tasks assigned to the Platform Administrator) can only 1698
be performed by the cloud provider. 1699
This PaaS Management API is agnostic with respect to the above deployment models as it deals only 1700
with the management of an Application’s dependencies on various Platform Components and not with the 1701
lifecycle of the Platform Components themselves. The API may be extended to include the management 1702
of Platform Component containers, Platform Components, operating systems, and other infrastructural 1703
elements. 1704
D.2. Scaling
The PaaS Management API assumes that applications are organized architecturally in tiers, some of 1705
which are hosted on the platform, while others may be external to the platform (and hence unmanaged). 1706
Each tier may consist of one or more components. For example, the “application tier” of a PHP 1707
application may be implemented by a mod_php component combined with an Apache component. 1708
Components in turn can be either provided by the platform or by the application itself. 1709
Conceptually, scaling operations affect individual application tiers. In practice however, since tiers are 1710
composed of Application and Platform Components, this means they affect Components. In addition, 1711
scaling operations are also specific to each Component and may be subject to explicit or implicit 1712
Page 65
Cloud Application Management for Platforms
57 Copyright 2012 CloudBees, Cloudsoft, Huawei, Oracle, Rackspace, Red Hat, Software AG Version 1.0
restrictions and policies imposed by the Component on both, scaling operations and grouping. For 1713
instance, a Component such as a database may be inherently non-replicable. Conversely, a Component 1714
such as PHP module may need to be in the same group as its hosting Apache instance because it needs 1715
to be dynamically loaded into the latter--even though it can scale out without limit. 1716
Individual Components may define events and policies for implementing auto-scaling. For instance, a 1717
multithreaded webserver component may trigger a scale-up if the number of idle worker threads drops 1718
below a given threshold. Or a MongoDB component may impose a policy that scaling may only happen in 1719
increments of 3 nodes. 1720
Scaling operations may also be performed directly on the Application Component’s Platform Component 1721
resources. This is known as manual scaling and generally results in a new reservation being created in 1722
the platform’s auto-scaling setup. Other forms of scaling may require changes to how the Assembly 1723
Template uses Application Component Templates and Platform Component Templates. The actual 1724
scaling architecture for a Platform Component is outside the scope of this specification. 1725