Merge branch 'feature/rest-api-test'
diff --git a/.gitignore b/.gitignore
index edbd07d..61b07cd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,3 +11,5 @@
xos/core/xoslib/coverage
node_modules
xos/xos_configuration/*
+.idea/*
+xos.iml
diff --git a/xos/templates/README.md b/xos/templates/README.md
new file mode 100644
index 0000000..af46be9
--- /dev/null
+++ b/xos/templates/README.md
@@ -0,0 +1,5 @@
+# DJANGO TEMPLATES
+
+These are the templates used by the Django Application to render the UI.
+
+More information are available in the [Django Documentation](https://docs.djangoproject.com/es/1.9/topics/templates/)
\ No newline at end of file
diff --git a/xos/templates/cord_admin/base.html b/xos/templates/cord_admin/base.html
deleted file mode 100644
index db5ccbf..0000000
--- a/xos/templates/cord_admin/base.html
+++ /dev/null
@@ -1,287 +0,0 @@
-{% load admin_static %}{% load suit_tags %}{% load url from future %}<!DOCTYPE html>
-<html lang="{{ LANGUAGE_CODE|default:"en-us" }}" {% if LANGUAGE_BIDI %}dir="rtl"{% endif %}>
-<head>
- <title>{% block title %} {%if title %} {{ title }} | {% endif %} CORD {% endblock %}</title>
- <link rel="stylesheet" type="text/css" href="{% block stylesheet %}{% endblock %}"/>
- <link rel="stylesheet" type="text/css" href="{% static 'suit/bootstrap/css/bootstrap.min.css' %}" media="all"/>
- <link rel="stylesheet" type="text/css" href="{% static 'suit/css/suit.css' %}" media="all">
- <link rel="stylesheet" type="text/css" href="{% static 'xos.css' %}" media="all">
- <link rel="stylesheet" type="text/css" href="{% static 'cord.css' %}" media="all">
- {% block extrastyle %}{% endblock %}
- {% if LANGUAGE_BIDI %}<link rel="stylesheet" type="text/css" href="{% block stylesheet_rtl %}{% static "admin/css/rtl.css" %}{% endblock %}"/>{% endif %}
- <script type="text/javascript">window.__admin_media_prefix__ = "{% filter escapejs %}{% static "admin/" %}{% endfilter %}";</script>
- <script src="{% static 'suit/js/jquery-1.9.1.min.js' %}"></script>
- <script src="http://code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
- <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
- <script type="text/javascript" src="{% static 'log4javascript-1.4.6/log4javascript.js' %}"></script>
- <script type="text/javascript" src="{% static 'uploadTextarea.js' %}"></script>
- <script type="text/javascript" src="{% static 'observer_status.js' %}"></script>
-
- <script type="text/javascript">var Suit = { $: $.noConflict() }; if (!$) $ = Suit.$; </script>
- {% if 'SHOW_REQUIRED_ASTERISK'|suit_conf %}
- <style type="text/css">.required:after { content: '*'; margin: 0 0 0 5px; position: absolute; color: #ccc;}</style>
- {% endif %}
- {% block extrahead %}{% endblock %}
- {% block blockbots %}
- <meta name="robots" content="NONE,NOARCHIVE"/>{% endblock %}
- <link rel="shortcut icon" href="{% static 'favicon.png' %}">
-</head>
-{% load i18n %}
-
-<body class="{% if is_popup %}popup {% endif %}{% block bodyclass %}{% endblock %}">
-
-<div id="dialog-placeholder">
-<!-- This is a placeholder for dialog boxes, like the observer calendar -->
-</div>
-
-<!-- Sticky footer wrap -->
-<div id="wrap">
-
- <!-- Container -->
- {% block container %}
- <div id="container">
-
- {% block logo %}
- <a href="{% url 'admin:index' %}"><h1 id="site-name"><img class="logo" height="70" width="259" src="{% static 'open-cloud-login-themed-light.png' %}"/></h1></a>
- {% endblock %}
- {% block header %}
- {% if not is_popup %}
- <!-- Header -->
- <div id="header" class="header">
-
- <div id="branding">
- {% block quick-search %}
- {% with 'SEARCH_URL'|suit_conf as search_url %}
- {% if search_url %}
- <form class="form-search nav-quick-search" autocomplete="off" action="{% if '/' in search_url %}{{ search_url }}{% else %}{% url search_url %}{% endif %}" method="GET">
- <i class="input-icon icon-search"></i>
- <input type="text" name="q" class="input-medium search-query" id="quick-search">
- <input type="submit" class="submit" value="">
- </form>
- {% endif %}
- {% endwith %}
- {% endblock %}
- </div>
-
- {% block header_time %}
- <div id="branding2">
- <!--<div class="header-content header-content-first">
- <div class="header-column icon">
- <i class="icon-time"></i>
- </div>
- <div class="header-column">
- <span class="date"> {% suit_date %}</span><br>
- <span class="time" id="clock">{% suit_time %}</span>
- </div>
- </div>-->
-
- {% endblock %}
-
- {% block header_content %}
- <!--<div class="header-content">
- <div class="header-column icon">
- <i class="icon-comment"></i>
- </div>
- <div class="header-column">
- <a href="" class="grey"><b>2</b> new messages</a>
- </div>
- </div>-->
- {% endblock %}
-
- {% if user.is_active and user.is_staff %}
- <div id="user-tools">
- {% trans 'Welcome,' %}
- <a href="http://{{ request.get_host}}/admin/core/user/{{user.id}}">{{user.email}}</a>
- <span id="observer-status"></span>
- <span class="user-links">
- {% block userlinks %}
- {% url 'django-admindocs-docroot' as docsroot %}
- {% if docsroot %}
- <a href="http://guide.xosproject.org/">{% trans 'Documentation' %}</a>
- <span class="separator">|</span>
- {% endif %}
- <a href="{% url 'admin:password_change' %}">{% trans 'Change password' %}</a>
- <span class="separator">|</span>
- <a href="{% url 'admin:logout' %}">{% trans 'Log out' %}</a>
- </span>
- {% endblock %}
- </div>
- {% endif %}
-
- {% block nav-global %}{% endblock %}
-
- </div>
- </div>
- {% endif %}
- <!-- END Header -->
- {% endblock %}
-
-
- <div class="suit-columns {{ is_popup|yesno:'one-column,two-columns' }}">
-
- {% block content-center %}
- <div id="suit-center" class="suit-column">
-
- {% if not is_popup %}
- {% block minidash %}
- <div id=openCloudTopPage>
- {% include "admin/newminidashboard.html" %}
- </div>
- {% endblock %}
-
- {% block breadcrumbs %}
- <ul class="breadcrumb">
- <li><a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
- {% if title %}
- <span class="divider">»</span>
- </li>
- <li class="active">
- {{ title }}
- {% endif %}
- </li>
- </ul>
- {% endblock %}
- {% endif %}
-
- {% block messages %}
- {% if messages %}
-
- {% for message in messages %}
- <div class="alert alert-{% firstof message.tags 'info' %}">
- <button class="close" data-dismiss="alert">×</button>
- <strong>
- {% if message.tags %}{{ message.tags|capfirst }}{% else %}
- Message{% endif %}!</strong>
- {{ message }}
- </div>
- {% endfor %}
- {% endif %}
- {% endblock messages %}
-
- <!-- Content -->
- <div id="content" class="{% block coltype %}colM{% endblock %} row-fluid">
- {% block pretitle %}{% endblock %}
- {% block content_title %}{% if title %}
- <h2 class="content-title">{{ title }}</h2>
- {% endif %}{% endblock %}
- {% block content %}
- {% block object-tools %}{% endblock %}
- {{ content }}
- {% endblock %}
- {% block sidebar_content %}
- {% block sidebar %}{% endblock %}
- {% endblock %}
- </div>
- <!-- END Content -->
- <span class="clearfix"></span>
- </div>
- {% endblock %}
-
-
- {% block content-left %}
- {% if not user.is_appuser %}
- {% if not is_popup %}
- <div id="suit-left" class="suit-column">
-
-
- {% include 'suit/menu.html' %}
-
- </div>
- {% endif %}
- {% endif %}
- {% endblock %}
-
- </div>
- </div>
- {% endblock %}
-
- {% if not is_popup %}
- <!-- Sticky footer push -->
- <div id="push"></div>
- {% endif %}
-
-</div>
-
-{% block footer %}
- {% if not is_popup %}
- <div id="footer" class="footer">
- <div class="content">
- <div class="tools">
- {% block footer_links %}
- <a href="http://djangosuit.com/support/" target="_blank" class="icon"><i class="icon-question-sign"></i>Support</a>
- <a href="http://djangosuit.com/pricing/" target="_blank" class="icon"><i class="icon-bookmark"></i>Licence</a>
- <a href="http://github.com/darklow/django-suit/issues" target="_blank" class="icon"><i class="icon-comment"></i>Report a bug</a>
- {% endblock %}
- </div>
-
- <div class="statusMsg" id="statusMsg">
- <!-- this is a placeholder for xoslib views to display status messages -->
- </div>
-
- <!-- <div class="copyright">
- {% block copyright %}
- Copyright © 2013 DjangoSuit.com<br>Developed by <a href="http://djangosuit.com" target="_blank">DjangoSuit.com</a>
- {% endblock %}
- </div> -->
-
- <div class="branding">{% block footer_branding %}
- CORD
- {% endblock %}</div>
- </div>
- </div>
- {% endif %}
-{% endblock %}
-
- <script src="{% static 'suit/bootstrap/js/bootstrap.min.js' %}"></script>
- <script src="{% static 'suit/js/suit.js' %}"></script>
- <script type="text/javascript" src="//www.google.com/jsapi"></script>
- <!-- src="{% static 'xos_graphs.js' %}" -->
-
- {% block extrajs %}{% endblock %}
-<script src="http://d3js.org/d3.v3.js"></script>
- <div class="modal fade hide" id="chartsModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
- <div class="modal-dialog">
- <div class="modal-content">
- <!--<div class="modal-header">
- <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
- <h4 class="modal-title" id="myModalLabel">OpenCloud</h4>
- </div>-->
- <div class="modal-body" style="overflow-y:hidden; overflow-x:hidden;">
- <div class="chartContainer">
- <div class="row">
- <div class=" padding">
- </div>
- </div>
-
- <div class="row">
- <div class=" heading">
- <p id="chartHeading" class="heading">OpenCloud</p>
- </div>
- </div>
- <div class="row">
- <div class="padding"></div>
- <div class="padding"></div>
- </div>
- <div class="row">
- <div id="graph" class="graph">
- </div>
- </div>
- </div>
- <div id="graph_work" style="display:none"></div>
- </div>
- <!--<div class="modal-footer">
- <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
- </div>-->
- </div><!-- /.modal-content -->
- </div><!-- /.modal-dialog -->
- </div><!-- /.modal -->
-
-
-<script>
-
-
-
-
-</script>
-</body>
-</html>
diff --git a/xos/templates/cord_admin/base_site.html b/xos/templates/cord_admin/base_site.html
deleted file mode 100644
index 80d39fe..0000000
--- a/xos/templates/cord_admin/base_site.html
+++ /dev/null
@@ -1,57 +0,0 @@
-{% extends "admin/base.html" %}
-{% load admin_static %}
-
-{# Additional <head> content here, some extra meta tags or favicon #}
-{#{% block extrahead %}#}
-{#{% endblock %}#}
-
-
-{# Additional CSS includes #}
-{# {% block extrastyle %} #}
-{# {% endblock %} #}
-
-
-{# Additional JS files in footer, right before </body> #}
-{#{% block extrajs %}#}
-{# <script type="text/javascript" src="{% static 'js/my_project.js' %}"></script>#}
-{#{% endblock %}#}
-
-
-{# Footer links (left side) #}
-{#{% block footer_links %}#}
-{# <a href="/docs/" class="icon"><i class="icon-question-sign"></i>Documentation</a>#}
-{#{% endblock %}#}
-
-{# Additional header content like notifications or language switcher #}
-{#{% block header_content %}#}
-{# {{ block.super }}#}
-{# <div class="header-content">#}
-{# <!-- First icon column -->#}
-{# <div class="header-column icon">#}
-{# <i class="icon-home"></i><br>#}
-{# <i class="icon-cog"></i>#}
-{# </div>#}
-{# <div class="header-column" style="margin-right: 20px">#}
-{# <a href="/" class="grey">Front-end</a><br>#}
-{# <a href="" class="grey">One more link</a>#}
-{# </div>#}
-{# <!-- Second icon column -->#}
-{# <div class="header-column icon">#}
-{# <i class="icon-comment"></i>#}
-{# </div>#}
-{# <div class="header-column">#}
-{# <a href="" class="grey">5 new messages</a>#}
-{# </div>#}
-{# </div>#}
-{#{% endblock %}#}
-
-{# Footer branding name (center) #}
-{% block footer_branding %}
-CORD
-{% endblock %}
-
-
-{# Footer copyright (right side) #}
-{% block copyright %}
-{# Copyright © 2013 Client<br>Developed by <a href="http://yoursite.com" target="_blank">YourName</a> #}
-{% endblock %}
diff --git a/xos/templates/cord_admin/dashboard_base.html b/xos/templates/cord_admin/dashboard_base.html
deleted file mode 100644
index bde87c2..0000000
--- a/xos/templates/cord_admin/dashboard_base.html
+++ /dev/null
@@ -1,92 +0,0 @@
-{% extends "admin/base.html" %}
-{% load admin_static %}
-
-{% block extrahead %}
-<link rel="stylesheet" href="http://ajax.aspnetcdn.com/ajax/jquery.dataTables/1.9.0/css/jquery.dataTables.css">
-<link rel="stylesheet" type="text/css" href="{% static 'suit/css/suit.css' %}" media="all">
-<link rel="stylesheet" type="text/css" href="http://ajax.aspnetcdn.com/ajax/jquery.dataTables/1.9.0/css/jquery.dataTables_themeroller.css">
-<link rel="stylesheet" type="text/css" href="{% static 'xos.css' %}" media="all">
-<link rel="stylesheet" type="text/css" href="{% static 'cord.css' %}" media="all">
-<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
-<link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.7.2/leaflet.css" />
-<script src="http://cdn.leafletjs.com/leaflet-0.7.2/leaflet.js"></script>
-
-
-<!-- no need to include jquery here as it's already included by base.html. Including it multiple times will break mtuity statistics. -->
-<!-- src="http://code.jquery.com/jquery-1.9.1.js" -->
-
-<script src="http://code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
-<script src="http://ajax.aspnetcdn.com/ajax/jquery.dataTables/1.9.4/jquery.dataTables.min.js"></script>
-<script type="text/javascript" src="{% static 'log4javascript-1.4.6/log4javascript.js' %}"></script>
-<script src="{% static 'js/Leaflet.MakiMarkers.js' %}" > </script>
-
-<script>
- $(function() {
- $( "#hometabs" ).tabs({active: 0, //event: "mouseover"
- //collapsible: true
- });
- });
-
-var consoleAppender = new log4javascript.BrowserConsoleAppender();
-var patternLayout = new log4javascript.PatternLayout("%d{HH:mm:ss,SSS} %l{s:l} %-5p - %m{1}%n");
-consoleAppender.setLayout(patternLayout);
-//var log = log4javascript.getDefaultLogger();
-var log = log4javascript.getRootLogger();
-log.addAppender(consoleAppender);
-log.setLevel(log4javascript.Level.ERROR);
-
-function confirmDialog(title,msg) {
- var dialog = $('<div>'+msg+'</div>');
- var def = $.Deferred();
-
- $(dialog).dialog({
- resizable: false,
- title: title,
- autoOpen: true,
- modal: true,
- dialogClass: "dashboard-hpc-instance",
- buttons: {
- 'OK': function() {
- def.resolve();
- log.debug("Chose to add a instance");
- $( this ).dialog( "close" );
- },
- 'Cancel': function() {
- def.reject();
- $( this ).dialog( "close" );
- }
- },
- close: {
- }
- });
- return def.promise();
-}
-
-function errorDialog(title,msg) {
- var dialog = $('<div>'+msg+'</div>');
- var def = $.Deferred();
-
- $(dialog).dialog({
- resizable: false,
- title: title,
- autoOpen: true,
- modal: true,
- dialogClass: "dashboard-hpc-instance",
- buttons: {
- 'OK': function() {
- def.resolve();
- $( this ).dialog( "close" );
- },
- },
- close: {
- }
- });
- return def.promise();
-}
-
-</script>
-{% endblock %}
-
-{% block content %}
-dashboard goes here
-{% endblock %}
diff --git a/xos/templates/cord_admin/login.html b/xos/templates/cord_admin/login.html
deleted file mode 100644
index a586acf..0000000
--- a/xos/templates/cord_admin/login.html
+++ /dev/null
@@ -1,161 +0,0 @@
-{% extends "admin/base_site_login.html" %}
-{% load i18n admin_static %}
-
-{% block extrastyle %}{{ block.super }}
-<link rel="stylesheet" type="text/css" href="/static/suit/bootstrap/css/bootstrap.min.css" media="all"/>
-<link rel="stylesheet" type="text/css" href="{% static "xos.css" %}" />
-<link rel="stylesheet" type="text/css" href="{% static "cord.css" %}" />
-<script src="{% static 'suit/js/jquery-1.9.1.min.js' %}"></script>
-<script src="http://code.jquery.com/ui/1.11.0/jquery-ui.js"></script>
-{% endblock %}
-
-
-{% block bodyclass %}login{% endblock %}
-
-{% block nav-global %}{% endblock %}
-
-{% block content_title %}{% endblock %}
-
-{% block breadcrumbs %}{% endblock %}
-
-{% block content %}
-{% if form.errors and not form.non_field_errors and not form.this_is_the_login_form.errors %}
-<p class="errornote">
-{% blocktrans count counter=form.errors.items|length %}Please correct the error below.{% plural %}Please correct the errors below.{% endblocktrans %}
-</p>
-{% endif %}
-
-{% if form.non_field_errors or form.this_is_the_login_form.errors %}
-{% for error in form.non_field_errors %}
-<p class="errornote">
- {{ error }}
-</p>
-{% endfor %}
-{% for error in form.this_is_the_login_form.errors %}
-<p class="errornote">
- {{ error }}
-</p>
-{% endfor %}
-{% endif %}
-<div id="wrap">
-<div id="content-main">
-<h1><i class="icon-lock icon-white"></i> OpenCloud</h1>
-<form action="{{ app_path }}" method="post" id="login-form">{% csrf_token %}
- <div class="form-row">
- {% if not form.this_is_the_login_form.errors %}{{ form.username.errors }}{% endif %}
- {{ form.username }}
- </div>
- <div class="form-row">
- {% if not form.this_is_the_login_form.errors %}{{ form.password.errors }}{% endif %}
- {{ form.password }}
- <input type="hidden" name="this_is_the_login_form" value="1" />
- <input type="hidden" name="old_next" value="{{ next }}" />
- <input type="hidden" name="next" value="/loggedin/?orig_next={{ next }}" />
- </div>
- <div class="submit-row">
- <input type="submit" class="btn btn-info" value="{% trans 'SIGN IN' %}" />
- </div>
- <div id="requestAccountLink">{% trans 'Request a new Account' %}</div>
-</form>
-
-<div id="request-account-form" title="Request an Account" style="display: none;">
- <form>
- <fieldset>
- <div class="request-form-row">
- <label for="request-first-name">First Name</label>
- <input type="text" name="request-first-name" id="request-first-name">
- </div>
- <div class="request-form-row">
- <label for="request-last-name">Last Name</label>
- <input type="text" name="request-last-name" id="request-last-name">
- </div>
- <div class="request-form-row">
- <label for="request-email">Email</label>
- <input type="text" name="request-email" id="request-email">
- </div>
- <div class="request-form-row">
- <label for="request-site-name">Site</label><br>
- <select id="request-site-name" name="request-site-name">
- <option>---------</option>
- {% for site in sites %}
- {% if site.allowNewUsers %}
- <option>{{ site.name }}</option>
- {% endif %}
- {% endfor %}
- </select>
- </div>
- <div class="submit-row">
- <input id ="request-signup" class="btn btn-info" value="SIGN UP">
- </div>
- </fieldset>
- </form>
-</div>
-</div>
-</div>
-
-
-<script type="text/javascript">
-$(function() {
- initRequest();
-});
-function initRequest(){
- $.ajax({
- url: '/tenantview',
- dataType: 'json',
- success: function (data) {
- var sites = data['sitesToBeRequested'];
- console.log(sites);
- for (site in sites){
- $("#request-site-name").append("<option>" + site + "</option>");
- }
- }
- });
-}
-$("#requestAccountLink").unbind().click(function(){
- $("#request-account-form").dialog({
- autoOpen: false,
- modal: true,
- dialogClass: "requestDialog",
- });
- $("#request-account-form").dialog("open");
-})
-$("#request-signup").unbind().click(function(){
- $.ajax({
- url: '/requestaccess/',
- dataType: 'json',
- data: {
- email: $("#request-email").val(),
- firstname: $("#request-first-name").val(),
- lastname: $("#request-last-name").val(),
- site: $("#request-site-name").val(),
- csrfmiddlewaretoken: "{{ csrf_token }}", // < here
- state: "inactive"
- },
- async: false,
- type: 'POST',
- success: function (response) {
- if (response && response.error) {
- if (response.error == "already_approved") {
- alert("Your request has already been proccessed and approved. We are sending you another email with a new temporary password");
- return;
- } else if (response.error == "already_pending") {
- alert("Your request is already pending and awaiting approval");
- return;
- } else if (response.error == "is_deleted") {
- alert("Your user record is in a deleted state. Please contact OpenCloud support");
- return;
- }
- }
- $("#request-account-form").dialog("close");
- alert("Your request has been submitted");
- },
- error:function (xhr, textStatus, thrownError){
- alert("Error:", textStatus + " " + xhr.responseText);
- }
- });
-})
-document.getElementById('id_username').focus()
-</script>
-</div>
-</div>
-{% endblock %}
diff --git a/xos/templates/registration/logged_out.html b/xos/templates/registration/logged_out.html
deleted file mode 100644
index 476a713..0000000
--- a/xos/templates/registration/logged_out.html
+++ /dev/null
@@ -1,12 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load i18n %}
-
-{% block breadcrumbs %}<div class="breadcrumbs"><a href="{% url 'admin:index' %}">{% trans 'Home' %}</a></div>{% endblock %}
-
-{% block content %}
-
-<p>{% trans "Thanks for spending some quality time with the Web site today." %}</p>
-
-<p><a href="{% url 'admin:loggedin' %}">{% trans 'Log in again' %}</a></p>
-
-{% endblock %}
diff --git a/xos/xos/config.py b/xos/xos/config.py
index 50b04d0..8ae7816 100644
--- a/xos/xos/config.py
+++ b/xos/xos/config.py
@@ -82,6 +82,7 @@
try:
if os.path.isdir(filename):
config_list = list(reversed(os.listdir(filename)))
+ config_list.remove('README.md')
config_list = [os.path.join(filename, s) for s in config_list]
self.config.read(config_list)
else:
diff --git a/xos/xos_configuration/README.md b/xos/xos_configuration/README.md
new file mode 100644
index 0000000..044d7e0
--- /dev/null
+++ b/xos/xos_configuration/README.md
@@ -0,0 +1,99 @@
+# Managing Configurations
+
+XOS comes with several pre-configured envirnments. The main available configurations are:
+
+- Frontend Only
+- - CORD
+Every configurations come with different settings and different features, from GUI elements to Services.
+
+__NOTE: in this folder files should not be added. They will broke the configuration system.__
+
+## Basic configuration
+
+A common configuration file is saved in `xos/configurations/common/xos_common_config`. In this file are stored all the common configurations for XOS.
+
+This is the base config:
+``
+[plc]
+name=plc
+deployment=plc
+
+[db]
+name=xos
+user=postgres
+password=password
+host=localhost
+port=5432
+
+[api]
+host=localhost
+port=8000
+ssl_key=None
+ssl_cert=None
+ca_ssl_cert=None
+ratelimit_enabled=0
+omf_enabled=0
+mail_support_address=support@localhost
+nova_enabled=True
+logfile=/var/log/xos.log
+
+[nova]
+admin_user=admin@domain.com
+admin_password=admin
+admin_tenant=admin
+url=http://localhost:5000/v2.0/
+default_image=None
+default_flavor=m1.small
+default_security_group=default
+ca_ssl_cert=/etc/ssl/certs/ca-certificates.crt
+
+[observer]
+pretend=False
+backoff_disabled=False
+images_directory=/opt/xos/images
+dependency_graph=/opt/xos/model-deps
+logfile=/var/log/xos_backend.log
+
+[gui]
+disable_minidashboard=True
+branding_name=Open Cloud
+#branding_css= #no branding css is provided by default
+branding_icon=/static/logo.png
+
+``
+
+## Extending configuration
+
+### How it works
+
+In some environment some changes to the configuration are needed, to achieve this XOS reads configurations from a `xos/xos_configuration`.
+
+All the configuration files in this folder will be parsed with [ConfigParser](https://docs.python.org/2/library/configparser.html).
+
+### Exetending a configuration
+
+_An example is available in the CORD config_
+
+These are the basic step to extend a configuration.
+_From now we'll use `myConf` as placeholder for the current configuration._
+
+**Local Config**
+
+- In your configuration create a new config file named: `xos_<myConf>_config`
+Sample local config:
+``
+[gui]
+branding_name=A BRAND NAME
+branding_icon=/static/my_logo.png
+``
+
+_The file above will change the displayed brand name and the logo in the UI_
+
+**Makefile Changes**
+- Clean the configuration folder: `rm ../../xos_configuration/*`
+- - Add the common config: `cp ../common/xos_common_config ../../xos_configuration/`
+- - Add the local config: `cp ./xos_<myConf>_config ../../xos_configuration/`
+_IMPORTANT: this instructions have to be executed before `docker build`_
+
+
+