SlideShare a Scribd company logo
DE-03
Introduction to vCloud API


               Tichomir Tenev
Disclaimer


 This session may contain product features that are
 currently under development.

 This session/overview of the new technology represents
 no commitment from VMware to deliver these features in
 any generally available product.

 Features are subject to change, and must not be included in
 contracts, purchase orders, or sales agreements of any kind.

 Technical feasibility and market demand will affect final delivery.

 Pricing and packaging for any new technologies or features
 discussed or presented have not been determined.
About the Speaker


    Tichomir Tenev, Sr. Staff Engineer, vCloud
      Currently at VMware’s Cloud Service Mgmt & Automation Group
      With VMware since 2001
        Worked on Workstation and vCenter
        Helped design the vSphere API and several internal APIs and
        frameworks.
      Prior to VMware, designed and implemented an energy trading
      system for a startup.
      Education
        M.Eng. in Electrical Engineering & Computer Science from MIT
        BS in Computer Science and Mathematics from MIT
Agenda

Salient Points

Context

Key concepts

Deep dive
vCloud API Salient Points



 Standardizable                       Pure-virtual
   Platform independent                 Resource semantics described
     Can be used from virtually any     independent of physical
     platform                           semantics
     Can be implemented on a              Physical infrastructure is hidden
     variety of platforms                 Virtualization features are
   Straightforward to use and             obscured
   implement                            Simpler semantics focused on
   Powerful and extensible              end-use and not on virtualizing

   Standards-based
vCloud API Features


Interface for:
  Providing and consuming resources in the Cloud
  Deploying and managing virtualized workloads in the Cloud
  Migrating virtualized workloads between Clouds.
REST-based
Multi-tenant
Self-service
Service provider automation
vCloud API and vSphere API


vSphere API –                            vCloud API –
“Under the Hood” API                     “Driver Seat” API
  Used to create virtual resources         Uses virtual resources
  Virtualization API                       Pure-virtual API
    Exposes physical<->virtual mapping       Hides underlying physical resources
  Targeted at sys-admins                   Targeted at cloud tenants
  Product specific                         Product agnostic
    Exposes vSphere’s capabilities           Standardizable
    Tied to a specific implementation        Variety of implementations
  Rich and powerful                        Simple yet powerful
  VMware’s Cloud OS Platform API           Implementable on the vSphere API
                                           Does not replace the vSphere API
vCloud Ecosystem


Content Providers
  Developers, IT Admins, ISVs, Enthusiasts
Content
  Virtualized Software Solutions (vApps)
  Existing legacy solutions, or new apps written for the Cloud
Content Respositories
  Web Servers, Object Stores, Virtual Appliance Marketplace
Cloud Service Providers
Enterprises
vApp –
Next generation VM concept

An uplifting of a virtualized
  workload                               Instructions
                                       1. Name=eCommerce
  VM = Virtualized Hardware Box
                                       2. Only port 80 is used
  vApp = Virtualized Software         3. 100 ms web response
  Solution                           4. VRM: Encrypt w/ SHA-1
                                      5. DR RPO: 1 hour
  Encapsulation, isolation and      6.   Decommission in 1 month
  mobility higher up the stack    My eCommerce Solution
Properties:                       Fire
                                  Wall
                                         Tomcat   IIS
                                                         Load
                                                        Balance
                                                                Oracle


  Comprised of one or more VMs
  Encapsulates requirements on
  the deployment environment
  Distributed as an OVF package
vDC –
vApp Deployment Environment

 vDC                          Type of Commodity
                                Compute, Storage and
  vApp           vApp           Network SLAs
                              Quantity
                                MB of RAM, MHz of CPU, GB
  foo                           of Storage
                 VDCNet
                 (fenced)     Scope for Over-provisioning
 bar
 (isolated)                   Other features
 Trust Network                  L2 Networks

 DMZ Network
                                Persistent vApps
Deep Dive
Simple Example:
Power On

Request
 POST
 https://vcloud.example.com/vapp/413/power/action/powerO
 n
Simple Example:
Power On

Request
 POST
 https://vcloud.example.com/vapp/413/power/action/powerO
 n
Simple Example:
Power On

Response
 202 Accepted

 <?xml version="1.0" encoding="UTF-8"?>
 <Task href="https://vcloud.example.com/task/389"
     type="application/vnd.vmware.vcloud.task+xml"
     startTime="2009-7-31T09:30:47Z"
     status="running" ...>

     <Link rel="task:cancel”
       href="htt.../task/389/action/cancel"/>

     <Owner href="https://vcloud.example.com/vapp/413"
       type="application/vnd.vmware.vcloud.vapp+xml“
       name="My vApp"/>
 </Task>
Simple Example:
Look at a vApp
Request
 GET https://vcloud.example.com/vapp/413

 Content-type: vnd.vmware.cloud.vapp+xml
Simple Example:
Look at a vApp
Request
 GET https://vcloud.example.com/vapp/413

 Content-type: vnd.vmware.cloud.vapp+xml
Simple Example:
Look at a vApp

Response
 <VApp name="My vApp"
     status="1"
     href="https://vcloud.example.com/vapp/413" ...>

   <Link rel="up" href= "https://vcloud.example.com/vdc/128"/>
   <NetworkSection>...</NetworkSection>
   <ovf:OperatingSystemSection ...>
      <Link rel="edit" href="http..." ... />
      <Description>Microsoft Windows Server 2003</Description>
   </ovf:OperatingSystemSection>
   <ovf:VirtualHardwareSection ovf:transport="iso">
      <Link rel="edit" href="http..." ... />
      <Item>…</Item>
      …
   </ovf:VirtualHardwareSection>
 </VApp>
Entity Model


             UML Notation:
             “whole-part” relationship
             “part” is exclusively owned by “whole”




                                                UML Notation:
                                                One-way association
 UML Notation:
 “group-member” relationship
 “member” maybe shared between “groups”
Entity Model
Entity Model




               UML Notation:
               “general-specific” relationship
Entity Model
Example Workflow:
Instantiating a vApp Template
Finding a vApp Template

Request
 GET https://vcloud.example.com/vdc/128
Finding a vApp Template

Response
 <Vdc href="https://vcloud.example.com/vdc/128"
     name="Main Vdc" ...>

     <ResourceEntities>
        <ResourceEntity
           href="https://vcloud.example.com/vAppTemplate/111"
           type="application/vnd.vmware.vcloud.vAppTemplate+xml"
           name="Ubuntu Template with vsftpd"/>
        <ResourceEntity href="https://vcloud.example.com/media/112"
           type="application/vnd.vmware.vcloud.media+xml"
           name="Ubuntu Boot Floppy"/>
        <ResourceEntity href="https://vcloud.example.com/media/113"
           type="application/vnd.vmware.vcloud.media+xml"
           name="Ubuntu ISO Image"/>
     </ResourceEntities>
    ...
 </Vdc>
Get Information
about a vApp Template
Request

 GET https://vcloud.example.com/vAppTemplate/111


Response
 <VAppTemplate
 href="https://vcloud.example.com/vAppTemplate/111"
    name="Ubuntu Template with vsftpd"
    status="1"
    ...>
    <Description>Description of Ubuntu Template with
 vsftpd</Description>

 </VAppTemplate>
Instantiating a vApp Template

Request
 POST
 https://vcloud.example.com/vdc/128/action/instantiateVAppTemplate

 <InstantiateVAppTemplateParams
    name="Linux FTP server" ...>
    <VAppTemplate href="https://.../vAppTemplate/111" />
    <InstantiationParams ...>
       <NetworkConfigSection>
          <NetworkConfig name="My vApp Net">
             <Features>
                <vmw:FenceMode>allowInOut</vmw:FenceMode>
                <vmw:Dhcp>true<vmw:Dhcp>
             </Features>
             <NetworkAssociation href="https://.../network/14">
          </NetworkConfig>
       </NetworkConfigSection>
    </InstantiationParams>
 </InstantiateVAppTemplateParams>
Instantiating a vApp Template


Response

<VApp name="Linux FTP server"
      status="0"
      ...>
    <Link rel="up" href="https://vcloud.example.com/vdc/128"
          type="application/vnd.vmware.vcloud.vdc+xml" />
    ...
</VApp>
Example Workflow:
Upload/Download of a vApp Template
Upload Example:
Initiating the upload

Request
 POST https://vcloud.example.com/vdc/128/action/uploadVAppTemplate

 <UploadVAppTemplateParams name="Example Image" ...>
    <Description>Example VApp Template</Description>
    <ovf:Envelope>
       <ovf:References>
           <ovf:File ovf:href="disk0.vmdk"
              ovf:id="file1"
              ovf:size="1950489088"/>
        ...
       </ovf:References>
       ...
   </ovf:Envelope>
 </UploadVAppTemplateParams>
Upload Example:
Initiating the upload

Response
 <VAppTemplate name="Example Image" status="0"
     href="https://vcloud.example.com/vAppTemplate/268"...>
     ...
     <Files>
        <File name="example.mf" bytesTransferred="0" ...>
           <Link rel="upload:default"
              href="https://../adfe4..55cbdef/example.mf"/>
        </File>
        <File name="example-disk0.vmdk" size="1950489088"
              bytesTransferred="0">
           <Link rel="upload:default"
              href="https://../adfe4..55cbdef/disk0.vmdk"/>
        </File>
        ...
     </Files>
 </VAppTemplate>
Upload Example:
Sending the data
Using simple PUT
 PUT https://../adfe4..55cbdef/disk0.vmdk
 Content-length: 1950489088

 [disk0 data]



Using ranged PUT
 PUT https://../adfe4..55cbdef/disk1.vmdk
 Content-Range: 105639111-205639110/205639111
 Content-length: 100000000

 [disk0 data range]
Download Example:
Finding the download URL

Request
 GET https://vcloud.example.com/vAppTemplate/222


Response
 <VAppTemplate name="Ubuntu Image with vsftpd"
    href="https://vcloud.example.com/vAppTemplate/112"
    status="1"...>
    ...
    <Link rel="data"
        href="https://vcloud.example.com/ad3...782a/example.ovf"
        type="application/ovf+xml" />
    <Link rel="data"
        href="https://vcloud.example.com/ad3...782a/example.ova"
        type="application/ova+xml" />
 </VAppTemplate>
Download Example:
Getting the data
Getting the OVF descriptor
GET https://vcloud.example.com/ad3...782a/example.ovf

 Response
  <Envelope ...>
    <ovf:References>
      <ovf:File ovf:href="disks/example.vmdk"
         ovf:id="file1" ovf:size="1950489088"/>
    </ovf:References>
    ...
  </Envelope>


Getting the <References> files
GET https://vcloud.example.com/ad3...782a/disk/example.vmdk

 Response
  [example.vmdk data]
Complete list of operations

vApp Operations                                          Upload/Download/Provisioning Operations
      POST <vapp‐uri>/action/{deploy, undeploy}               POST <vdc‐uri>/action/composeVApp
      POST <vapp‐uri>/power/action/{powerOn, powerOff}        POST <vdc‐uri>/action/instantiateVAppTemplate
      POST <vapp‐uri>/power/action/{reset, suspend}           POST <vdc‐uri>/action/instantiateOvf
      POST <vapp‐uri>/power/action/{shutdown, reboot}         POST <vdc‐uri>/action/annotate
      GET <vapp‐uri>/screen                                   POST <vdc‐uri>/action/uploadVAppTemplate
      POST <vapp‐uri>/screen/action/acquireTicket             POST <vdc‐uri>/media
                                                              PUT <upload‐uri>
vApp Configuration Operations                                 GET <download‐uri>
      POST <vapp‐parent‐element‐uri>                          DELETE <resourceEntity‐uri>
      DELETE <vapp‐element‐uri>
      PUT <vapp‐element‐uri>                             Task Management
                                                              GET <tasks‐list‐uri>
Inventory Listing                                             GET <task‐uri>
      GET <vapp‐uri>                                          POST <task‐uri>/action/cancel
      GET <vdc‐uri>
      GET <vAppTemplate‐uri>                             Service Provider Automation
      GET <media‐uri>                                         Create/Delete/Update Org
      GET <network‐uri>                                       Create/Delete/Update vDC for an Org
                                                              Create/Delete/Update an Org Network
Catalog Management                                            Create/Delete/Update Org Catalogs
      GET <catalog‐uri>                                       Create/Delete/Update Users, Groups, Roles
      POST <catalog‐uri>/catalogItems
Q&A

More Related Content

PPT
Classloader leak detection in websphere application server
PDF
Big Gains With Little Virtual Machines Sumeet Mehra
PDF
Running your Java EE 6 applications in the Cloud @ Silicon Valley Code Camp 2010
PDF
WebSphere Technical University: Top WebSphere Problem Determination Features
PDF
Build the foundation for Private Cloud
PPTX
WAS Support & Monitoring Tools
PDF
AAI-4847 Full Disclosure on the Performance Characteristics of WebSphere Appl...
PDF
GlassFish OSGi Server
Classloader leak detection in websphere application server
Big Gains With Little Virtual Machines Sumeet Mehra
Running your Java EE 6 applications in the Cloud @ Silicon Valley Code Camp 2010
WebSphere Technical University: Top WebSphere Problem Determination Features
Build the foundation for Private Cloud
WAS Support & Monitoring Tools
AAI-4847 Full Disclosure on the Performance Characteristics of WebSphere Appl...
GlassFish OSGi Server

What's hot (20)

PDF
OSGi & Java EE in GlassFish @ Silicon Valley Code Camp 2010
PDF
Wars I’ve Seen From Java EE to Spring and more, Azure has you covered
PDF
VMware 2V0-21.20 Practice Test
PDF
IBM WebSphere Application Server Update - Technical University (March 2015)
PPTX
VMware vCloud Director 1.5 - What's New
PPTX
WAS vs JBoss, WebLogic, Tomcat (year 2015)
PDF
Adrian Stoian - Manage Private and Public Cloud Services with System Center 2...
PPTX
VMware vCloud Director
PDF
Lessons learned: Use of Modern JVM Languages besides Java - JavaOne 2012
PDF
Spring 3 MVC CodeMash 2009
PPTX
WebSphere Application Server Liberty Profile and Docker
PPTX
WebSphere Application Server Liberty Profile and Docker
PDF
GlassFish & Java EE Business Update @ CEJUG
PPTX
Scalable, Available and Reliable Cloud Applications with PaaS and Microservices
ODP
Spring Mvc,Java, Spring
PDF
VMware Automation, PowerCLI presented at the Northern California PSUG
PPTX
VMware vSphere technical presentation
PDF
GlassFish 3.1 at JCertif 2011
PDF
Great Java Application Server Debate
PDF
Running your Java EE 6 applications in the Cloud
OSGi & Java EE in GlassFish @ Silicon Valley Code Camp 2010
Wars I’ve Seen From Java EE to Spring and more, Azure has you covered
VMware 2V0-21.20 Practice Test
IBM WebSphere Application Server Update - Technical University (March 2015)
VMware vCloud Director 1.5 - What's New
WAS vs JBoss, WebLogic, Tomcat (year 2015)
Adrian Stoian - Manage Private and Public Cloud Services with System Center 2...
VMware vCloud Director
Lessons learned: Use of Modern JVM Languages besides Java - JavaOne 2012
Spring 3 MVC CodeMash 2009
WebSphere Application Server Liberty Profile and Docker
WebSphere Application Server Liberty Profile and Docker
GlassFish & Java EE Business Update @ CEJUG
Scalable, Available and Reliable Cloud Applications with PaaS and Microservices
Spring Mvc,Java, Spring
VMware Automation, PowerCLI presented at the Northern California PSUG
VMware vSphere technical presentation
GlassFish 3.1 at JCertif 2011
Great Java Application Server Debate
Running your Java EE 6 applications in the Cloud
Ad

Similar to De 03 Introduction To V Cloud Api V1 (20)

PDF
V c loudapi_coffeetalk__pimplaskar_may2010
PPT
vCloud Technical deck - cb.ppt
PDF
Presentation v cloud ap-is - architecture, integration
PDF
Presentation vmug v mware v-cloud director
PDF
Vm Ware Presentation Key Note
PPT
VMware 2009
PDF
Transcending Computing Environment Boundaries: Seamless Computing Environmen...
PDF
Exploring VMware APIs by Preetham Gopalaswamy
PPT
VMware - Dario Regazzoni, Cloud Computing, Milano 2 luglio 2009
PDF
Гибридное облако - эффективность в квадрате
PPTX
vCloud Architecture BrownBag
PDF
vCloud SDK for PHP - Introduction
PDF
Creating v sphere client plug ins
PDF
OpenStack at Xen summit Asia
PDF
How to Run Amazon Web Services Workloads on Your VMware vCloud®
KEY
EMEA OpenStack Day, July 13th 2011 in London - Jim Curry intro
PDF
VMworld2011 Recap
KEY
OpenStack Boston User Group, OpenStack overview
PPT
Scalable networking in Apache CloudStack
V c loudapi_coffeetalk__pimplaskar_may2010
vCloud Technical deck - cb.ppt
Presentation v cloud ap-is - architecture, integration
Presentation vmug v mware v-cloud director
Vm Ware Presentation Key Note
VMware 2009
Transcending Computing Environment Boundaries: Seamless Computing Environmen...
Exploring VMware APIs by Preetham Gopalaswamy
VMware - Dario Regazzoni, Cloud Computing, Milano 2 luglio 2009
Гибридное облако - эффективность в квадрате
vCloud Architecture BrownBag
vCloud SDK for PHP - Introduction
Creating v sphere client plug ins
OpenStack at Xen summit Asia
How to Run Amazon Web Services Workloads on Your VMware vCloud®
EMEA OpenStack Day, July 13th 2011 in London - Jim Curry intro
VMworld2011 Recap
OpenStack Boston User Group, OpenStack overview
Scalable networking in Apache CloudStack
Ad

More from ikewu83 (13)

PDF
Google F1
PDF
《云计算核心技术剖析》Mini书
PPT
云计算与NoSQL
PPT
Yun table 云时代的数据库
PPT
Pnp
PDF
Dean keynote-ladis2009
PPT
云计算091124(李德毅院士)
PDF
04 陈良忠ibm cloud forum ibm experience 0611
PDF
05 朱近之 ibm云计算解决方案概览 0611
PDF
03 李实恭-乘云之势以智致远 0611
PDF
Cisco nexus 1000v
PDF
OVF 1.0 Whitepaper
PDF
OVF 1.1
Google F1
《云计算核心技术剖析》Mini书
云计算与NoSQL
Yun table 云时代的数据库
Pnp
Dean keynote-ladis2009
云计算091124(李德毅院士)
04 陈良忠ibm cloud forum ibm experience 0611
05 朱近之 ibm云计算解决方案概览 0611
03 李实恭-乘云之势以智致远 0611
Cisco nexus 1000v
OVF 1.0 Whitepaper
OVF 1.1

De 03 Introduction To V Cloud Api V1

  • 1. DE-03 Introduction to vCloud API Tichomir Tenev
  • 2. Disclaimer This session may contain product features that are currently under development. This session/overview of the new technology represents no commitment from VMware to deliver these features in any generally available product. Features are subject to change, and must not be included in contracts, purchase orders, or sales agreements of any kind. Technical feasibility and market demand will affect final delivery. Pricing and packaging for any new technologies or features discussed or presented have not been determined.
  • 3. About the Speaker Tichomir Tenev, Sr. Staff Engineer, vCloud Currently at VMware’s Cloud Service Mgmt & Automation Group With VMware since 2001 Worked on Workstation and vCenter Helped design the vSphere API and several internal APIs and frameworks. Prior to VMware, designed and implemented an energy trading system for a startup. Education M.Eng. in Electrical Engineering & Computer Science from MIT BS in Computer Science and Mathematics from MIT
  • 5. vCloud API Salient Points Standardizable Pure-virtual Platform independent Resource semantics described Can be used from virtually any independent of physical platform semantics Can be implemented on a Physical infrastructure is hidden variety of platforms Virtualization features are Straightforward to use and obscured implement Simpler semantics focused on Powerful and extensible end-use and not on virtualizing Standards-based
  • 6. vCloud API Features Interface for: Providing and consuming resources in the Cloud Deploying and managing virtualized workloads in the Cloud Migrating virtualized workloads between Clouds. REST-based Multi-tenant Self-service Service provider automation
  • 7. vCloud API and vSphere API vSphere API – vCloud API – “Under the Hood” API “Driver Seat” API Used to create virtual resources Uses virtual resources Virtualization API Pure-virtual API Exposes physical<->virtual mapping Hides underlying physical resources Targeted at sys-admins Targeted at cloud tenants Product specific Product agnostic Exposes vSphere’s capabilities Standardizable Tied to a specific implementation Variety of implementations Rich and powerful Simple yet powerful VMware’s Cloud OS Platform API Implementable on the vSphere API Does not replace the vSphere API
  • 8. vCloud Ecosystem Content Providers Developers, IT Admins, ISVs, Enthusiasts Content Virtualized Software Solutions (vApps) Existing legacy solutions, or new apps written for the Cloud Content Respositories Web Servers, Object Stores, Virtual Appliance Marketplace Cloud Service Providers Enterprises
  • 9. vApp – Next generation VM concept An uplifting of a virtualized workload Instructions 1. Name=eCommerce VM = Virtualized Hardware Box 2. Only port 80 is used vApp = Virtualized Software 3. 100 ms web response Solution 4. VRM: Encrypt w/ SHA-1 5. DR RPO: 1 hour Encapsulation, isolation and 6. Decommission in 1 month mobility higher up the stack My eCommerce Solution Properties: Fire Wall Tomcat IIS Load Balance Oracle Comprised of one or more VMs Encapsulates requirements on the deployment environment Distributed as an OVF package
  • 10. vDC – vApp Deployment Environment vDC Type of Commodity Compute, Storage and vApp vApp Network SLAs Quantity MB of RAM, MHz of CPU, GB foo of Storage VDCNet (fenced) Scope for Over-provisioning bar (isolated) Other features Trust Network L2 Networks DMZ Network Persistent vApps
  • 12. Simple Example: Power On Request POST https://vcloud.example.com/vapp/413/power/action/powerO n
  • 13. Simple Example: Power On Request POST https://vcloud.example.com/vapp/413/power/action/powerO n
  • 14. Simple Example: Power On Response 202 Accepted <?xml version="1.0" encoding="UTF-8"?> <Task href="https://vcloud.example.com/task/389" type="application/vnd.vmware.vcloud.task+xml" startTime="2009-7-31T09:30:47Z" status="running" ...> <Link rel="task:cancel” href="htt.../task/389/action/cancel"/> <Owner href="https://vcloud.example.com/vapp/413" type="application/vnd.vmware.vcloud.vapp+xml“ name="My vApp"/> </Task>
  • 15. Simple Example: Look at a vApp Request GET https://vcloud.example.com/vapp/413 Content-type: vnd.vmware.cloud.vapp+xml
  • 16. Simple Example: Look at a vApp Request GET https://vcloud.example.com/vapp/413 Content-type: vnd.vmware.cloud.vapp+xml
  • 17. Simple Example: Look at a vApp Response <VApp name="My vApp" status="1" href="https://vcloud.example.com/vapp/413" ...> <Link rel="up" href= "https://vcloud.example.com/vdc/128"/> <NetworkSection>...</NetworkSection> <ovf:OperatingSystemSection ...> <Link rel="edit" href="http..." ... /> <Description>Microsoft Windows Server 2003</Description> </ovf:OperatingSystemSection> <ovf:VirtualHardwareSection ovf:transport="iso"> <Link rel="edit" href="http..." ... /> <Item>…</Item> … </ovf:VirtualHardwareSection> </VApp>
  • 18. Entity Model UML Notation: “whole-part” relationship “part” is exclusively owned by “whole” UML Notation: One-way association UML Notation: “group-member” relationship “member” maybe shared between “groups”
  • 20. Entity Model UML Notation: “general-specific” relationship
  • 23. Finding a vApp Template Request GET https://vcloud.example.com/vdc/128
  • 24. Finding a vApp Template Response <Vdc href="https://vcloud.example.com/vdc/128" name="Main Vdc" ...> <ResourceEntities> <ResourceEntity href="https://vcloud.example.com/vAppTemplate/111" type="application/vnd.vmware.vcloud.vAppTemplate+xml" name="Ubuntu Template with vsftpd"/> <ResourceEntity href="https://vcloud.example.com/media/112" type="application/vnd.vmware.vcloud.media+xml" name="Ubuntu Boot Floppy"/> <ResourceEntity href="https://vcloud.example.com/media/113" type="application/vnd.vmware.vcloud.media+xml" name="Ubuntu ISO Image"/> </ResourceEntities> ... </Vdc>
  • 25. Get Information about a vApp Template Request GET https://vcloud.example.com/vAppTemplate/111 Response <VAppTemplate href="https://vcloud.example.com/vAppTemplate/111" name="Ubuntu Template with vsftpd" status="1" ...> <Description>Description of Ubuntu Template with vsftpd</Description> </VAppTemplate>
  • 26. Instantiating a vApp Template Request POST https://vcloud.example.com/vdc/128/action/instantiateVAppTemplate <InstantiateVAppTemplateParams name="Linux FTP server" ...> <VAppTemplate href="https://.../vAppTemplate/111" /> <InstantiationParams ...> <NetworkConfigSection> <NetworkConfig name="My vApp Net"> <Features> <vmw:FenceMode>allowInOut</vmw:FenceMode> <vmw:Dhcp>true<vmw:Dhcp> </Features> <NetworkAssociation href="https://.../network/14"> </NetworkConfig> </NetworkConfigSection> </InstantiationParams> </InstantiateVAppTemplateParams>
  • 27. Instantiating a vApp Template Response <VApp name="Linux FTP server" status="0" ...> <Link rel="up" href="https://vcloud.example.com/vdc/128" type="application/vnd.vmware.vcloud.vdc+xml" /> ... </VApp>
  • 29. Upload Example: Initiating the upload Request POST https://vcloud.example.com/vdc/128/action/uploadVAppTemplate <UploadVAppTemplateParams name="Example Image" ...> <Description>Example VApp Template</Description> <ovf:Envelope> <ovf:References> <ovf:File ovf:href="disk0.vmdk" ovf:id="file1" ovf:size="1950489088"/> ... </ovf:References> ... </ovf:Envelope> </UploadVAppTemplateParams>
  • 30. Upload Example: Initiating the upload Response <VAppTemplate name="Example Image" status="0" href="https://vcloud.example.com/vAppTemplate/268"...> ... <Files> <File name="example.mf" bytesTransferred="0" ...> <Link rel="upload:default" href="https://../adfe4..55cbdef/example.mf"/> </File> <File name="example-disk0.vmdk" size="1950489088" bytesTransferred="0"> <Link rel="upload:default" href="https://../adfe4..55cbdef/disk0.vmdk"/> </File> ... </Files> </VAppTemplate>
  • 31. Upload Example: Sending the data Using simple PUT PUT https://../adfe4..55cbdef/disk0.vmdk Content-length: 1950489088 [disk0 data] Using ranged PUT PUT https://../adfe4..55cbdef/disk1.vmdk Content-Range: 105639111-205639110/205639111 Content-length: 100000000 [disk0 data range]
  • 32. Download Example: Finding the download URL Request GET https://vcloud.example.com/vAppTemplate/222 Response <VAppTemplate name="Ubuntu Image with vsftpd" href="https://vcloud.example.com/vAppTemplate/112" status="1"...> ... <Link rel="data" href="https://vcloud.example.com/ad3...782a/example.ovf" type="application/ovf+xml" /> <Link rel="data" href="https://vcloud.example.com/ad3...782a/example.ova" type="application/ova+xml" /> </VAppTemplate>
  • 33. Download Example: Getting the data Getting the OVF descriptor GET https://vcloud.example.com/ad3...782a/example.ovf Response <Envelope ...> <ovf:References> <ovf:File ovf:href="disks/example.vmdk" ovf:id="file1" ovf:size="1950489088"/> </ovf:References> ... </Envelope> Getting the <References> files GET https://vcloud.example.com/ad3...782a/disk/example.vmdk Response [example.vmdk data]
  • 34. Complete list of operations vApp Operations Upload/Download/Provisioning Operations POST <vapp‐uri>/action/{deploy, undeploy} POST <vdc‐uri>/action/composeVApp POST <vapp‐uri>/power/action/{powerOn, powerOff} POST <vdc‐uri>/action/instantiateVAppTemplate POST <vapp‐uri>/power/action/{reset, suspend} POST <vdc‐uri>/action/instantiateOvf POST <vapp‐uri>/power/action/{shutdown, reboot} POST <vdc‐uri>/action/annotate GET <vapp‐uri>/screen POST <vdc‐uri>/action/uploadVAppTemplate POST <vapp‐uri>/screen/action/acquireTicket POST <vdc‐uri>/media PUT <upload‐uri> vApp Configuration Operations GET <download‐uri> POST <vapp‐parent‐element‐uri> DELETE <resourceEntity‐uri> DELETE <vapp‐element‐uri> PUT <vapp‐element‐uri> Task Management GET <tasks‐list‐uri> Inventory Listing GET <task‐uri> GET <vapp‐uri> POST <task‐uri>/action/cancel GET <vdc‐uri> GET <vAppTemplate‐uri> Service Provider Automation GET <media‐uri> Create/Delete/Update Org GET <network‐uri> Create/Delete/Update vDC for an Org Create/Delete/Update an Org Network Catalog Management Create/Delete/Update Org Catalogs GET <catalog‐uri> Create/Delete/Update Users, Groups, Roles POST <catalog‐uri>/catalogItems
  • 35. Q&A