Merge branch 'release/1.4.1'

This commit is contained in:
rascencio 2015-06-16 00:31:08 -06:00
commit 3f5339129c
3 changed files with 199 additions and 3 deletions

View file

@ -0,0 +1,193 @@
=====================================
Ungleich Hosting WebApp Specification
=====================================
Author: Raul Ascencio
Contact: raul.ascencio@ungleich.ch
Version: 0.1
Date: 2015-06-11
Copyright © ungleich GmbH 2015
-----
Terms
-----
User
The end-user, person/entity who books/use one or more vm's.
Ungleich
The company agents/users the creators and admins ofr the ungleich hosting
webapp.
--------
Overview
--------
Ungleich hosting is a Plataform as a Service (PaaS) for multiple application
stack, offers multiple languages (ruby, python, javascript {node,io}.js),
application servers and databases.
Ungleich hosting let the user focus on being more productive, without having
to worry about the complexities of maintaining a production enviroment.
**This spec is not complete**, in fact it hasn't even be reviewed once, it
probably needs a couple of revisions to be accepted.
What the ungleich plataform offers:
- Stack management.
- Monitoring and alerting.
- High availability.
- Automatic aplication deployment.
- Ready to use stacks.
- Automated Management.
- User Access Management [?].
- Production Ready Services (Postgresql, Memcached, Redis...).
- Backups and redundancy.
- Full management and support for stack-related issues [?]
Avilable stacks:
**Ruby Stack**
- Load balancers:
- HAProxy
- Frameworks:
- Ruby on Rails
- ...
- Web Servers:
- NGINX
- ...
- Application Servers:
- Unicorn
- Passenger
- Puma [?]
- Databases:
- Postgresql
- Mysql [?]
- Mongodb [?]
- Caching:
- Memcached [?]
- Redis (people often use it for other things and it's nice to have) [?]
- Misc:
- Preinstalled gems (sidekiq/resque, )
**Python Stack**
- << Inserts Ruby Stack and replace:
- Application Servers:
- Gunicorn
- uWSGI
- Frameworks:
- Django
- ...
- Misc:
- Celery/Gearman
- ...
**Node Stack**
- << Inserts Ruby Stack and replace:
- Frameworks:
- Express
- Meteor
- Hoodie
- Databases:
- ...
- Couchdb (Hoodie)
- Misc:
- npm
- pm2
- browserify/requirejs/webpack
- ...
Brief summary of how it works:
1. The *User* goes to an Ungleich Hosting website to register.
2. Once logged in, the *User* get asked for his/her billing information to start
booking machines.
3. After the *User* inserts a 'valid' credit card he books a VM.
4. When a VM is booked the *User* is subscribed to a 'plan' that it's related
with the VM specs.
a. User can be asked for a public SSH key, this key can be used to access
to the server.
5. The subscription gets confirmed, *Ugleich* deploy the requested infrastructure
and stack.
6. *User* is notified that the new VM is ready to use.
7. The *User* access the new VM and deploys the Application.
-----------------------
Ungleich Hosting - Goal
-----------------------
As ungleich, we want to offer "Application Hosting" - pre-configured VMs plus
support for the technologies running on them, the VMs should be "clickable"
as in self service mid term.
--------------------------
Ungleich Hosting - Phase 0
--------------------------
This phase will deliver a fully functional webpage for railshosting, without the
capabilities of the 'ungleich hosting app', except from selecting an stack
ordering it by email and the user being subscribed to a plan (billing).
This phase will
Where this phase come from:
+ ...for the moment, it is enough if we generate a mail for every order
+ get rails-hosting.ch running so that somebody can order a VM including
payment
*********
Non Goals
*********
+ The VMs should be "clickable" as in self service.
+ End-User interface to manage their VMs.
************
Requirements
************
#. Feature
Description
1. *Ungleich* provides a service overview page
2. *Ungleich* provides a sign up page for users who want to
try the private beta of the service
3. *Ungleich* let *Users* upload their public SSHs keys
4. *Users* can subscribe to their choosen hosting plan.
5. Notify *Users* when their VMs are ready.
6. *Users* can access to their VMs using the uploaded SSHs keys.
7. *Users* can view their billing history.
8. *Users* are capable of canceling their plans.
9. *Users* are notified every time a new invoice is sucefully charged.
10. *Users* are notified every time their invoices fail to charge.
11. *Users* can add credit cards to their accounts.
12. *Users* can see a detail of every invoice.
13. *Users* can create multiple VMs.
14. *Users* can choose what SSHs keys will use for every VM.
15. *Users* can see the recent history of access to their VMs [?]
16. *Users* can edit their profiles.
17. *Users* can submit tickets to *Ungleich*
18. *Users* can configure DNS settings.
19. *Ungleich* can see the list of *Users*.
20. *Ungleich* can browse the VMs of all *Users*.
21. *Ungleich* is notified everytime an invoice fail to charge.
22. *Ungleich* provide help pages for every section of the site.
*******
Details
*******
...
--------------------------
Ungleich Hosting - Phase 1
--------------------------
This phase will deliver the foundations for most of the ungleich hosting app capabilities.
for the moment, it is enough if we generate a mail for every order

View file

@ -2,7 +2,11 @@
<!doctype html> <!doctype html>
<html> <html>
<head> <head>
<title>{% page_attribute "page_title" %}</title> <title>
{% block title %}
{% page_attribute "page_title" %}
{% endblock %}
</title>
{% addtoblock "external-css" %} {% addtoblock "external-css" %}
{% bootstrap_css %} {% bootstrap_css %}

View file

@ -1,11 +1,10 @@
{% extends "djangocms_blog/base.html" %} {% extends "djangocms_blog/base.html" %}
{% load i18n thumbnail cms_tags %} {% load i18n thumbnail cms_tags %}
{% load url from future %} {% load url from future %}
{% block meta_description %}{{ post.meta_description }}{% endblock meta_description %} {% block meta_description %}{{ post.meta_description }}{% endblock meta_description %}
{% block meta_keywords %}{{ post.meta_keywords }}{% endblock meta_keywords %} {% block meta_keywords %}{{ post.meta_keywords }}{% endblock meta_keywords %}
{% block canonical_url %}<link rel="canonical" href="{{ SITE.domain }}{{ view.get_view_url }}"/>{% endblock canonical_url %} {% block canonical_url %}<link rel="canonical" href="{{ SITE.domain }}{{ view.get_view_url }}"/>{% endblock canonical_url %}
{% block title %}{{ post.get_title }}{% endblock %} {% block title %}{% page_attribute "page_title" %} - {{ post.get_title }}{% endblock %}
<!-- page header --> <!-- page header -->
{% block base_header %} {% block base_header %}
{% include "djangocms_blog/_header_post_detail.html" %} {% include "djangocms_blog/_header_post_detail.html" %}