Ubercart Integration Design Document

Events happening in the community are now at Drupal community events on www.drupal.org.
You are viewing a wiki page. You are welcome to join the group and then edit it. Be bold!

Documentation for this module has moved to community.aegirproject.org

This page exists merely as an archive

I've been trying for ages to get my thinking about this module down in some readable form. This document represents a first attempt, and I will try and update it as things become clearer.

Don't put feature requests in here. Submit them to the uc_hosting or hosting issue queues instead.

Components

I am starting to get an idea of what the final structure of this thing will be:

  • uc_hosting: This implements shared functions and classes, including the function to create a client based on an ubercart order and product.
  • uc_hosting_services: This goes on the Aegir site in a remote storefront scenario. It provides xmlrpc access to create clients and give them quotas and platform access. It also provides access to the quota usage statistics, and information about the available stuff on the Aegir site.
  • uc_hosting_products: This is where we put the ubercart function calls, attribute generation, etc... This module is intended to be used alone for the "my ubercart is on my aegir site" scenario, but implements hooks to allow uc_hosting_storefront to change the way it processes orders. It includes some sample products to help people get started.
  • uc_hosting_storefront: This is the remote storefront module. It is enabled alongside uc_hosting_products on an external site and uses uc_hosting_services to create the clients and sites on the Aegir site.
  • uc_hosting_wizard: A 4 step ajax form that walks the customer through submitting info for their first site, and choosing what options they want for their site, as well as payment. This form allows people to link to whatever step they want, letting it be used as part of a broader sales strategy.

Quota Units as Products Implementation

After a long discussion with ergonlogic, I came around to the view that this was the best implementation, and the most flexible one to implement. This would require the use of product kits to provide multi-site packages. For now the immediate strategy is to:

  1. Rebuild uc_hosting to reflect this new worldview in its current incarnation, along the lines of the new components structure, and eliminate phantom clients along the way.
  2. Provide a means, in aegir core ideally, to:
    • mark platforms as deprecated (LOCK might work for this); and
    • migrate platform access (would this require relationships between platforms, similar to Site Relationships? i.e., PlatformA is a [migration target|upgrade path] of PlatformB)

Design Goals

Goal Covered By Notes
Allow single-site products 1.0 alpha 2 This could use a demo case
Allow multi-site products In the current spec, this will require product kits
No human or admin action is required beyond confirming the new client's purchase 1.0 alpha 2
Recurring payments are, optionally, automatically debited from clients 1.0 alpha 3
Recurring payments automatically adjust based on usage of server resources 1.0 alpha 3
Clients have a simple, clear interface through which to manage and create their sites We will have to provide an alternative UC based interface?
A wizard allows a client to buy access and set up their first site all in one go 1.0 alpha 3
Have demo products that can be one-click installed Really, we need a uc export feature to be able to do this
Allowing another Drupal instance to sell accounts on the Aegir site 1.0 alpha 4
Make it unnecessary for users with a single site product to ever login to the main Aegir site 1.0 alpha 4

Wishlist:

  • A decent, ctools based, ubercart import function (see this and this... this and maybe this)
  • Allowing a Drupal 7 instance to sell accounts on the Aegir site
  • Packages as products. I see this as a possible spec for an eventual 2.0 branch.

Unanswered Questions

  1. How and when will people be billed? And what degree of control will uc_hosting offer over that?
  2. Aegir has clients & UC has clients. How are they related/distinct? How do we keep this clear to users/admins?

Partially Answered Questions

  1. How do we handle overlapping contracts cleanly?

Aegir hosting system

Group organizers

Group categories

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds: