Cloud Application Management for Platforms Version 1.1

Working Draft 0506

14 27 February 2013

Technical Committee:

OASIS Cloud Application Management for Platforms (CAMP) TC)

Chair:

Martin Chapman (), Oracle

Editors:

Jacques Durand (), Fujitsu Limited

Anish Karmarkar (), Oracle

Adrian Otto (), Rackspace Hosting, Inc.

Additional artifacts:

This prose specification is one component of a Work Product which also includes:

·  XML schemas: (list file names or directory name)

·  Other parts (list titles and/or file names)

Related work:

This specification replaces or supersedes:

·  Cloud Application Management for Platforms, Version 1.0, August 29, 2012. http://cloudspecs.org/CAMP/CAMP_v1-0.pdf

This specification is related to:

·  Related specifications (hyperlink, if available)

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.

Status:

This Working Draft (WD) has been produced by one or more TC Members; it has not yet been voted on by the TC or approved as a Committee Draft (Committee Specification Draft or a Committee Note Draft). The OASIS document Approval Process begins officially with a TC vote to approve a WD as a Committee Draft. A TC may approve a Working Draft, revise it, and re-approve it any number of times as a Committee Draft.

Copyright © OASIS Open 2012, 2013. All Rights Reserved.

All capitalized terms in the following text have the meanings assigned to them in the OASIS Intellectual Property Rights Policy (the "OASIS IPR Policy"). The full Policy may be found at the OASIS website.

This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published, and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this section are included on all such copies and derivative works. However, this document itself may not be modified in any way, including by removing the copyright notice or references to OASIS, except as needed for the purpose of developing any document or deliverable produced by an OASIS Technical Committee (in which case the rules applicable to copyrights, as set forth in the OASIS IPR Policy, must be followed) or as required to translate it into languages other than English.

The limited permissions granted above are perpetual and will not be revoked by OASIS or its successors or assigns.

This document and the information contained herein is provided on an "AS IS" basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY OWNERSHIP RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

Table of Contents

1 Introduction 8

1.1 Overview 8

1.2 Purpose 8

1.3 Example (Non-normative) 9

1.4 Non-Goals 10

1.5 PaaS Roles 10

1.6 Terminology 11

1.7 Normative References 11

1.8 Non-Normative References 11

2 Architecture 12

2.1 Management Model 12

2.1.1 PaaS Resource Model 13

2.1.1.1 Platform 13

2.1.1.2 Assemblies 13

2.1.1.3 Components 13

2.1.1.4 Capabilities and Requirements 13

2.1.2 Resource Relationships 14

2.1.3 15

2.1.4 Management Model Diagrams 15

2.1.4.1 Basic Platform Resources 16

2.1.4.2 Resources Loaded 16

2.1.4.3 Instantiated Resources 17

2.2 Importing a Platform Deployment Package 19

2.3 Exporting a Platform Deployment Package 20

3 Application Lifecycle 21

3.1 Uploaded 21

3.2 Deployed 22

3.3 Instantiated 22

3.4 Suspended 22

4 Platform Deployment Package 23

4.1 PDP Package Structure 23

4.2 Deployment Plan 23

4.3 Deployment Plan Schema 23

5 Resources 24

5.1 Common Types 24

5.1.1 Boolean 24

5.1.2 String 24

5.1.3 URI 24

5.1.4 Timestamp 24

5.1.5 Link 24

5.1.5.1 href 24

5.1.5.2 targetName 24

5.2 Attribute Constraints 24

5.2.1 Cardinality 25

5.2.2 Mutability 25

5.2.3 Writeable 25

5.3 Common Resource Attributes 25

5.3.1 uri 25

5.3.2 name 25

5.3.3 description 25

5.3.4 created 25

5.3.5 tags 25

5.3.6 type 26

5.3.7 representationSkew 26

5.4 Error Response Message Resource 27

5.5 Platform Resource 28

5.5.1 supportedFormatsUri 29

5.5.2 extensionsURI 29

5.5.3 typeDefinitionsURI 29

5.5.4 specificationVersion 29

5.5.5 implementationVersion 29

5.5.6 assemblyTemplates 29

5.5.7 assemblies 29

5.5.8 platformComponentTemplates 30

5.5.9 platformComponentCapabilities 30

5.5.10 platformComponents 30

5.6 AssemblyTemplate Resource 30

5.6.1 applicationComponentTemplates 31

5.7 ApplicationComponentTemplate Resource 31

5.7.1 assemblyTemplate 31

5.7.2 applicationComponentTemplates 31

5.7.3 platformComponentTemplates 32

5.7.4 applicationComponentRequirements 32

5.7.5 platformComponentRequirements 32

5.8 ApplicationComponentRequirement Resource 32

5.9 ApplicationComponentCapability Resource 32

5.10 PlatformComponentTemplate Resource 33

5.11 PlatformComponentRequirement Resource 33

5.12 PlatformComponentCapability Resource 33

5.13 Assembly Resource 34

5.13.1 applicationComponents 34

5.13.2 assemblyTemplate 34

5.13.3 resourceState 34

5.14 ApplicationComponent Resource 35

5.14.1 assembly 35

5.14.2 applicationComponents 35

5.14.3 platformComponents 35

5.15 PlatformComponent Resource 35

5.15.1 externalManagementResource 36

5.16 Format Resource 36

5.16.1 name 36

5.16.2 mimeType 36

5.16.3 version 36

5.16.4 documentation 37

5.16.5 Required JSON Format Resource 37

5.17 Formats Resource 37

5.17.1 formatLinks 37

5.18 TypeDefinitions Resource 38

5.18.1 typeDefinitionLinks 38

5.19 TypeDefinition Resource 38

5.19.1 name 38

5.19.2 documentation 38

5.19.3 attributeDefinitionLinks 39

5.20 AttributeDefinition Resource 39

5.20.1 name 39

5.20.2 documentation 39

5.20.3 attributeType 39

5.20.4 cardinality 40

5.20.5 mutable 40

5.20.6 writable 40

6 Protocol 41

6.1 Transport Protocol 41

6.2 URI Space 41

6.3 Media Types 41

6.3.1 Required Formats 41

6.3.2 Supported Formats 41

6.4 Request Headers 41

6.5 Request Parameters 41

6.6 Response Headers 42

6.7 HTTP Status Codes 42

6.8 Updating Resources 42

6.8.1 Updating with PUT 42

6.8.2 Updating with JSON Patch 42

6.9 42

6.10 Concurrent API versions 42

6.11 Registering a PDP 43

6.12 Instantiating an Application 43

6.13 Suspending and Resuming an Application 44

6.14 Deleting an Application Instance and a Deployed Application 44

7 Extensions 45

7.1 Unique Name Requirement 45

7.2 Extension Resource 46

7.2.1 version 46

7.2.2 documentation 47

7.3 Extensions Resource 47

7.3.1 extensionLinks 47

7.4 Extending Existing Resources 47

8 Conformance 49

Appendix A. Acknowledgments 50

Appendix B. Glossary 51

Appendix C. Use Cases (Non-Normative) 53

C.1 Building the Application 53

C.1.1 Build Application and Package 53

C.1.2 Build Application in the Cloud and Optionally Package 54

C.2 Deploying and Managing the Application 55

C.2.1 Import Platform Deployment Package 56

C.2.2 Upload Application 56

C.2.3 Run/Stop/Suspend/Snapshot 57

C.2.4 Patch an Application Component Template 57

C.2.5 Patch a Created, Deployed or Running Application 57

Appendix D. Example Database Platform Component (Non-Normative) 58

D.1 Model 58

D.2 DatabaseCapability 58

D.2.1 clusterTypes 59

D.2.2 maxNumberNodes 59

D.2.3 maxCores 59

D.2.4 maxMemSize 59

D.2.5 maxDiskSize 60

D.2.6 backupAvailable 60

D.2.7 synchronousCopyAvailable 60

D.2.8 partitionAvailable 60

D.2.9 compressionAvailable 60

D.2.10 retentionAvailable 60

D.2.11 tunings 61

D.2.12 cachingAvailable 61

D.3 DatabaseRequirement 61

D.3.1 clusterTypes 61

D.3.2 numberNodesRange 62

D.3.3 coreRange 62

D.3.4 memSizeRange 62

D.3.5 diskSizeRange 62

D.3.6 backupEnabled 62

D.3.7 synchronousCopyEnabled 62

D.3.8 partitionEnabled 63

D.3.9 compressionEnabled 63

D.3.10 retentionEnabled 63

D.3.11 tunings 63

D.3.12 cachingEnabled 63

D.4 DatabaseTemplate 63

D.4.1 clusterType 64

D.4.2 numberNodes 64

D.4.3 cores 64

D.4.4 memSize 64

D.4.5 diskSize 65

D.4.6 backupEnabled 65

D.4.7 synchronousCopyEnabled 65

D.4.8 partitionEnabled 65

D.4.9 compressionEnabled 65

D.4.10 retentionEnabled 65

D.4.11 tuning 66

D.4.12 cachingEnabled 66

D.5 Database 66

D.5.1 externalManagementResource 66

D.5.2 clusterType 67

D.5.3 numberNodes 67

D.5.4 cores 67

D.5.5 memSize 67

D.5.6 diskSize 67

D.5.7 backupEnabled 67

D.5.8 synchronousCopyEnabled 67

D.5.9 partitionEnabled 68

D.5.10 compressionEnabled 68

D.5.11 retentionEnabled 68

D.5.12 tuning 68

D.5.13 cachingEnabled 68

D.5.14 operationsThroughput 68

D.5.15 operationsBandwidth 68

D.5.16 resourceState 69

Appendix E. Implementation Considerations (Non-Normative) 70

E.1 Types of Platform Deployments 70

E.2 Scaling 71

Appendix F. Revision History 72

1 Introduction 8

1.1 Overview 8

1.2 Purpose 8

1.3 Example (Non-normative) 9

1.4 Non-Goals 10

1.5 PaaS Roles 10

1.6 Terminology 11

1.7 Normative References 11

1.8 Non-Normative References 11

2 Architecture 12

2.1 Management Model 12

2.1.1 PaaS Resource Model 13

2.1.1.1 Platform 13

2.1.1.2 Assemblies 13

2.1.1.3 Components 13

2.1.1.4 Capabilities and Requirements 13

2.1.2 Resource Relationships 14

2.1.3 15

2.1.4 Management Model Diagrams 15

2.1.4.1 Basic Platform Resources 16

2.1.4.2 Resources Loaded 16

2.1.4.3 Instantiated Resources 17

2.2 Importing a Platform Deployment Package 19

2.3 Exporting a Platform Deployment Package 20

3 Application Lifecycle 21

3.1 Uploaded 21

3.2 Deployed 22

3.3 Instantiated 22

3.4 Suspended 22

4 Platform Deployment Package 23

4.1 PDP Package Structure 23

4.2 Deployment Plan 23

4.3 Deployment Plan Schema 23

5 Resources 24

5.1 Common Types 24

5.1.1 Boolean 24

5.1.2 String 24

5.1.3 URI 24

5.1.4 Timestamp 24

5.1.5 Link 24

5.1.5.1 href 24

5.1.5.2 targetName 24

5.2 Attribute Constraints 24

5.2.1 Cardinality 25

5.2.2 Mutability 25

5.2.3 Writeable 25

5.3 Common Resource Attributes 25

5.3.1 uri 25

5.3.2 name 25

5.3.3 description 25

5.3.4 created 25

5.3.5 tags 25

5.3.6 type 26

5.3.7 representationSkew 26

5.4 Error Response Message Resource 27

5.5 Platform Resource 28

5.5.1 supportedFormatsUri 29

5.5.2 extensionsURI 29

5.5.3 typeDefinitionsURI 29

5.5.4 specificationVersion 29

5.5.5 implementationVersion 29

5.5.6 assemblyTemplates 29

5.5.7 assemblies 29

5.5.8 platformComponentTemplates 30

5.5.9 platformComponentCapabilities 30

5.5.10 platformComponents 30

5.6 AssemblyTemplate Resource 30

5.6.1 applicationComponentTemplates 31

5.7 ApplicationComponentTemplate Resource 31

5.7.1 assemblyTemplate 31

5.7.2 applicationComponentTemplates 31

5.7.3 platformComponentTemplates 32

5.7.4 applicationComponentRequirements 32

5.7.5 platformComponentRequirements 32

5.8 ApplicationComponentRequirement Resource 32

5.9 ApplicationComponentCapability Resource 32

5.10 PlatformComponentTemplate Resource 33

5.11 PlatformComponentRequirement Resource 33

5.12 PlatformComponentCapability Resource 33

5.13 Assembly Resource 34

5.13.1 applicationComponents 34

5.13.2 assemblyTemplate 34

5.13.3 resourceState 34

5.14 ApplicationComponent Resource 35

5.14.1 assembly 35

5.14.2 applicationComponents 35

5.14.3 platformComponents 35

5.15 PlatformComponent Resource 35

5.15.1 externalManagementResource 36

5.16 Format Resource 36

5.16.1 name 36

5.16.2 mimeType 36

5.16.3 version 36

5.16.4 documentation 37

5.16.5 Required JSON Format Resource 37

5.17 Formats Resource 37

5.17.1 formatLinks 37

5.18 TypeDefinitions Resource 38

5.18.1 typeDefinitionLinks 38

5.19 TypeDefinition Resource 38

5.19.1 name 38

5.19.2 documentation 38

5.19.3 attributeDefinitionLinks 39

5.20 AttributeDefinition Resource 39

5.20.1 name 39

5.20.2 documentation 39

5.20.3 attributeType 39

5.20.4 cardinality 40

5.20.5 mutable 40

5.20.6 writable 40

6 Protocol 41

6.1 Transport Protocol 41

6.2 URI Space 41

6.3 Media Types 41

6.3.1 Required Formats 41

6.3.2 Supported Formats 41

6.4 Request Headers 41

6.5 Request Parameters 41

6.6 Response Headers 42

6.7 HTTP Status Codes 42

6.8 Concurrent API versions 42

6.9 Registering a PDP 42

6.10 Instantiating an Application 43

6.11 Suspending and Resuming an Application 43

6.12 Deleting an Application Instance and a Deployed Application 44

7 Extensions 45

7.1 Unique Name Requirement 45

7.2 Extension Resource 46

7.2.1 version 46

7.2.2 documentation 47

7.3 Extensions Resource 47

7.3.1 extensionLinks 47

7.4 Extending Existing Resources 47

8 Conformance 49

Appendix A. Acknowledgments 50

Appendix B. Glossary 51

Appendix C. Use Cases (Non-Normative) 53

C.1 Building the Application 53

C.1.1 Build Application and Package 53

C.1.2 Build Application in the Cloud and Optionally Package 54

C.2 Deploying and Managing the Application 55

C.2.1 Import Platform Deployment Package 56

C.2.2 Upload Application 56

C.2.3 Run/Stop/Suspend/Snapshot 57

C.2.4 Patch an Application Component Template 57

C.2.5 Patch a Created, Deployed or Running Application 57

Appendix D. Example Database Platform Component (Non-Normative) 58

D.1 Model 58

D.2 DatabaseCapability 58

D.2.1 clusterTypes 59

D.2.2 maxNumberNodes 59

D.2.3 maxCores 59

D.2.4 maxMemSize 59

D.2.5 maxDiskSize 60

D.2.6 backupAvailable 60

D.2.7 synchronousCopyAvailable 60

D.2.8 partitionAvailable 60

D.2.9 compressionAvailable 60

D.2.10 retentionAvailable 60

D.2.11 tunings 61

D.2.12 cachingAvailable 61

D.3 DatabaseRequirement 61

D.3.1 clusterTypes 61

D.3.2 numberNodesRange 62

D.3.3 coreRange 62

D.3.4 memSizeRange 62

D.3.5 diskSizeRange 62

D.3.6 backupEnabled 62

D.3.7 synchronousCopyEnabled 62

D.3.8 partitionEnabled 63

D.3.9 compressionEnabled 63

D.3.10 retentionEnabled 63

D.3.11 tunings 63

D.3.12 cachingEnabled 63

D.4 DatabaseTemplate 63

D.4.1 clusterType 64

D.4.2 numberNodes 64

D.4.3 cores 64

D.4.4 memSize 64

D.4.5 diskSize 65

D.4.6 backupEnabled 65

D.4.7 synchronousCopyEnabled 65

D.4.8 partitionEnabled 65

D.4.9 compressionEnabled 65

D.4.10 retentionEnabled 65

D.4.11 tuning 66

D.4.12 cachingEnabled 66

D.5 Database 66

D.5.1 externalManagementResource 66

D.5.2 clusterType 67

D.5.3 numberNodes 67

D.5.4 cores 67

D.5.5 memSize 67

D.5.6 diskSize 67

D.5.7 backupEnabled 67

D.5.8 synchronousCopyEnabled 67

D.5.9 partitionEnabled 68

D.5.10 compressionEnabled 68

D.5.11 retentionEnabled 68

D.5.12 tuning 68

D.5.13 cachingEnabled 68

D.5.14 operationsThroughput 68

D.5.15 operationsBandwidth 68

D.5.16 resourceState 69

Appendix E. Implementation Considerations (Non-Normative) 70

E.1 Types of Platform Deployments 70

E.2 Scaling 71

Appendix F. Revision History 72

camp-spec-v1.1-wd03 Working Draft 03 05 February 2013

Standards Track Draft Copyright © OASIS Open 2012, 2013. All Rights Reserved. Page 1 of 72

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 provider offers customers/consumers access to one or more instances of a running application computing platform or application service stack. NIST defines PaaS [SP800-145] as a “service model” with the following characteristics:

The capability provided to the consumer is to deploy onto the cloud infrastructure consumer-created or acquired applications created using programming languages and tools supported by the provider. The consumer does not manage or control the underlying cloud infrastructure including network, servers, operating systems, or storage, but has control over the deployed applications and possibly application hosting environment configurations.