Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

 User Accounts will be available across Regions. User should be able to use the same account in all Regions. Switching between Regions should not require the user to sign-on in again

Templates

 CS Templates are currently zone specific. Templates should be available to all zones within a region. User should be able to migrate templates from one Region to another. This requires S3 like object store

...

Object Store: This feature assumes that S3 like object store is available. Either implemented in CloudStack or through integrationsthrough integration.

Templates, Snapshots, EIP and ELP work is not part of this spec. There are being tracked separately as per JIRA tickets mentioned above.

...

Usage records will be generated by each Region separately. Portal layer above CS should combine usage across Regions into a consolidated invoice.

Use cases

(Using external provisioning system)

  1. Create Account

    1. Create Account in the external provisioning system with unique Id.

    2. Using CS API create account in all regions using the unique Id created in step1 as UUID. CreateAccount API takes UUID as an optional parameter. When UUID is provided, CloudStack does not generate a UUID and instead will use external ID.
    4 A1 in Region1 (Region Id 1). Publish account creation event. External Id(UUID) for the Account should be same in all Regions. Account DB Ids could be different for each Region

5. Publish account creation event.  

  1. Update Account (update/disable/enable Account)

    After updating the account, account update event is published.

    Delete Account

    After account is successfully deleted, delete event is published.

    1. Update account in external provisioning system
    2. Update account in all region via API.
    3. Publish account update event

  2. Delete Account

    1. Delete account in external provisioning system
    2. Delete account in all regions via API
    3. Publish account delete event
  3. Login to Region A and move to Region B without providing credentials

Similarly for users and domains.

Architecture and Design description

...

Table

Columns

Description

region

id
name
end_point 

Integer - Unique Id of the Region. Number regions are expected to be small, hence using integer instead of long
Name of the Region. Should be unique.
Region end_point. e.g http://10.147.30.11:8080/client

 

 

 

Data synchronization

Accounts:

...

...

The same applies for Domains and Users.

Create: For any resource created in Region A, MS is Region A  will publish an event along with external Id of the resource.

Update/Remove: For any resource modification in Region A, MS is Region A  will publish an event along with external Id of the resource.

Event framework

Events are published using the event framework. Cloud operator is expected to implement consumers for these events and apply the changes in the peer regions.

Authentication

Once logged in User should be able to switch from one Region to another without providing credentials again

...

Registers a region into another region

Request Parameters:

  1. id: (int) Region Id 
  2. name: (String) Name of the Region
  3. endpoint: (String) Region end point. e.g. http://10.147.30.11:8080/client 

Response Parameters:

  1. id: Region Id 
  2. name: Name of the Region
  3. endpoint: Region end point

updateRegion

Updates region details

Request Parameters:

  1. id: (int)Region Id
  2. name: (String)Name of the Region
  3. endpoint: (String)Region end point. e.g. https://10.147.30.11:8080/client

Response Parameters:

  1. id: Region Id 
  2. name: Name of the Region
  3. endpoint: Region end point

removeRegion

Removes region from current region.

Request Parameters:

  1. id: (int)id of the Region to  be removed

Response Parameters:

  1. Boolean success

listRegions

list all Regions. Can be filtered by id or name

Request Parameters:

  1. id: list by Region Id
  2. name: (String)list by Region Name

Response Parameters (List):

  1. id: Region Id 
  2. name: Name of the Region
  3. endpoint: Region end point

getUser

Admin only API. Get user details by api_key. 

Parameters Request Parameters:

  1. userapikey: (String)Get user details by API key 

Response Parameters:

  1.  

Changes to existing APIs

  • createAccount 
    1. New parameters
      1. accountid : UUID of the account
      2. userid: UUID for the User
  • createUser
    • New parameter

...