Problem

There are many ISVs, SaaS/PaaS vendors providing value-added products and services on IaaS clouds. Unlike public cloud hosting providers such as Amazon and Rackspace, CloudStack is not deployed by a single entity. There are multiple deployments of CloudStack by service providers, enterprises and individuals. It becomes a challenge for ISVs, SaaS/PaaS vendors to make their products visible and easily consumable by various CloudStack-based clouds. It also becomes a challenge for anyone who deploys CloudStack to know whose products and services work with CloudStack and how to get a hold of them.

Proposal

This proposal is to introduce a new component called CloudStack Marketplace. It enables ISVs and SaaS/PaaS vendors to list their product and service offerings which can be viewed and easily consumed by any CloudStack deployments. The functionalities are broken down into two parts: version 1.0 (minimum viable product) and future enhancements.

Version 1.0

The goal is to release version 1.0 with the subsequent release of CloudStack following v4.0. Below are core components of version 1.0:

  1. Source code for the Marketplace client. Marketplace client is installed along with CloudStack management server. By default, it points to the listing repository in (2).
  2. A listing repository (URL with folder structure) for vendors to contribute listings. It provides a central place for vendors to contribute listings if they are willing to sign the Apache Contributor License Agreement.
  3. A listing contains one or more XML files, graphics and code that can be invoked by web browsers. Each listing will contain the following information:

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

Vendors place listing file, graphics and any associated template/ISO metadata files in the listing repository. For templates/ISOs, only metadata is stored in the listing repository, not the image. The Template/ISO metadata files should include URLs of where the images are located.

Admins Install and Configure CloudStack Marketplace

CloudStack Marketplace client is installed along with CloudStack management server. After installation, admins can see all listings in the listing repository URL. Admins can configure global settings for the Marketplace client:

For listings require admin intervention, admins can follow the instructions provided by vendors in the listing files to set up the services. Admins will then make these listings available to their users. For templates and ISOs, admins can import them into CloudStack so that when users create VMs from them, launch time is shorter.

Users Consume Products and Services

For listings containing templates and ISOs only, users should be able to select the template or ISO, and create instance directly from the listing (or attach ISO to an existing VM). If the template or ISO is not yet imported by either the admins or the user, it will be imported first.

For SaaS and PaaS listings, the listing page should provide instructions or workflow for user to follow to use the service. Instruction/workflow could be in the form of text, URL or browser-compatible code.

Future Enhancement

The following are potential future enhancements:

Discussion Topics

  1. Component name - I am calling it “Marketplace” tentatively in search for a final name. There is no intention for this component to handle transaction or billing. Some other names I found online are: app store, app library, app catalog. The name will likely be reflected in the UI. Ideally, the name should be most suitable for version 1.0 and is future proof. Any other ideas? What’s your preference and why?