This proposal is to introduce a new feature called CloudStack Marketplace. The functionalities are broken down into two parts: version 1.0 and future enhancements.

Version 1.0

Below are core components of version 1.0:

  1. Source code for the Marketplace client, which will be included in Apache CloudStack. Marketplace client can be installed along with CloudStack management server and provides the Marketplace UI to the admins and users. The Marketplace client points to various listing repositories specified by the admin. Through the Marketplace UI, admins and users can see which products and services they can consume with their CloudStack deployment.
  2. Listing repositories contain product listings contributed by vendors including ISVs, SaaS and PaaS providers, etc. There will not be an Apache CloudStack hosted and managed listing repository based on the community feedback. Any third party can set up its own private or public listing repositories. 

Use Cases

Version 1.0 will support vendor products and services distributed in the forms of image templates, bootable ISOs, non-bootable ISOs, and SaaS/PaaS offerings.

Vendors Make Listing Contribution

The listing repository contains a config.js file and vendor product folders. The config.js file contains an index of the listings, which will be read by the Marketplace UI to build the Marketplace Homepage. The Listing folders contain metadata and supporting files for each product listing, which will be read by the Marketplace UI to build the Details page for each listing.

For image templates and ISOs, vendors can contribute a product listing following these steps:

  1. Create a listing folder for its product in the listing repository.
  2. Create a listing.js file and place it in the folder. The listing.js file includes metadata for the listing:
    1. Product name
    2. Vendor name
    3. A brief description
    4. Location of the graphics
    5. Metadata for associated templates and ISOs. Templates and ISO metadata should include location of where the actual image template and ISO data file. Multiple template and ISO metadata can be included in the same product listing to cover multiple hypervisor support and multiple product versions. 
    6. Tags (TBD)
  3. (Optional) Place any supporting files such as graphics and image template/ISO data files into the listing folder. Note that these files can be located in other places.
  4. Add an entry to the config.js file for the listing.

For PaaS/SaaS, vendors can contribute a service listing following these steps:

  1. Create a listing folder for its service in the listing repository.
  2. Create a listing.js file and place it in the folder. The listing.js file includes metadata for the listing:
    1. Service name
    2. Vendor name
    3. A brief description
    4. Location of the graphics
    5. (Optional) Admin instruction. Admin instruction are steps that admin needs to follow in order to set up services for users. It can be left blank if no initial set up is required.
    6. "use service" action. Vendor needs to specify what happens when user clicks on the action button "use service". It can lead to a URL or scripts that can be invoked by the web browser. 
    7. Tags (TBD)
  3. (Optional) Place any supporting files such as graphics and scripts into the listing folder. Note that these files can be located in other places. 
  4. (Optional) Place plugin in the CloudStack source code repository plugin folder. If a plugin is required for the CloudStack, you can place it in the CloudStack plugin folder in the source code tree. Or you can store it externally and instruct admins how to download and install the plugin as part of the admin instruction.
  5. Add an entry to the config.js file for the listing.

Admins Install and Configure CloudStack Marketplace

CloudStack Marketplace client can be installed along with CloudStack management server. Admins can configure the following global settings for the Marketplace client:

Admins and Users Access CloudStack Marketplace

There are two ways admins and users can access CloudStack Marketplace UI:

  1. From the CloudStack UI after login, link to Marketplace is on the left or top navigation bar.
  2. From the http://<cloudstack management server>/marketplace. When accessing marketplace from here, no login is required until admin/user wants to take action on a listing (for example, create an instance). Without login, the user view of the marketplace is shown.

Use Image Templates and ISOs in CloudStack Marketplace

The following figure shows an example of how a product Detailed page looks like for image templates.

Bootable ISOs will be handled similarly. For non-bootable ISOs, instead of "create instance", user will be asked to "attach ISO" to an existing instance.

Use SaaS/PaaS in CloudStack Marketplace

The following figure shows an example of how a service Detailed page looks like.

Future Enhancement

The following are potential future enhancements:

FAQ

This proposal was presented at the CloudStack Collaboration Conference. Major changes have been made to the proposal after further discussion on the mailing list post the conference. Presentation slides for the conference (out dated) can be found at: http://www.slideshare.net/buildacloud/cloudstack-marketplace-v10. Here is a list of frequently asked questions from attendees at the conference.

  1. How does software licensing work for listings in Apache Listing Repository?  Software licensing is handled outside of the CloudStack Marketplace. If the software delivery formats are image templates or ISOs, the image files should be made available for download. Software licensing can be enforced by the vendor application itself once user launches the VM and application. This is similar to how traditional software licensing is handled today. For SaaS and PaaS, licensing will be handled by the vendor.
  2. How do vendor specify pricing for its software?  Vendors can put pricing information in the listing description, which will be visible to both admins and users viewing the listing details.
  3. How does CloudStack Marketplace work with UI plugins?  When the UI plugin framework becomes available, vendors have two options to provide CloudStack UI plugins. Option 1 is to place it in the CloudStack source code tree plugins folder. Option 2 is to place it externally and provide a link in the Marketplace listing to instruct the admin to download the plugin and configure it. UI plugin can be installed and configured independent of the CloudStack Marketplace.
  4. How does admin track usage of a listing?  v1.0 of the CloudStack Marketplace will not provide built-in usage tracking. Admin can list VM by template or ISO ID to track usages for each template and ISO. Admin can also use web stats tools to track the views and clicks on each listing.
  5. Can we align the listing file format with other open source cloud marketplace?  The marketplace feature is implemented (or plan to be implemented) a little differently by each open source cloud community. We will align as much as we can. In addition, we will enable tags to the listing to make it easier for other marketplace to consume our listings.