Jump to: navigation, search

Difference between revisions of "Poppy/Provider - Getting Started"

(Readiness)
(Building a Provider Driver)
 
(8 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
== Contributing ==
 
== Contributing ==
* [[Gerrit_Workflow | Contributing]]
+
* Read the [http://docs.openstack.org/infra/manual/developers.html Developer's Guide] on how to contribute
  
 
== Readiness ==
 
== Readiness ==
Line 19: Line 19:
 
** This could be as simple as one operator account and all services under that account are provisioned via Poppy.
 
** This could be as simple as one operator account and all services under that account are provisioned via Poppy.
  
== Building Your Provider Driver ==
+
== Getting Started with your Provider Driver ==
  
 
# Understand how the Poppy API is [[Poppy/Server_Architecture|architected]]
 
# Understand how the Poppy API is [[Poppy/Server_Architecture|architected]]
Line 31: Line 31:
 
## Add unit tests and functional tests for your driver.
 
## Add unit tests and functional tests for your driver.
 
## For each [https://github.com/stackforge/poppy/tree/master/poppy/provider/base provider function], map the appropriate calls to your API.  For a matrix of terms, please [http://poppy.readthedocs.org/en/latest/provider_details.html read here].
 
## For each [https://github.com/stackforge/poppy/tree/master/poppy/provider/base provider function], map the appropriate calls to your API.  For a matrix of terms, please [http://poppy.readthedocs.org/en/latest/provider_details.html read here].
### creating a new service (domains, origins, ttl's, restrictions)
+
 
### updating a service (domains, origins, ttl's, restrictions)
+
 
### deleting a service
+
==== Building a Provider Driver ====
### purging content for the whole site or a specific path
+
 
# Add an entry point in [https://github.com/stackforge/poppy/blob/master/setup.cfg setup.cfg] so that Poppy recognizes your wonderful new driver and operators can start to use it.
+
# [[Poppy/Provider - Getting Started/Poppy Features|Poppy Features]] you need to implement
 +
# Step by Step Instructions on [[Poppy/Provider - Getting Started/Building a Provider|Building a Provider]] (with Examples)
 +
# [[Poppy/Provider - Getting Started/Configuration|Configuring your Provider Driver]] to be available for use
 +
# Building a [[Poppy/Provider - Getting Started/Mimic Driver|Mimic Driver]] to mock your Provider API
 +
# Running [[Poppy/Provider - Getting Started/Poppy Conformance Tests|Conformance Tests]] against your new provider
 +
# Running [[Poppy/Provider - Getting Started/Poppy API Tests|API Tests]] using your new provider
 +
# Running [[Poppy/Provider - Getting Started/Poppy End to End Tests|End to End Tests]] with your new provider
  
 
==== Technical Requirements ====
 
==== Technical Requirements ====
  
* The provider driver must be compatible with OpenStack.  That means it must support py26,py27,py33,pypy,pep8.
+
* The provider driver must be compatible with OpenStack.  That means it must support py27,py34,pypy,pep8.
 
* Any third party library used must be available via the Pypi server.
 
* Any third party library used must be available via the Pypi server.
 
  
 
== Participating in the API Design Process ==
 
== Participating in the API Design Process ==

Latest revision as of 18:42, 29 January 2015

Contributing

Readiness

What limits exist within your CDN?

  • Max number of services per account?
    • Poppy will provision all services under one operator account. Depending on the operator, this could result in hundreds of thousands of services provisioned for a single account.
    • Poppy basically encourages a Reseller Model. Poppy currently does not have support for a Master/Sub Account model.
  • Purge restrictions/limits
    • Poppy does not limit how many purges a customer can perform.
  • CNAME restrictions
    • A poppy operator may choose to CNAME from operatorcdn.com -> providercdn.net, and have their customers CNAME to operatorcdn.com.
  • SSL conditions
    • Are there certain authorities that an SSL cert must be issued from for your CDN to accept it?

Logging and Billing

  • Where are detailed logs sent to (e.g. S3 Buckets, Swift Container, etc)
  • Do you have a method to identify services provisioned via Poppy as an OpenStack account for operator billing purposes?
    • This could be as simple as one operator account and all services under that account are provisioned via Poppy.

Getting Started with your Provider Driver

  1. Understand how the Poppy API is architected
  2. Understand the Mock CDN Provider for an basic example of what a provider implementation looks like.
  3. Understand the Provider Driver interface (abstract base classes) that must be conformed to, so that you know what features need to be implemented to interact with your own API's.
  4. Investigate some of the other provider implementations to get an idea of how to implement yours.
  5. Get familiar with the Service Object. This object is what is passed to the provider driver when creating/updating a configuration. The provider driver will need to parse through these properties and make the appropriate API calls to your API to create the configuration on your end.
  6. Get familiar with the Responder functions. These functions are called to create the response back into the Poppy system from your provider extension.
  7. Start building your provider driver.
    1. Make frequent and small commits and patches.
    2. Add unit tests and functional tests for your driver.
    3. For each provider function, map the appropriate calls to your API. For a matrix of terms, please read here.


Building a Provider Driver

  1. Poppy Features you need to implement
  2. Step by Step Instructions on Building a Provider (with Examples)
  3. Configuring your Provider Driver to be available for use
  4. Building a Mimic Driver to mock your Provider API
  5. Running Conformance Tests against your new provider
  6. Running API Tests using your new provider
  7. Running End to End Tests with your new provider

Technical Requirements

  • The provider driver must be compatible with OpenStack. That means it must support py27,py34,pypy,pep8.
  • Any third party library used must be available via the Pypi server.

Participating in the API Design Process

  • Join the #openstack-poppy channel where the team hangs out and participate in design discussions
  • Join and participate in the weekly Poppy meeting every Thursday : Meetings/Poppy
  • Contribute Blueprints for potential features that you think need to be incorporated into the Poppy API