SlideShare uma empresa Scribd logo
1 de 50
Baixar para ler offline
OpenStack API Extensions

        Jorge L. Williams




Thursday, April 28, 2011
2




        Agenda

        •   The Problem
        •   Extensions
        •   Extensions in REST
        •   Promoting Extensions to new Features
        •   Challenges
        •   Summary
        •   Questions?




Thursday, April 28, 2011
3




                           The Problem




Thursday, April 28, 2011
4




        Standardization vs Innovation and Differentiation
        • We want our APIs to be Open Standards...                                There are a number of
             – Defining Standard APIs good for OpenStack, and our Customers       problem that we’re trying
             – We want to encourage others to implement our APIs                  to solve: One is there
                                                                                  always seems to be a
             – Standards need to be stable                                        conflict bet ween
                 • Hard to develop against something that’s in constant flux
             – Standards need to be general
                 • May be impossible for someone to adopt our standards if they contain niche
                   functionality.
             – The more general and stable the API, the more likely others will adopt it.
        • We want to innovate
             – Quickly add features that differentiate one implementation from other implementations
                 • Without breaking our clients
                 • Without going through an approval process
             – We want to allow others to also make changes to the API
                 • More likely to adopt OpenStack APIs if they can be modified
                 • We may all benefit from these changes
             – Developers should feel free to experiment and develop new features without worrying about
               the implications to the API as a standard.


                             One goal is to create this ubiquitous cloud
                             technology


Thursday, April 28, 2011
5




        Pluggability
        • OpenStack services should be pluggable.
             – One OpenStack Service...Many Backends:
        • Backends contain a set of shared capabilities, widely applicable to all
          deployments
        • However, each backend may contain special features and niche
          functionality
        • How do we provide access to special features, while still abstracting away
          the details of the backend?
                                                                  hypervisors	
  in	
  compute,	
  
                                                                  network	
  switches	
  in	
  NaaS,
                                                                  etc.	
  	
  
                                               LBaaS
                                                                  Implemented	
  via	
  drivers




                                   Zeus         Pound   HAProxy


Thursday, April 28, 2011
6




        Open Source
        • Open source presents another interesting challenge: Others can make
          changes to the code.
             – OpenStack stock Compute API vs.
                  • Rackspace Version vs.
                  • Other Modified versions.
             – What does OpenStack Compute API 1.1 mean if we have different implementations all with
               different capabilities?
             – How do we ensure compatibility among the different versions?




Thursday, April 28, 2011
7




                           Extensions




Thursday, April 28, 2011
8




        Case Study: OpenGL

        • The problem we’re facing is not new.
          OpenGL faced a similar problem in the 90’s
             – How do you define an open graphics library that:
                 • Is considered a standard specification
                 • Allows vendors to differentiate their products by adding special features
                 • And yet is a governed spec
                           – An architecture review board (ARB):
                               » Proposes and approves specification changes
                               » Makes new releases
                               » Ensures conformance testing
             – The solution was to allow extensions in the specification
                 • Vendors can define special features as extensions
             – A very successful strategy
                 • The core OpenGL API is general and uncluttered and an accepted standard.
                 • Over 500 extensions have been defined over OpenGL’s lifetime
                           –   Best become standard features; others abandoned
                           –   Different extensions for the same feature? Let the best one win.
                           –   Many innovations came via the extension process: vertex and fragment shaders, etc.
                           –   Extensions have been defined by many different vendors: NVidia, ATI, Apple, IBM, Intel, …




Thursday, April 28, 2011
9



                                                              So what are extensions...
        Extensions

        • Extensions add capability to the API beyond those of the specification
        • An API specification must be written to allow for extensibility
             – We need flexibility in the contract to allow for new data elements, actions, states, headers,
               parameters, and resource types.
             – The core API specification defines the extension mechanism, but extensions themselves
               are not part of the core.
        • Implementors are only required to implement the core API
             – But they must implement the core API completely, this way clients can expect a minimum
               level of functionality.
        • Extensions can be promoted
             – Extensions follow a promotion path, at the end of which an extension may become part of
               the next version of the core API.
             – Niche extensions, may never be promoted to the core.
                                                                              If 90% of calls return
                                                                              unimplemented then what’s the
                                                                              point of having a core API?




Thursday, April 28, 2011
10




        Extensions vs. Versions
           Versions                                         Extensions
           Centralized: Versions are maintained by the Decentralized: Extensions are maintained by
           entity that controls the API Spec: The           third parties: Rackspace, OpenStack developers,
           OpenStack Architecture Board. Only the ARB       etc. Anyone can create an Extension.
           can create a new version, only the ARB defines
           what OpenStack Compute 1.1 means.




Thursday, April 28, 2011
11




        Extensions vs. Versions
           Versions                                         Extensions
           Centralized: Versions are maintained by the Decentralized: Extensions are maintained by
           entity that controls the API Spec: The           third parties: Rackspace, OpenStack developers,
           OpenStack Architecture Board. Only the ARB       etc. Anyone can create an Extension.
           can create a new version, only the ARB defines
           what OpenStack Compute 1.1 means.

           Deal with Core Functionality                     Deal with Specialized/Niche
                                                            Functionality




                           Can be applicable to a
                           wide degree of
                           backends...many
                           hypervisors...many load
                           balancers...etc.




Thursday, April 28, 2011
12




        Extensions vs. Versions
           Versions                                         Extensions
           Centralized: Versions are maintained by the Decentralized: Extensions are maintained by
           entity that controls the API Spec: The           third parties: Rackspace, OpenStack developers,
           OpenStack Architecture Board. Only the ARB       etc. Anyone can create an Extension.
           can create a new version, only the ARB defines
           what OpenStack Compute 1.1 means.

           Deal with Core Functionality                     Deal with Specialized/Niche
                                                            Functionality



           Appear infrequently: Versions provide a          Appear frequently: Extensions bring new
           stable platform on which to develop.             features to the market quickly, and in a compatible
                                                            manner.




Thursday, April 28, 2011
13




        Extensions vs. Versions
           Versions                                          Extensions
           Centralized: Versions are maintained by the Decentralized: Extensions are maintained by
           entity that controls the API Spec: The            third parties: Rackspace, OpenStack developers,
           OpenStack Architecture Board. Only the ARB        etc. Anyone can create an Extension.
           can create a new version, only the ARB defines
           what OpenStack Compute 1.1 means.

           Deal with Core Functionality                      Deal with Specialized/Niche
                                                             Functionality



           Appear infrequently: Versions provide a           Appear frequently: Extensions bring new
           stable platform on which to develop.              features to the market quickly, and in a compatible
                                                             manner.



           Are Queryable: You can programmatically           Are Queryable: You can programmatically tell
           tell what versions are available by doing a GET   what extensions are available by doing a GET on
           on the base URL (/) of the API endpoint.          the extensions resource (/v1.1/extensions).




Thursday, April 28, 2011
14




        Extensions vs. Versions

        • Our APIs should be both Extensible and Versionable




Thursday, April 28, 2011
15




        Extensions and Plug-ability go Hand in Hand



                                      Core API   Extensions

    Each driver may expose
    functionality that a                  LBaaS
    client may access via an
    extension.




                               Zeus        Pound      HAProxy




Thursday, April 28, 2011
16




                           Extensions in REST




Thursday, April 28, 2011
17




        What can be extended

        • Extensions may define:
             –   New elements/attributes
             –   New actions
             –   New headers
             –   New parameters
             –   New states
             –   New resources
             –   New mime-types (support for Atom representation or plist representation)
             –   New capabilities (the ability to edit an otherwise un-editable attribute)




Thursday, April 28, 2011
18




        Extensions are queryable

        • You should be able to tell what extensions are available by making a single
          call.
        • If you use extensions as a client this is the first call you’ll probably make




Thursday, April 28, 2011
19




        Sample Extension Query

   • Extensions are queryable via /extensions
        <extensions xmlns="http://docs.openstack.org/api-specs/v1.0"
                    xmlns:atom="http://www.w3.org/2005/Atom"
                    >
            <extension name="Public Image Extension"
                       namespace="http://docs.rackspacecloud.com/servers/api/ext/pie/v1.0"
                       alias="RAX-PIE"
                       >
                <atom:link rel="describedby" type="application/pdf"
                           href="http://docs.rackspacecloud.com/servers/api/ext/cs-pie-20111111.pdf"/>
                <atom:link rel="describedby" type="application/vnd.sun.wadl+xml"
                           href="http://docs.rackspacecloud.com/servers/api/ext/cs-pie.wadl"/>
                <description>
                    Adds the capability to share an image with other users.
                </description>
            </extension>
            <extension name="Cloud Block Storage"
                       namespace="http://docs.rackspacecloud.com/servers/api/ext/cbs/v1.0"
                       alias="RAX-CBS"
                       >
                <atom:link rel="describedby" type="application/pdf"
                           href="http://docs.rackspacecloud.com/servers/api/ext/cs-cbs-20111201.pdf"/>
                <atom:link rel="describedby" type="application/vnd.sun.wadl+xml"
                           href="http://docs.rackspacecloud.com/servers/api/ext/cs-cbs.wadl"/>
                <description>
                    Allows mounting cloud block storage volumes.
                </description>
            </extension>
        </extensions>




Thursday, April 28, 2011
20




        Sample Extension Query

   • Human Readable Name and Description
        <extensions xmlns="http://docs.openstack.org/api-specs/v1.0"
                    xmlns:atom="http://www.w3.org/2005/Atom"
                    >
            <extension name="Public Image Extension"
                       name="Public Image Extension"
                       namespace="http://docs.rackspacecloud.com/servers/api/ext/pie/v1.0"
                       alias="RS-PIE"
                       >
                <atom:link rel="describedby" type="application/pdf"
                           href="http://docs.rackspacecloud.com/servers/api/ext/cs-pie-20111111.pdf"/>
                <atom:link rel="describedby" type="application/vnd.sun.wadl+xml"
                           href="http://docs.rackspacecloud.com/servers/api/ext/cs-pie.wadl"/>
                <description>
                    Adds the capability to share an image with other users.
                </description>
            </extension>
            <extension name="Cloud Block Storage"
                       namespace="http://docs.rackspacecloud.com/servers/api/ext/cbs/v1.0"
                       alias="RS-CBS"
                       >
                <atom:link rel="describedby" type="application/pdf"
                           href="http://docs.rackspacecloud.com/servers/api/ext/cs-cbs-20111201.pdf"/>
                <atom:link rel="describedby" type="application/vnd.sun.wadl+xml"
                           href="http://docs.rackspacecloud.com/servers/api/ext/cs-cbs.wadl"/>
                <description>
                    Allows mounting cloud block storage volumes.
                </description>
            </extension>
        </extensions>




Thursday, April 28, 2011
21




        Sample Extension Query

   • Links to Documentation (in different formats)
        <extensions xmlns="http://docs.openstack.org/api-specs/v1.0"
                    xmlns:atom="http://www.w3.org/2005/Atom"
                    >
            <extension name="Public Image Extension"
                       namespace="http://docs.rackspacecloud.com/servers/api/ext/pie/v1.0"
                       alias="RS-PIE"
                       >
                <atom:link rel="describedby" type="application/pdf"
                           href="http://docs.rackspacecloud.com/servers/api/ext/cs-pie-20111111.pdf"/>
                <atom:link rel="describedby" type="application/vnd.sun.wadl+xml"
                           href="http://docs.rackspacecloud.com/servers/api/ext/cs-pie.wadl"/>
                <description>
                    Adds the capability to share an image with other users.
                </description>
            </extension>
            <extension name="Cloud Block Storage"
                       namespace="http://docs.rackspacecloud.com/servers/api/ext/cbs/v1.0"
                       alias="RS-CBS"
                       >
                <atom:link rel="describedby" type="application/pdf"
                           href="http://docs.rackspacecloud.com/servers/api/ext/cs-cbs-20111201.pdf"/>
                <atom:link rel="describedby" type="application/vnd.sun.wadl+xml"
                           href="http://docs.rackspacecloud.com/servers/api/ext/cs-cbs.wadl"/>
                <description>
                    Allows mounting cloud block storage volumes.
                </description>
            </extension>
        </extensions>




Thursday, April 28, 2011
22




        Sample Extension Query

   • Unique Extension IDs
        <extensions xmlns="http://docs.openstack.org/api-specs/v1.0"
                    xmlns:atom="http://www.w3.org/2005/Atom"
                    >
            <extension name="Public Image Extension"
                       namespace="http://docs.rackspacecloud.com/servers/api/ext/pie/v1.0"
                       alias="RAX-PIE"
                       >
                <atom:link rel="describedby" type="application/pdf"
                           href="http://docs.rackspacecloud.com/servers/api/ext/cs-pie-20111111.pdf"/>
                <atom:link rel="describedby" type="application/vnd.sun.wadl+xml"
                           href="http://docs.rackspacecloud.com/servers/api/ext/cs-pie.wadl"/>
                <description>
                    Adds the capability to share an image with other users.
                </description>
            </extension>
            <extension name="Cloud Block Storage"
                       namespace="http://docs.rackspacecloud.com/servers/api/ext/cbs/v1.0"
                       alias="RAX-CBS"
                       >
                <atom:link rel="describedby" type="application/pdf"
                           href="http://docs.rackspacecloud.com/servers/api/ext/cs-cbs-20111201.pdf"/>
                <atom:link rel="describedby" type="application/vnd.sun.wadl+xml"
                           href="http://docs.rackspacecloud.com/servers/api/ext/cs-cbs.wadl"/>
                <description>
                    Allows mounting cloud block storage volumes.
                </description>
            </extension>
        </extensions>




Thursday, April 28, 2011
23




        Sample Extension Query

   • Vendor Identifiers
        <extensions xmlns="http://docs.openstack.org/api-specs/v1.0"
                    xmlns:atom="http://www.w3.org/2005/Atom"
                    >
            <extension name="Public Image Extension"
                       namespace="http://docs.rackspacecloud.com/servers/api/ext/pie/v1.0"
                                         docs.rackspacecloud.com
                       alias="RAX-PIE"
                              RAX
                       >
                <atom:link rel="describedby" type="application/pdf"
                           href="http://docs.rackspacecloud.com/servers/api/ext/cs-pie-20111111.pdf"/>
                <atom:link rel="describedby" type="application/vnd.sun.wadl+xml"
                           href="http://docs.rackspacecloud.com/servers/api/ext/cs-pie.wadl"/>
                <description>
                    Adds the capability to share an image with other users.
                </description>
            </extension>
            <extension name="Cloud Block Storage"
                       namespace="http://docs.rackspacecloud.com/servers/api/ext/cbs/v1.0"
                       alias="RAX-CBS"
                       >
                <atom:link rel="describedby" type="application/pdf"
                           href="http://docs.rackspacecloud.com/servers/api/ext/cs-cbs-20111201.pdf"/>
                <atom:link rel="describedby" type="application/vnd.sun.wadl+xml"
                           href="http://docs.rackspacecloud.com/servers/api/ext/cs-cbs.wadl"/>
                <description>
                    Allows mounting cloud block storage volumes.
                </description>
            </extension>
        </extensions>




Thursday, April 28, 2011
24




        Vendor Identifiers

        • An extension alias always contains a prefix that identifies the vendor.

                 <extension name="Public Image Extension"
                                namespace="http://docs.rackspacecloud.com/servers/api/ext/pie/v1.0"
                                alias="RAX-PIE">



                                         Prefix    Vendor
                                         OS        OpenStack
                                         MLTI      Multi-Vendor
                                         ARB       ARB Approved
                                         RAX       Rackspace
                                         NASA      Nasa
                                         CTX       Citrix
                                         ...       ...




Thursday, April 28, 2011
25




        Vendor Identifiers

        • Namespaces also help ID the vendor

                     Namespace                               Vendor
                     http://docs.openstack.com/ext/OS/...    OpenStack
                     http://docs.openstack.com/ext/ARB/...   ARB Approved
                     http://docs.rackspacecloud.com/...      Rackspace
                     http://docs.nasa.org/...                Nasa
                     http://docs.citrix.com/....             Citrix
                     ...                                     ...




Thursday, April 28, 2011
26




        Vendor Identifiers

        • The idea is to help prevent clashes between extensions.
             – RAX-PIE
                 • NonXML media types (JSON), headers, parameters
             – http://docs.rackspacecloud.com/servers/api/ext/pie/v1.0
                 • XML based media types

        • Extensions are likely to be implemented by middleware, clashes are likely
          unless we standardize on an approach


                                                       Extension 2, add “shared”
                                                               attribute
                           Two extensions add a
                           “shared” attribute one will
                           override the other.         Extension 1, add “shared”
                                                               attribute



                                                                 API




Thursday, April 28, 2011
27




        Vendor Identifiers

        • The idea is to help prevent clashes between extensions.
             – RAX-PIE
                 • NonXML media types (JSON), headers, parameters
             – http://docs.rackspacecloud.com/servers/api/ext/pie/v1.0
                 • XML based media types

        • Extensions are likely to be implemented by middleware, clashes are likely
          unless we standardize on an approach


                                                           Extension 2, read “filter”   We need some way to
                                                                 parameter
                           Two extensions read a                                        make sure extensions
                           “filter” parameter, both will                                don’t clash with each
                           be activated.                   Extension 1, read “filter”   other and can co-exist
                                                                 parameter



                                                                     API




Thursday, April 28, 2011
28




        Vendor ID Registry

        • OpenStack should maintain a registry of Vendor IDs (prefix and
          namespaces).
        • Anyone should be able to register a Vendor ID.




                                   There shouldn’t be a process by which you get
                                   approved or anything.

                                   Anyone should be able to register a vendor id.




Thursday, April 28, 2011
29




        Data Extensions
        • Add additional Data.
             – In XML, attribute may be added to elements so long as they are in the extension
               namespace
             – In XML, Elements added after last element assuming “Unique Particle Attribution” is not
               violated
             – In JSON, use alias followed by a colon “:”

            <image xmlns="http://docs.rackspacecloud.com/servers/api/v1.0"
                   xmlns:RAX-PIE="http://docs.rackspacecloud.com/servers/api/ext/pie/v1.0"
                   id="1" name="CentOS 5.2"
                   serverId="12"
                   updated="2010-10-10T12:00:00Z"
                   created="2010-08-10T12:00:00Z"
                   status="ACTIVE"
                   RAX-PIE:shared="true"
                   />

            {
                 "image" : {
                     "id" : 1,
                     "name" : "CentOS 5.2",
                     "serverId" : 12,
                     "updated" : "2010-10-10T12:00:00Z",
                     "created" : "2010-08-10T12:00:00Z",
                     "status" : "ACTIVE",
                     "RAX-PIE:shared" : true
                 }
            }




Thursday, April 28, 2011
30




        New Actions

        • In XML, actions are defined in the extension namespace
        • In JSON, use alias followed by a colon “:” for the action name

          <mount_volume xmlns="http://docs.rackspacecloud.com/servers/api/ext/cbs/v1.0"
              CBSID="123"/>


          {
               "RAX-CBS:mount_volume" : {
                   "CBSID" : "123"
               }
          }




Thursday, April 28, 2011
31




        New Headers and States

        • With headers, append name with an X- followed by the alias
             – X-RAX-CBS-Header1: Value
             – X-RAX-CBS-Header2: Value
        • With states, use alias followed by a “:”
            <image xmlns="http://docs.rackspacecloud.com/servers/api/v1.0"
                   xmlns:RS-PIE="http://docs.rackspacecloud.com/servers/api/ext/pie/v1.0"
                   id="1" name="CentOS 5.2"
                   serverId="12"
                   updated="2010-10-10T12:00:00Z"
                   created="2010-08-10T12:00:00Z"
                   status="RAX-PIE:PrepareShare" progress="80"
                   RS-PIE:shared="true"
                   />

            {
                 "image" : {
                     "id" : 1,
                     "name" : "CentOS 5.2",
                     "serverId" : 12,
                     "updated" : "2010-10-10T12:00:00Z",
                     "created" : "2010-08-10T12:00:00Z",
                     "status" : "RAX-PIE:PrepareShare",
                     "progress" : 80,
                     "RS-PIE:shared" : true
                 }
            }



Thursday, April 28, 2011
32




        New Resources

        • Extensions are always defined at
          /path/to/resource/ext/ext-alias/newResource
          All major resources can reference a /ext




Thursday, April 28, 2011
33




                           Promoting Extensions




Thursday, April 28, 2011
34




        Specification Governance

        • In order to be successful extensions need to be governed
        • The architecture review board (ARB) is responsible for this.
           It...
             –   Proposes and approves specification changes
             –   Decides which extensions are promoted to the core API
             –   Ensures that each core API provides a minimal set of widely applicable capabilities
             –   Ensures conformance testing
        • Who’s in the ARB?
             – The exact makeup still needs to be determined
             – However, short term, probably OpenStack governance team in collaboration with the project
               team lead (PTL) of each team.
        • How does the ARB got about promoting extensions?
                                                                                       Governance doesn’t
                                                                                       necessarily need to be a
                           The governance team                                         heavy weight process...
                           concerned with
                           consistency bet ween                                        +1 in an e-mail
                           APIs..

                           ..team leads concern
                           with functionality of
                           their own service
Thursday, April 28, 2011
35




        ARB Approved Extensions

        • The ARB “blesses” an extension by making it an ARB-approved extension.
        • ARB-approved extensions use ARB as the vendor prefix.
        • An ARB-approved extension denotes
             – That the extension is being considered for the next revision of the specification OR
             – That extension is a niche extension that is very useful; it may not make it as a standard
               feature, but implementors are encouraged to implement it nonetheless, clients can rely on it
               being there in most cases.




Thursday, April 28, 2011
36




        Promotion Path

        • Extensions may follow a promotion path
             – Vendor Specific → ARB Approved → Core Feature
        • Some extensions may be developed by multiple vendors; these are known
          as Multi-Vendor extension, the prefix is MLTI.
             – Multi-Vendor (MLTI) → ARB Approved → Core Feature
        • An extension may start as a vendor specific extension and become a multi-
          vendor extension.
             – Vendor Specific → Multi-Vendor (MLTI) → ARB Approved → Core Feature




Thursday, April 28, 2011
37




        New Features Should Start as Extensions

        • This gives us the ability to try things out before a feature enters the
          standard.
        • Allows competing extensions to co-exist
        • That means that our API specs are written bottom-up rather than top-down
             – Implementations determine new features
             – The API is not designed in a vacuum




Thursday, April 28, 2011
38




        Promotion Path

        • Not all extensions should be promoted to core features
             – Extensions may implement niche functionality that doesn’t make sense in the core API.
             – Or they may implement functionality that can’t make it to core because it would prevent a
               particular backend from implementing the full set of core features.
        • Example: The ability to dynamically change the port number for a load
          balancer.
             – Most Load Balancers support this, but not all -- can’t be in the core
             – We can add that capability as an extension
             – This will be a pretty standard extension that will probably start off as an ARB-approved
               extension...




Thursday, April 28, 2011
39




                           Challenges




Thursday, April 28, 2011
40




        Language Bindings

        • Extensions should be supported at the language binding layer
             – A simple approach may be to allow the language bindings themselves to be extensible, so
               that extensions may be simply added to an existing binding.




Thursday, April 28, 2011
41




        JSON and Collections

        • How do you extend the collection of public addresses below?
             – Where do you put additional attributes?




                            {
                                "networks" : {
                                  "public" : [
                                     "67.23.10.132",
                                     "67.23.10.131"
                                  ],
                                  "private" : [
                                     "10.176.42.16"
                                  ]
                                }
                            }




Thursday, April 28, 2011
42




        JSON and Collections

        • Obviously, you’d need to wrap the array into an object


                           {
                               "networks" : {
                                 "public" : {
                                    "EXT-H: hello" : "hi",
                                    "addresses": [
                                      "67.23.10.132",
                                      "67.23.10.131"
                                    ]
                                 },
                                 "private" : {
                                    "addresses" : [
                                      "10.176.42.16"
                                    ]
                                 }
                               }
                           }




Thursday, April 28, 2011
43




        JSON and Collections

        • Work’s great but what do you call a collection of servers?




                           {
                               "servers" : [....]
                           }




Thursday, April 28, 2011
44




        JSON and Collections

        • Servers?




                           {
                               "servers" : {
                                 “servers” : [
                                   ...
                                 ]
                               }
                           }




Thursday, April 28, 2011
45




        JSON and Collections

        • I’d prefer having a single name for the array
             – It’s more generalizable...it always works...
             – Limits the introduction of entities not found in other representations



                             {
                                 "servers" : {
                                   “values” : [
                                     ...
                                   ]
                                 }
                             }


               A common pattern for
               collections...others call
               the array “memebers”




Thursday, April 28, 2011
46




        JSON and Collections
        • There are other approach we can take ranging from generalizable “values”
          to ad hock.
        • Each approach has it’s advantages and disadvantages
        • It may be that there is no approach that’s truly JSONic when dealing with
          collections.
        • We want extensibility in JSON, but we want to avoid BadgerFish:
            {
                "alice" : {
                   "bob" : {
                      "$" : "david" ,                                    Using alias prefixes get
                      "@xmlns" : {                                       gives us a lot
                         "charlie" : "http://some-other-namespace" ,
                         "$" : "http://some-namespace"
                      }
                   },
                   "charlie:edgar" : {
                      "$" : "frank" ,
                      "@xmlns" : {
                         "charlie": "http://some-other-namespace",
                         "$" : "http://some-namespace"
                      }
                   },
                   "@xmlns" : {
                      "charlie" : "http://some-other-namespace",
                      "$" : "http://some-namespace"
                   }
                }
            }




Thursday, April 28, 2011
47




                           Summary




Thursday, April 28, 2011
48




        Why Extensions?

        • Stable Core with Support for Innovation
        • New features can come quickly without and in a backward compatible
          manner
        • Pluggability - allow supporting the capabilities of different backends
        • Ensure compatibility between different kinds of OpenStack deployments
        • Allow vendors to differentiate their products with niche features
        • Allow new features to be tested before they become part of the core




Thursday, April 28, 2011
49




        How Extensions?

        • Extensions are queryable via a GET to /extensions
        • An individual extension via GET to /extensions/{EXT-ALIAS}
        • To help prevent clashes between extensions, use aliases and
          namespaces:
             – RAX-PIE
                 • NonXML media types (JSON), headers, parameters
             – http://docs.rackspacecloud.com/servers/api/ext/pie/v1.0
                 • XML based media types

        • Extensions can be promoted
             – Vendor Specific → ARB Approved → Core Feature
             – ARB Approved extensions likely part of the core distribution, likely to be implemented




Thursday, April 28, 2011
50




                           Questions?




Thursday, April 28, 2011

Mais conteúdo relacionado

Mais procurados

Oracle Solaris Application-Centric Lifecycle and DevOps
Oracle Solaris Application-Centric Lifecycle and DevOpsOracle Solaris Application-Centric Lifecycle and DevOps
Oracle Solaris Application-Centric Lifecycle and DevOpsOTN Systems Hub
 
BP-5 Application Lifecycle Management
BP-5 Application Lifecycle ManagementBP-5 Application Lifecycle Management
BP-5 Application Lifecycle ManagementAlfresco Software
 
Your own kubernetes castle
Your own kubernetes castleYour own kubernetes castle
Your own kubernetes castleLibbySchulze
 
BP-10 Keeping Your Sanity – Rapid Development & Deployment Tools
BP-10 Keeping Your Sanity – Rapid Development & Deployment ToolsBP-10 Keeping Your Sanity – Rapid Development & Deployment Tools
BP-10 Keeping Your Sanity – Rapid Development & Deployment ToolsAlfresco Software
 
How to Contribute to Ansible
How to Contribute to AnsibleHow to Contribute to Ansible
How to Contribute to AnsibleCisco DevNet
 
Cucumber jvm best practices v3
Cucumber jvm best practices v3Cucumber jvm best practices v3
Cucumber jvm best practices v3Ahmed Misbah
 
Transactions in Eclipse Based SOA - Pavlin Dobrev, Dimitar Valtchev and Roma...
Transactions in Eclipse Based SOA - Pavlin Dobrev, Dimitar Valtchev and  Roma...Transactions in Eclipse Based SOA - Pavlin Dobrev, Dimitar Valtchev and  Roma...
Transactions in Eclipse Based SOA - Pavlin Dobrev, Dimitar Valtchev and Roma...mfrancis
 
Multicore 101: Migrating Embedded Apps to Multicore with Linux
Multicore 101: Migrating Embedded Apps to Multicore with LinuxMulticore 101: Migrating Embedded Apps to Multicore with Linux
Multicore 101: Migrating Embedded Apps to Multicore with LinuxBrad Dixon
 
Integrating Splunk into your Spring Applications
Integrating Splunk into your Spring ApplicationsIntegrating Splunk into your Spring Applications
Integrating Splunk into your Spring ApplicationsDamien Dallimore
 
Java APIs - the missing manual
Java APIs - the missing manualJava APIs - the missing manual
Java APIs - the missing manualHendrik Ebbers
 
CI and CD Across the Enterprise with Jenkins (devops.com Nov 2014)
CI and CD Across the Enterprise with Jenkins (devops.com Nov 2014)CI and CD Across the Enterprise with Jenkins (devops.com Nov 2014)
CI and CD Across the Enterprise with Jenkins (devops.com Nov 2014)CloudBees
 
AWS Summit Tel Aviv - Enterprise Track - Enterprise Apps & Hybrid
AWS Summit Tel Aviv - Enterprise Track - Enterprise Apps & HybridAWS Summit Tel Aviv - Enterprise Track - Enterprise Apps & Hybrid
AWS Summit Tel Aviv - Enterprise Track - Enterprise Apps & HybridAmazon Web Services
 
Enterprise Docker Requires a Private Registry
Enterprise Docker Requires a Private RegistryEnterprise Docker Requires a Private Registry
Enterprise Docker Requires a Private RegistryChris Riley ☁
 
CDO Ignite
CDO IgniteCDO Ignite
CDO IgniteHolmes70
 

Mais procurados (15)

Oracle Solaris Application-Centric Lifecycle and DevOps
Oracle Solaris Application-Centric Lifecycle and DevOpsOracle Solaris Application-Centric Lifecycle and DevOps
Oracle Solaris Application-Centric Lifecycle and DevOps
 
BP-5 Application Lifecycle Management
BP-5 Application Lifecycle ManagementBP-5 Application Lifecycle Management
BP-5 Application Lifecycle Management
 
Your own kubernetes castle
Your own kubernetes castleYour own kubernetes castle
Your own kubernetes castle
 
BP-10 Keeping Your Sanity – Rapid Development & Deployment Tools
BP-10 Keeping Your Sanity – Rapid Development & Deployment ToolsBP-10 Keeping Your Sanity – Rapid Development & Deployment Tools
BP-10 Keeping Your Sanity – Rapid Development & Deployment Tools
 
Open Source Recife
Open Source RecifeOpen Source Recife
Open Source Recife
 
How to Contribute to Ansible
How to Contribute to AnsibleHow to Contribute to Ansible
How to Contribute to Ansible
 
Cucumber jvm best practices v3
Cucumber jvm best practices v3Cucumber jvm best practices v3
Cucumber jvm best practices v3
 
Transactions in Eclipse Based SOA - Pavlin Dobrev, Dimitar Valtchev and Roma...
Transactions in Eclipse Based SOA - Pavlin Dobrev, Dimitar Valtchev and  Roma...Transactions in Eclipse Based SOA - Pavlin Dobrev, Dimitar Valtchev and  Roma...
Transactions in Eclipse Based SOA - Pavlin Dobrev, Dimitar Valtchev and Roma...
 
Multicore 101: Migrating Embedded Apps to Multicore with Linux
Multicore 101: Migrating Embedded Apps to Multicore with LinuxMulticore 101: Migrating Embedded Apps to Multicore with Linux
Multicore 101: Migrating Embedded Apps to Multicore with Linux
 
Integrating Splunk into your Spring Applications
Integrating Splunk into your Spring ApplicationsIntegrating Splunk into your Spring Applications
Integrating Splunk into your Spring Applications
 
Java APIs - the missing manual
Java APIs - the missing manualJava APIs - the missing manual
Java APIs - the missing manual
 
CI and CD Across the Enterprise with Jenkins (devops.com Nov 2014)
CI and CD Across the Enterprise with Jenkins (devops.com Nov 2014)CI and CD Across the Enterprise with Jenkins (devops.com Nov 2014)
CI and CD Across the Enterprise with Jenkins (devops.com Nov 2014)
 
AWS Summit Tel Aviv - Enterprise Track - Enterprise Apps & Hybrid
AWS Summit Tel Aviv - Enterprise Track - Enterprise Apps & HybridAWS Summit Tel Aviv - Enterprise Track - Enterprise Apps & Hybrid
AWS Summit Tel Aviv - Enterprise Track - Enterprise Apps & Hybrid
 
Enterprise Docker Requires a Private Registry
Enterprise Docker Requires a Private RegistryEnterprise Docker Requires a Private Registry
Enterprise Docker Requires a Private Registry
 
CDO Ignite
CDO IgniteCDO Ignite
CDO Ignite
 

Semelhante a OpenStack Extensions

OpenStack at EBSCO
OpenStack at EBSCOOpenStack at EBSCO
OpenStack at EBSCOTesora
 
Interoperability: The Elephants in the Room & What We're Doing About Them
Interoperability: The Elephants in the Room & What We're Doing About ThemInteroperability: The Elephants in the Room & What We're Doing About Them
Interoperability: The Elephants in the Room & What We're Doing About ThemMark Voelker
 
InteropWG Intro & Vertical Programs (May. 2017)
InteropWG Intro & Vertical Programs (May. 2017)InteropWG Intro & Vertical Programs (May. 2017)
InteropWG Intro & Vertical Programs (May. 2017)Mark Voelker
 
2011 Essex Summit: Openstack/Hyper-V clouds
2011 Essex Summit: Openstack/Hyper-V clouds2011 Essex Summit: Openstack/Hyper-V clouds
2011 Essex Summit: Openstack/Hyper-V cloudsppouliot
 
The Future of API Specifications -- Aidan Cunniffe 2021
The Future of API Specifications -- Aidan Cunniffe 2021The Future of API Specifications -- Aidan Cunniffe 2021
The Future of API Specifications -- Aidan Cunniffe 2021Aidan Cunniffe
 
IaC? VSTS to the rescue! Abbreviations explained
IaC? VSTS to the rescue! Abbreviations explainedIaC? VSTS to the rescue! Abbreviations explained
IaC? VSTS to the rescue! Abbreviations explainedJeroen Niesen
 
Simplify Your Way To Expert Kubernetes Management
Simplify Your Way To Expert Kubernetes ManagementSimplify Your Way To Expert Kubernetes Management
Simplify Your Way To Expert Kubernetes ManagementDevOps.com
 
VMworld 2013: Deploying vSphere with OpenStack: What It Means to Your Cloud E...
VMworld 2013: Deploying vSphere with OpenStack: What It Means to Your Cloud E...VMworld 2013: Deploying vSphere with OpenStack: What It Means to Your Cloud E...
VMworld 2013: Deploying vSphere with OpenStack: What It Means to Your Cloud E...VMworld
 
Top 10 dev ops tools (1)
Top 10 dev ops tools (1)Top 10 dev ops tools (1)
Top 10 dev ops tools (1)yalini97
 
Overview of PaaS: Java experience
Overview of PaaS: Java experienceOverview of PaaS: Java experience
Overview of PaaS: Java experienceIgor Anishchenko
 
Overview of PaaS: Java experience
Overview of PaaS: Java experienceOverview of PaaS: Java experience
Overview of PaaS: Java experienceAlex Tumanoff
 
DefCore: The Interoperability Standard for OpenStack
DefCore: The Interoperability Standard for OpenStackDefCore: The Interoperability Standard for OpenStack
DefCore: The Interoperability Standard for OpenStackMark Voelker
 
MuleSoft London Community November 2019 - MuleSoft and CICD
MuleSoft London Community November 2019 - MuleSoft and CICDMuleSoft London Community November 2019 - MuleSoft and CICD
MuleSoft London Community November 2019 - MuleSoft and CICDPace Integration
 
Skipping OpenStack Releases: (You Don't) Gotta Catch 'Em All
Skipping OpenStack Releases: (You Don't) Gotta Catch 'Em AllSkipping OpenStack Releases: (You Don't) Gotta Catch 'Em All
Skipping OpenStack Releases: (You Don't) Gotta Catch 'Em AllMark Voelker
 
OpenStack Enabling DevOps
OpenStack Enabling DevOpsOpenStack Enabling DevOps
OpenStack Enabling DevOpsCisco DevNet
 
Onos summit roadmap dec 9
Onos summit  roadmap dec 9Onos summit  roadmap dec 9
Onos summit roadmap dec 9ONOS Project
 
Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Hannes Lowette
 
OPNFV CI and Challenges: How we solved them - if we solved them at all!
OPNFV CI and Challenges: How we solved them - if we solved them at all!OPNFV CI and Challenges: How we solved them - if we solved them at all!
OPNFV CI and Challenges: How we solved them - if we solved them at all!Fatih Degirmenci
 

Semelhante a OpenStack Extensions (20)

OpenStack at EBSCO
OpenStack at EBSCOOpenStack at EBSCO
OpenStack at EBSCO
 
Interoperability: The Elephants in the Room & What We're Doing About Them
Interoperability: The Elephants in the Room & What We're Doing About ThemInteroperability: The Elephants in the Room & What We're Doing About Them
Interoperability: The Elephants in the Room & What We're Doing About Them
 
InteropWG Intro & Vertical Programs (May. 2017)
InteropWG Intro & Vertical Programs (May. 2017)InteropWG Intro & Vertical Programs (May. 2017)
InteropWG Intro & Vertical Programs (May. 2017)
 
2011 Essex Summit: Openstack/Hyper-V clouds
2011 Essex Summit: Openstack/Hyper-V clouds2011 Essex Summit: Openstack/Hyper-V clouds
2011 Essex Summit: Openstack/Hyper-V clouds
 
The Future of API Specifications -- Aidan Cunniffe 2021
The Future of API Specifications -- Aidan Cunniffe 2021The Future of API Specifications -- Aidan Cunniffe 2021
The Future of API Specifications -- Aidan Cunniffe 2021
 
IaC? VSTS to the rescue! Abbreviations explained
IaC? VSTS to the rescue! Abbreviations explainedIaC? VSTS to the rescue! Abbreviations explained
IaC? VSTS to the rescue! Abbreviations explained
 
Simplify Your Way To Expert Kubernetes Management
Simplify Your Way To Expert Kubernetes ManagementSimplify Your Way To Expert Kubernetes Management
Simplify Your Way To Expert Kubernetes Management
 
VMworld 2013: Deploying vSphere with OpenStack: What It Means to Your Cloud E...
VMworld 2013: Deploying vSphere with OpenStack: What It Means to Your Cloud E...VMworld 2013: Deploying vSphere with OpenStack: What It Means to Your Cloud E...
VMworld 2013: Deploying vSphere with OpenStack: What It Means to Your Cloud E...
 
Top 10 dev ops tools (1)
Top 10 dev ops tools (1)Top 10 dev ops tools (1)
Top 10 dev ops tools (1)
 
OpenStack Kilo - April 2015
OpenStack Kilo - April 2015OpenStack Kilo - April 2015
OpenStack Kilo - April 2015
 
Overview of PaaS: Java experience
Overview of PaaS: Java experienceOverview of PaaS: Java experience
Overview of PaaS: Java experience
 
Overview of PaaS: Java experience
Overview of PaaS: Java experienceOverview of PaaS: Java experience
Overview of PaaS: Java experience
 
DefCore: The Interoperability Standard for OpenStack
DefCore: The Interoperability Standard for OpenStackDefCore: The Interoperability Standard for OpenStack
DefCore: The Interoperability Standard for OpenStack
 
Was liberty
Was libertyWas liberty
Was liberty
 
MuleSoft London Community November 2019 - MuleSoft and CICD
MuleSoft London Community November 2019 - MuleSoft and CICDMuleSoft London Community November 2019 - MuleSoft and CICD
MuleSoft London Community November 2019 - MuleSoft and CICD
 
Skipping OpenStack Releases: (You Don't) Gotta Catch 'Em All
Skipping OpenStack Releases: (You Don't) Gotta Catch 'Em AllSkipping OpenStack Releases: (You Don't) Gotta Catch 'Em All
Skipping OpenStack Releases: (You Don't) Gotta Catch 'Em All
 
OpenStack Enabling DevOps
OpenStack Enabling DevOpsOpenStack Enabling DevOps
OpenStack Enabling DevOps
 
Onos summit roadmap dec 9
Onos summit  roadmap dec 9Onos summit  roadmap dec 9
Onos summit roadmap dec 9
 
Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®
 
OPNFV CI and Challenges: How we solved them - if we solved them at all!
OPNFV CI and Challenges: How we solved them - if we solved them at all!OPNFV CI and Challenges: How we solved them - if we solved them at all!
OPNFV CI and Challenges: How we solved them - if we solved them at all!
 

Último

08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 

Último (20)

08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 

OpenStack Extensions

  • 1. OpenStack API Extensions Jorge L. Williams Thursday, April 28, 2011
  • 2. 2 Agenda • The Problem • Extensions • Extensions in REST • Promoting Extensions to new Features • Challenges • Summary • Questions? Thursday, April 28, 2011
  • 3. 3 The Problem Thursday, April 28, 2011
  • 4. 4 Standardization vs Innovation and Differentiation • We want our APIs to be Open Standards... There are a number of – Defining Standard APIs good for OpenStack, and our Customers problem that we’re trying – We want to encourage others to implement our APIs to solve: One is there always seems to be a – Standards need to be stable conflict bet ween • Hard to develop against something that’s in constant flux – Standards need to be general • May be impossible for someone to adopt our standards if they contain niche functionality. – The more general and stable the API, the more likely others will adopt it. • We want to innovate – Quickly add features that differentiate one implementation from other implementations • Without breaking our clients • Without going through an approval process – We want to allow others to also make changes to the API • More likely to adopt OpenStack APIs if they can be modified • We may all benefit from these changes – Developers should feel free to experiment and develop new features without worrying about the implications to the API as a standard. One goal is to create this ubiquitous cloud technology Thursday, April 28, 2011
  • 5. 5 Pluggability • OpenStack services should be pluggable. – One OpenStack Service...Many Backends: • Backends contain a set of shared capabilities, widely applicable to all deployments • However, each backend may contain special features and niche functionality • How do we provide access to special features, while still abstracting away the details of the backend? hypervisors  in  compute,   network  switches  in  NaaS, etc.     LBaaS Implemented  via  drivers Zeus Pound HAProxy Thursday, April 28, 2011
  • 6. 6 Open Source • Open source presents another interesting challenge: Others can make changes to the code. – OpenStack stock Compute API vs. • Rackspace Version vs. • Other Modified versions. – What does OpenStack Compute API 1.1 mean if we have different implementations all with different capabilities? – How do we ensure compatibility among the different versions? Thursday, April 28, 2011
  • 7. 7 Extensions Thursday, April 28, 2011
  • 8. 8 Case Study: OpenGL • The problem we’re facing is not new. OpenGL faced a similar problem in the 90’s – How do you define an open graphics library that: • Is considered a standard specification • Allows vendors to differentiate their products by adding special features • And yet is a governed spec – An architecture review board (ARB): » Proposes and approves specification changes » Makes new releases » Ensures conformance testing – The solution was to allow extensions in the specification • Vendors can define special features as extensions – A very successful strategy • The core OpenGL API is general and uncluttered and an accepted standard. • Over 500 extensions have been defined over OpenGL’s lifetime – Best become standard features; others abandoned – Different extensions for the same feature? Let the best one win. – Many innovations came via the extension process: vertex and fragment shaders, etc. – Extensions have been defined by many different vendors: NVidia, ATI, Apple, IBM, Intel, … Thursday, April 28, 2011
  • 9. 9 So what are extensions... Extensions • Extensions add capability to the API beyond those of the specification • An API specification must be written to allow for extensibility – We need flexibility in the contract to allow for new data elements, actions, states, headers, parameters, and resource types. – The core API specification defines the extension mechanism, but extensions themselves are not part of the core. • Implementors are only required to implement the core API – But they must implement the core API completely, this way clients can expect a minimum level of functionality. • Extensions can be promoted – Extensions follow a promotion path, at the end of which an extension may become part of the next version of the core API. – Niche extensions, may never be promoted to the core. If 90% of calls return unimplemented then what’s the point of having a core API? Thursday, April 28, 2011
  • 10. 10 Extensions vs. Versions Versions Extensions Centralized: Versions are maintained by the Decentralized: Extensions are maintained by entity that controls the API Spec: The third parties: Rackspace, OpenStack developers, OpenStack Architecture Board. Only the ARB etc. Anyone can create an Extension. can create a new version, only the ARB defines what OpenStack Compute 1.1 means. Thursday, April 28, 2011
  • 11. 11 Extensions vs. Versions Versions Extensions Centralized: Versions are maintained by the Decentralized: Extensions are maintained by entity that controls the API Spec: The third parties: Rackspace, OpenStack developers, OpenStack Architecture Board. Only the ARB etc. Anyone can create an Extension. can create a new version, only the ARB defines what OpenStack Compute 1.1 means. Deal with Core Functionality Deal with Specialized/Niche Functionality Can be applicable to a wide degree of backends...many hypervisors...many load balancers...etc. Thursday, April 28, 2011
  • 12. 12 Extensions vs. Versions Versions Extensions Centralized: Versions are maintained by the Decentralized: Extensions are maintained by entity that controls the API Spec: The third parties: Rackspace, OpenStack developers, OpenStack Architecture Board. Only the ARB etc. Anyone can create an Extension. can create a new version, only the ARB defines what OpenStack Compute 1.1 means. Deal with Core Functionality Deal with Specialized/Niche Functionality Appear infrequently: Versions provide a Appear frequently: Extensions bring new stable platform on which to develop. features to the market quickly, and in a compatible manner. Thursday, April 28, 2011
  • 13. 13 Extensions vs. Versions Versions Extensions Centralized: Versions are maintained by the Decentralized: Extensions are maintained by entity that controls the API Spec: The third parties: Rackspace, OpenStack developers, OpenStack Architecture Board. Only the ARB etc. Anyone can create an Extension. can create a new version, only the ARB defines what OpenStack Compute 1.1 means. Deal with Core Functionality Deal with Specialized/Niche Functionality Appear infrequently: Versions provide a Appear frequently: Extensions bring new stable platform on which to develop. features to the market quickly, and in a compatible manner. Are Queryable: You can programmatically Are Queryable: You can programmatically tell tell what versions are available by doing a GET what extensions are available by doing a GET on on the base URL (/) of the API endpoint. the extensions resource (/v1.1/extensions). Thursday, April 28, 2011
  • 14. 14 Extensions vs. Versions • Our APIs should be both Extensible and Versionable Thursday, April 28, 2011
  • 15. 15 Extensions and Plug-ability go Hand in Hand Core API Extensions Each driver may expose functionality that a LBaaS client may access via an extension. Zeus Pound HAProxy Thursday, April 28, 2011
  • 16. 16 Extensions in REST Thursday, April 28, 2011
  • 17. 17 What can be extended • Extensions may define: – New elements/attributes – New actions – New headers – New parameters – New states – New resources – New mime-types (support for Atom representation or plist representation) – New capabilities (the ability to edit an otherwise un-editable attribute) Thursday, April 28, 2011
  • 18. 18 Extensions are queryable • You should be able to tell what extensions are available by making a single call. • If you use extensions as a client this is the first call you’ll probably make Thursday, April 28, 2011
  • 19. 19 Sample Extension Query • Extensions are queryable via /extensions <extensions xmlns="http://docs.openstack.org/api-specs/v1.0" xmlns:atom="http://www.w3.org/2005/Atom" > <extension name="Public Image Extension" namespace="http://docs.rackspacecloud.com/servers/api/ext/pie/v1.0" alias="RAX-PIE" > <atom:link rel="describedby" type="application/pdf" href="http://docs.rackspacecloud.com/servers/api/ext/cs-pie-20111111.pdf"/> <atom:link rel="describedby" type="application/vnd.sun.wadl+xml" href="http://docs.rackspacecloud.com/servers/api/ext/cs-pie.wadl"/> <description> Adds the capability to share an image with other users. </description> </extension> <extension name="Cloud Block Storage" namespace="http://docs.rackspacecloud.com/servers/api/ext/cbs/v1.0" alias="RAX-CBS" > <atom:link rel="describedby" type="application/pdf" href="http://docs.rackspacecloud.com/servers/api/ext/cs-cbs-20111201.pdf"/> <atom:link rel="describedby" type="application/vnd.sun.wadl+xml" href="http://docs.rackspacecloud.com/servers/api/ext/cs-cbs.wadl"/> <description> Allows mounting cloud block storage volumes. </description> </extension> </extensions> Thursday, April 28, 2011
  • 20. 20 Sample Extension Query • Human Readable Name and Description <extensions xmlns="http://docs.openstack.org/api-specs/v1.0" xmlns:atom="http://www.w3.org/2005/Atom" > <extension name="Public Image Extension" name="Public Image Extension" namespace="http://docs.rackspacecloud.com/servers/api/ext/pie/v1.0" alias="RS-PIE" > <atom:link rel="describedby" type="application/pdf" href="http://docs.rackspacecloud.com/servers/api/ext/cs-pie-20111111.pdf"/> <atom:link rel="describedby" type="application/vnd.sun.wadl+xml" href="http://docs.rackspacecloud.com/servers/api/ext/cs-pie.wadl"/> <description> Adds the capability to share an image with other users. </description> </extension> <extension name="Cloud Block Storage" namespace="http://docs.rackspacecloud.com/servers/api/ext/cbs/v1.0" alias="RS-CBS" > <atom:link rel="describedby" type="application/pdf" href="http://docs.rackspacecloud.com/servers/api/ext/cs-cbs-20111201.pdf"/> <atom:link rel="describedby" type="application/vnd.sun.wadl+xml" href="http://docs.rackspacecloud.com/servers/api/ext/cs-cbs.wadl"/> <description> Allows mounting cloud block storage volumes. </description> </extension> </extensions> Thursday, April 28, 2011
  • 21. 21 Sample Extension Query • Links to Documentation (in different formats) <extensions xmlns="http://docs.openstack.org/api-specs/v1.0" xmlns:atom="http://www.w3.org/2005/Atom" > <extension name="Public Image Extension" namespace="http://docs.rackspacecloud.com/servers/api/ext/pie/v1.0" alias="RS-PIE" > <atom:link rel="describedby" type="application/pdf" href="http://docs.rackspacecloud.com/servers/api/ext/cs-pie-20111111.pdf"/> <atom:link rel="describedby" type="application/vnd.sun.wadl+xml" href="http://docs.rackspacecloud.com/servers/api/ext/cs-pie.wadl"/> <description> Adds the capability to share an image with other users. </description> </extension> <extension name="Cloud Block Storage" namespace="http://docs.rackspacecloud.com/servers/api/ext/cbs/v1.0" alias="RS-CBS" > <atom:link rel="describedby" type="application/pdf" href="http://docs.rackspacecloud.com/servers/api/ext/cs-cbs-20111201.pdf"/> <atom:link rel="describedby" type="application/vnd.sun.wadl+xml" href="http://docs.rackspacecloud.com/servers/api/ext/cs-cbs.wadl"/> <description> Allows mounting cloud block storage volumes. </description> </extension> </extensions> Thursday, April 28, 2011
  • 22. 22 Sample Extension Query • Unique Extension IDs <extensions xmlns="http://docs.openstack.org/api-specs/v1.0" xmlns:atom="http://www.w3.org/2005/Atom" > <extension name="Public Image Extension" namespace="http://docs.rackspacecloud.com/servers/api/ext/pie/v1.0" alias="RAX-PIE" > <atom:link rel="describedby" type="application/pdf" href="http://docs.rackspacecloud.com/servers/api/ext/cs-pie-20111111.pdf"/> <atom:link rel="describedby" type="application/vnd.sun.wadl+xml" href="http://docs.rackspacecloud.com/servers/api/ext/cs-pie.wadl"/> <description> Adds the capability to share an image with other users. </description> </extension> <extension name="Cloud Block Storage" namespace="http://docs.rackspacecloud.com/servers/api/ext/cbs/v1.0" alias="RAX-CBS" > <atom:link rel="describedby" type="application/pdf" href="http://docs.rackspacecloud.com/servers/api/ext/cs-cbs-20111201.pdf"/> <atom:link rel="describedby" type="application/vnd.sun.wadl+xml" href="http://docs.rackspacecloud.com/servers/api/ext/cs-cbs.wadl"/> <description> Allows mounting cloud block storage volumes. </description> </extension> </extensions> Thursday, April 28, 2011
  • 23. 23 Sample Extension Query • Vendor Identifiers <extensions xmlns="http://docs.openstack.org/api-specs/v1.0" xmlns:atom="http://www.w3.org/2005/Atom" > <extension name="Public Image Extension" namespace="http://docs.rackspacecloud.com/servers/api/ext/pie/v1.0" docs.rackspacecloud.com alias="RAX-PIE" RAX > <atom:link rel="describedby" type="application/pdf" href="http://docs.rackspacecloud.com/servers/api/ext/cs-pie-20111111.pdf"/> <atom:link rel="describedby" type="application/vnd.sun.wadl+xml" href="http://docs.rackspacecloud.com/servers/api/ext/cs-pie.wadl"/> <description> Adds the capability to share an image with other users. </description> </extension> <extension name="Cloud Block Storage" namespace="http://docs.rackspacecloud.com/servers/api/ext/cbs/v1.0" alias="RAX-CBS" > <atom:link rel="describedby" type="application/pdf" href="http://docs.rackspacecloud.com/servers/api/ext/cs-cbs-20111201.pdf"/> <atom:link rel="describedby" type="application/vnd.sun.wadl+xml" href="http://docs.rackspacecloud.com/servers/api/ext/cs-cbs.wadl"/> <description> Allows mounting cloud block storage volumes. </description> </extension> </extensions> Thursday, April 28, 2011
  • 24. 24 Vendor Identifiers • An extension alias always contains a prefix that identifies the vendor. <extension name="Public Image Extension" namespace="http://docs.rackspacecloud.com/servers/api/ext/pie/v1.0" alias="RAX-PIE"> Prefix Vendor OS OpenStack MLTI Multi-Vendor ARB ARB Approved RAX Rackspace NASA Nasa CTX Citrix ... ... Thursday, April 28, 2011
  • 25. 25 Vendor Identifiers • Namespaces also help ID the vendor Namespace Vendor http://docs.openstack.com/ext/OS/... OpenStack http://docs.openstack.com/ext/ARB/... ARB Approved http://docs.rackspacecloud.com/... Rackspace http://docs.nasa.org/... Nasa http://docs.citrix.com/.... Citrix ... ... Thursday, April 28, 2011
  • 26. 26 Vendor Identifiers • The idea is to help prevent clashes between extensions. – RAX-PIE • NonXML media types (JSON), headers, parameters – http://docs.rackspacecloud.com/servers/api/ext/pie/v1.0 • XML based media types • Extensions are likely to be implemented by middleware, clashes are likely unless we standardize on an approach Extension 2, add “shared” attribute Two extensions add a “shared” attribute one will override the other. Extension 1, add “shared” attribute API Thursday, April 28, 2011
  • 27. 27 Vendor Identifiers • The idea is to help prevent clashes between extensions. – RAX-PIE • NonXML media types (JSON), headers, parameters – http://docs.rackspacecloud.com/servers/api/ext/pie/v1.0 • XML based media types • Extensions are likely to be implemented by middleware, clashes are likely unless we standardize on an approach Extension 2, read “filter” We need some way to parameter Two extensions read a make sure extensions “filter” parameter, both will don’t clash with each be activated. Extension 1, read “filter” other and can co-exist parameter API Thursday, April 28, 2011
  • 28. 28 Vendor ID Registry • OpenStack should maintain a registry of Vendor IDs (prefix and namespaces). • Anyone should be able to register a Vendor ID. There shouldn’t be a process by which you get approved or anything. Anyone should be able to register a vendor id. Thursday, April 28, 2011
  • 29. 29 Data Extensions • Add additional Data. – In XML, attribute may be added to elements so long as they are in the extension namespace – In XML, Elements added after last element assuming “Unique Particle Attribution” is not violated – In JSON, use alias followed by a colon “:” <image xmlns="http://docs.rackspacecloud.com/servers/api/v1.0" xmlns:RAX-PIE="http://docs.rackspacecloud.com/servers/api/ext/pie/v1.0" id="1" name="CentOS 5.2" serverId="12" updated="2010-10-10T12:00:00Z" created="2010-08-10T12:00:00Z" status="ACTIVE" RAX-PIE:shared="true" /> { "image" : { "id" : 1, "name" : "CentOS 5.2", "serverId" : 12, "updated" : "2010-10-10T12:00:00Z", "created" : "2010-08-10T12:00:00Z", "status" : "ACTIVE", "RAX-PIE:shared" : true } } Thursday, April 28, 2011
  • 30. 30 New Actions • In XML, actions are defined in the extension namespace • In JSON, use alias followed by a colon “:” for the action name <mount_volume xmlns="http://docs.rackspacecloud.com/servers/api/ext/cbs/v1.0" CBSID="123"/> { "RAX-CBS:mount_volume" : { "CBSID" : "123" } } Thursday, April 28, 2011
  • 31. 31 New Headers and States • With headers, append name with an X- followed by the alias – X-RAX-CBS-Header1: Value – X-RAX-CBS-Header2: Value • With states, use alias followed by a “:” <image xmlns="http://docs.rackspacecloud.com/servers/api/v1.0" xmlns:RS-PIE="http://docs.rackspacecloud.com/servers/api/ext/pie/v1.0" id="1" name="CentOS 5.2" serverId="12" updated="2010-10-10T12:00:00Z" created="2010-08-10T12:00:00Z" status="RAX-PIE:PrepareShare" progress="80" RS-PIE:shared="true" /> { "image" : { "id" : 1, "name" : "CentOS 5.2", "serverId" : 12, "updated" : "2010-10-10T12:00:00Z", "created" : "2010-08-10T12:00:00Z", "status" : "RAX-PIE:PrepareShare", "progress" : 80, "RS-PIE:shared" : true } } Thursday, April 28, 2011
  • 32. 32 New Resources • Extensions are always defined at /path/to/resource/ext/ext-alias/newResource All major resources can reference a /ext Thursday, April 28, 2011
  • 33. 33 Promoting Extensions Thursday, April 28, 2011
  • 34. 34 Specification Governance • In order to be successful extensions need to be governed • The architecture review board (ARB) is responsible for this. It... – Proposes and approves specification changes – Decides which extensions are promoted to the core API – Ensures that each core API provides a minimal set of widely applicable capabilities – Ensures conformance testing • Who’s in the ARB? – The exact makeup still needs to be determined – However, short term, probably OpenStack governance team in collaboration with the project team lead (PTL) of each team. • How does the ARB got about promoting extensions? Governance doesn’t necessarily need to be a The governance team heavy weight process... concerned with consistency bet ween +1 in an e-mail APIs.. ..team leads concern with functionality of their own service Thursday, April 28, 2011
  • 35. 35 ARB Approved Extensions • The ARB “blesses” an extension by making it an ARB-approved extension. • ARB-approved extensions use ARB as the vendor prefix. • An ARB-approved extension denotes – That the extension is being considered for the next revision of the specification OR – That extension is a niche extension that is very useful; it may not make it as a standard feature, but implementors are encouraged to implement it nonetheless, clients can rely on it being there in most cases. Thursday, April 28, 2011
  • 36. 36 Promotion Path • Extensions may follow a promotion path – Vendor Specific → ARB Approved → Core Feature • Some extensions may be developed by multiple vendors; these are known as Multi-Vendor extension, the prefix is MLTI. – Multi-Vendor (MLTI) → ARB Approved → Core Feature • An extension may start as a vendor specific extension and become a multi- vendor extension. – Vendor Specific → Multi-Vendor (MLTI) → ARB Approved → Core Feature Thursday, April 28, 2011
  • 37. 37 New Features Should Start as Extensions • This gives us the ability to try things out before a feature enters the standard. • Allows competing extensions to co-exist • That means that our API specs are written bottom-up rather than top-down – Implementations determine new features – The API is not designed in a vacuum Thursday, April 28, 2011
  • 38. 38 Promotion Path • Not all extensions should be promoted to core features – Extensions may implement niche functionality that doesn’t make sense in the core API. – Or they may implement functionality that can’t make it to core because it would prevent a particular backend from implementing the full set of core features. • Example: The ability to dynamically change the port number for a load balancer. – Most Load Balancers support this, but not all -- can’t be in the core – We can add that capability as an extension – This will be a pretty standard extension that will probably start off as an ARB-approved extension... Thursday, April 28, 2011
  • 39. 39 Challenges Thursday, April 28, 2011
  • 40. 40 Language Bindings • Extensions should be supported at the language binding layer – A simple approach may be to allow the language bindings themselves to be extensible, so that extensions may be simply added to an existing binding. Thursday, April 28, 2011
  • 41. 41 JSON and Collections • How do you extend the collection of public addresses below? – Where do you put additional attributes? { "networks" : { "public" : [ "67.23.10.132", "67.23.10.131" ], "private" : [ "10.176.42.16" ] } } Thursday, April 28, 2011
  • 42. 42 JSON and Collections • Obviously, you’d need to wrap the array into an object { "networks" : { "public" : { "EXT-H: hello" : "hi", "addresses": [ "67.23.10.132", "67.23.10.131" ] }, "private" : { "addresses" : [ "10.176.42.16" ] } } } Thursday, April 28, 2011
  • 43. 43 JSON and Collections • Work’s great but what do you call a collection of servers? { "servers" : [....] } Thursday, April 28, 2011
  • 44. 44 JSON and Collections • Servers? { "servers" : { “servers” : [ ... ] } } Thursday, April 28, 2011
  • 45. 45 JSON and Collections • I’d prefer having a single name for the array – It’s more generalizable...it always works... – Limits the introduction of entities not found in other representations { "servers" : { “values” : [ ... ] } } A common pattern for collections...others call the array “memebers” Thursday, April 28, 2011
  • 46. 46 JSON and Collections • There are other approach we can take ranging from generalizable “values” to ad hock. • Each approach has it’s advantages and disadvantages • It may be that there is no approach that’s truly JSONic when dealing with collections. • We want extensibility in JSON, but we want to avoid BadgerFish: { "alice" : { "bob" : { "$" : "david" , Using alias prefixes get "@xmlns" : { gives us a lot "charlie" : "http://some-other-namespace" , "$" : "http://some-namespace" } }, "charlie:edgar" : { "$" : "frank" , "@xmlns" : { "charlie": "http://some-other-namespace", "$" : "http://some-namespace" } }, "@xmlns" : { "charlie" : "http://some-other-namespace", "$" : "http://some-namespace" } } } Thursday, April 28, 2011
  • 47. 47 Summary Thursday, April 28, 2011
  • 48. 48 Why Extensions? • Stable Core with Support for Innovation • New features can come quickly without and in a backward compatible manner • Pluggability - allow supporting the capabilities of different backends • Ensure compatibility between different kinds of OpenStack deployments • Allow vendors to differentiate their products with niche features • Allow new features to be tested before they become part of the core Thursday, April 28, 2011
  • 49. 49 How Extensions? • Extensions are queryable via a GET to /extensions • An individual extension via GET to /extensions/{EXT-ALIAS} • To help prevent clashes between extensions, use aliases and namespaces: – RAX-PIE • NonXML media types (JSON), headers, parameters – http://docs.rackspacecloud.com/servers/api/ext/pie/v1.0 • XML based media types • Extensions can be promoted – Vendor Specific → ARB Approved → Core Feature – ARB Approved extensions likely part of the core distribution, likely to be implemented Thursday, April 28, 2011
  • 50. 50 Questions? Thursday, April 28, 2011