Difference between revisions of "stoney core: Requirements"

From stoney cloud
Jump to: navigation, search
[unchecked revision][unchecked revision]
Line 2: Line 2:
 
* Use the new [[Application_Programming_Interface_(API)#REST_API | REST API]].
 
* Use the new [[Application_Programming_Interface_(API)#REST_API | REST API]].
 
* Use JavaScript framework for the web client.
 
* Use JavaScript framework for the web client.
** Use one of the following MVC-Javascript-Framework:
+
** Use [http://angularjs.org/ AngularJS] as base (perhaps starting with [https://github.com/angular/angular-seed Angular Seed]?)
*** [http://angularjs.org/ AngularJS]
+
*** Add [https://github.com/mgonto/restangular Restangular] to make it even easier to connect to the REST-API, see also this [http://stackoverflow.com/questions/16394089/how-to-access-the-services-from-restful-api-in-my-angularjs-page answer on stackoverflow]
**** Possibly use [https://github.com/mgonto/restangular Restangular] to make it even easier to connect to the REST-API, see also this [http://stackoverflow.com/questions/16394089/how-to-access-the-services-from-restful-api-in-my-angularjs-page answer on stackoverflow]
+
*** From [http://angular-ui.github.io/bootstrap/ angular-ui] use:
**** Possibly use [http://angular-ui.github.io/bootstrap/ angular-ui] to integrate with Bootstrap (use bootstrap3 branch)
+
**** [http://angular-ui.github.io/bootstrap/ UI-Bootstrap] to integrate with Bootstrap (note: you have to use bootstrap3 branch for now)
*** [http://emberjs.com/ ember]
+
**** [http://angular-ui.github.io/ui-utils/ UI-Utils] as needed
*** ([http://backbonejs.org/ Backbone], but requires additional libraries to get to the same functionality as Angular or Ember)
+
**** [https://github.com/angular-ui/ui-router UI-router] as needed
 +
**** [https://github.com/angular-ui/alias UI-Alias] as needed
 +
*** Integrate [http://requirejs.org/ RequireJS]
 
*** See [http://todomvc.com/ comparison based on a simple webapp]. All suggestions have corresponding Yii extensions.
 
*** See [http://todomvc.com/ comparison based on a simple webapp]. All suggestions have corresponding Yii extensions.
 
* Use HTML5 and not HTML 4.01, not transitional, not XHTML
 
* Use HTML5 and not HTML 4.01, not transitional, not XHTML
** Possibly use [http://getbootstrap.com/ bootstrap] (version 3) or [http://html5boilerplate.com/ HTML5 Boilerplate] (or [http://angular-ui.github.io/bootstrap/ angular-ui] when using angular) to get a working pre-defined environment including compat-shims for IE, etc.
+
** Use [http://getbootstrap.com/ bootstrap] (version 3) resp. [http://angular-ui.github.io/bootstrap/ AngularUI-Bootstrap] to get a working pre-defined environment including compat-shims for IE, etc.
  
 
* Testing
 
* Testing
 
** Use [http://pivotal.github.io/jasmine/ Jasmine] for JavaScript testing
 
** Use [http://pivotal.github.io/jasmine/ Jasmine] for JavaScript testing
 
** Use SeleniumHQ or [http://phantomjs.org/ PhantomJS] for automated testing
 
** Use SeleniumHQ or [http://phantomjs.org/ PhantomJS] for automated testing
 +
** Possibly use [http://gruntjs.com/] for the automated workflow
 
** Use static mock json objects under different URLs to provide mock server-side data for testing the webfrontend
 
** Use static mock json objects under different URLs to provide mock server-side data for testing the webfrontend
  

Revision as of 13:56, 11 December 2013

  • Testing
    • Use Jasmine for JavaScript testing
    • Use SeleniumHQ or PhantomJS for automated testing
    • Possibly use [1] for the automated workflow
    • Use static mock json objects under different URLs to provide mock server-side data for testing the webfrontend
  • Clean URLs
    • URLs are specified by stepping stone GmbH
    • URLs have to be bookmarkable
    • When using a MVC-Javascript-Framework, the URL will partially be managed by javascript and not directly reach the server, therefore either Yii or the webserver must be able to handle such URLs when a user directly accesses such a page (for example via a bookmark)
  • Interaction design
    • When directly accessing a URL and the session is invalid, the user must be forwarded to the requested page after successful authentication (clean referrer handling)
    • Back-Button must be working properly, even when using a single-page design (see above)
    • Make sure that filters, current page, etc. are preserved when going into detail view of an item and back again
  • Entry in the directory for the core module (selfcare)
    • Version
    • Maintenance
  • Billing (belongs to core and to the modules, here we have the basic functionality)
    • Price Plans
      • Provider price plans need to be able to be overridden by the resellers, so that they can have their own price plans
      • A Reseller should be able to set individual price plans per customer (not yet).
    • Currency
    • VAT (differentiate between the Swiss and foreign billing addresses)
    • Billing per Reseller or per Customer
    • Invoice
      • Classic paper invoice
      • PDF invoice
      • E-bill (for Swiss Customers)
      • Card payments (Postcard, Creditcard, ... wiht the corresponding gateway information)
    • Reseller discount
      • As a formula
      • or as a table with the discount steps
    • Whitelabel Billing


  • Billing (per Module)
    • Pricing
      • Base Fee for the service
      • Possible free items (for example
      • Formula (Quantity x price per item, 3 Gigabyte x 4.00 CHF/Gigabyte)
      • Free test period?


  • Cancellation of
    • Services
    • Display running period
    • Display the earliest cancellation date
    • Allow on-line cancellation
    • Allow cancellation for earliest cancellation date


  • Deletions of
    • Services
    • People
    • Customers
    • Resellers


  • Service-Transfer
    • From one person to another (in the same company).
    • From one person to another (another company, same reseller)? No yet.
    • From one person to another (another company, other reseller)? Not yet.
    • Keep Data? Default is FALSE (what this means is probably different per service)
    • Provisioning mode could be: transfer or transferwithdata, ...
  • Roles and rights.
    • Notes from the 20th of December 2012
    • sstMethod would probably be more like the API-Call in the form of a URI.
    • We need to define default Roles
      • Service Administrator -> Needs to be chosen
      • Service User -> Default Role
    • Shall we have the possibility to collect roles together in the form of groups
    • Forms
      • Either Different forms for the different functionality
      • Or define, which fields are read write, read only are not to displayed

The following LDIF is just a collection of ideas and needs to be simplified to reduce the hierarchy:

# Default Roller "VM Backup"
ou=roles,dc=foo-cloud,dc=org
uid=1234567,ou=roles,dc=foo-cloud,dc=org
sstRoleName: VM Backup
sstIsActive: TRUE
ou=api calls,uid=1234567,ou=roles,dc=foo-cloud,dc=org

ou=create,ou=account,ou=backup,ou=api calls,uid=1234567,ou=roles,dc=foo-cloud,dc=org

sstMethod: ou=create,ou=backup,ou=sections,ou=virtualization,ou=services,dc=foo-cloud,dc=org
sstReadWrite: quota
sstReadWrite: userPassword
ou=delete,ou=api calls,uid=1234567,ou=roles,dc=foo-cloud,dc=org
sstReadOnly: givenName
sstReadOnly: surname

sstMandatory?

sstMethod: ou=delete,ou=backup,ou=sections,ou=virtualization,ou=services,dc=foo-cloud,dc=org
  • How and where do we store the possible api-calls and the corresponding fields in the directory for the core and service?
  • How do want to display and/or list the roles without overwhelming the users?
  • Different default roles for different person types (reseller, customer, provider)
  • Service restriction is possible per user in his roles?
  • Support Switch-User (with Switch Back)
    • Hierarchical Switches are not supported, meaning: if you want to change into the role of a second user, you need to leave (switch back) the role of the first user.
    • Where shall we display this information?
    • Shall we add new editing functionalities by the people listing at the end of the table lines? A pop menu (a bit like in Alfresco).
    • Would be valid for all other screens as well.


  • Password
    • Change password.
    • Forgot password (the owner of the mail account is guide to the password retrieval process).
    • Reset password (and send newly created credentials to either person logged in oder to the owner of the mail account).

Provider View

  • Reseller
    • Add
    • Modify
    • Delete
    • List
  • People of Reseller
    • Add
    • Modify
    • Delete
    • List
  • Employees
    • Add
    • Modify
    • Delete
    • List
  • Modules
    • The actual module installation happens via ebuild (deployment of the code)
    • Load/Install new modules (update the configuration file)
    • Configure Modules (configuration / defaults)
    • Release Module for single, multiple or all Resellers

Reseller View

  • Modules
    • Configure Modules (configuration / defaults)
    • Release Module for single, multiple or all Customers