GithubHelp home page GithubHelp logo

yannickb / odoo-hosting Goto Github PK

View Code? Open in Web Editor NEW
64.0 64.0 50.0 7.95 MB

License: Other

Python 91.27% Shell 0.84% Perl 1.27% HTML 0.09% CSS 1.45% JavaScript 3.54% Ruby 0.81% SaltStack 0.28% Makefile 0.45%

odoo-hosting's People

Contributors

errafaym avatar gitter-badger avatar jcdrubay avatar katyukha avatar lasley avatar marcetiennedery avatar michielbdejong avatar nicolas-petit avatar openexpertiz avatar skornous avatar yannickb avatar yenthe666 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

odoo-hosting's Issues

Clouder Website

Hello everyone,

Today Clouder has only backoffice modules, which means there is currently no way to deploy automatically a container or a base just by making a visitor filling a form.

We need to develop a website_clouder module, which will :
-Display the list of applications which are available to buy.
-Make it so the visitor can buy them (using website_sale module I guess)
-Create a container/base record, which will autodeploy it in the infrastructure.

Note that I think we shall manage the case where the Clouder managing the infra and the installation of clouder_website module are not in the same Odoo, so clouder_website shall contain hostname and user/password of the Clouder managing the infrastructure.

Later, we shall also develop some generic script we can use on non-Odoo and non-python based websites.

[8.0] Awesome work! Would the modules in 8.0 by considered 'stable' for production?

@YannickB ,

Thank you for your awesome work on this set of modules, and for keeping it OpenSource! This will be an incredible time-saver for me and i'm sure for many others with similar needs.

This is more of a question than an issue, however I wasn't sure where else to ask it. Would you consider the 8.0 branch of Clouder to be stable enough to be put into production?

I am about to setup my company's Odoo hosting infrastructure and I think Clouder is the tool I will use to do this. I'll start working with Clouder on a development instance first to test out the features before putting it into production, but I would be interested to know whether you think the project's modules (outside the unfinished folder) are production-ready, or whether this software should still be considered in alpha.

[8.0] Feature request: clouder_template_open_xchange

@YannickB ,

I would like to request a new template module for Clouder for Open-Xchange:

http://www.open-xchange.com/

It is by far the best open-source webmail interface i've seen and the features allow for Microsoft Exchange style features. I use it because I can add multiple email addresses to a single webmail login among many other things, but I think it would be ideal for the clouder project.

I'll be creating an install script for this on Ubuntu 14.04 soon, and would be happy to submit a link if you like.

Error occurred while creating registry container

I connected the server. I want to create a registry container, but get this error:

Traceback (most recent call last):
File "/opt/odoo/odoo/openerp/http.py", line 537, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/opt/odoo/odoo/openerp/http.py", line 574, in dispatch
result = self._call_function(*_self.params)
File "/opt/odoo/odoo/openerp/http.py", line 310, in _call_function
return checked_call(self.db, *args, *_kwargs)
File "/opt/odoo/odoo/openerp/service/model.py", line 113, in wrapper
return f(dbname, _args, *_kwargs)
File "/opt/odoo/odoo/openerp/http.py", line 307, in checked_call
return self.endpoint(_a, *_kw)
File "/opt/odoo/odoo/openerp/http.py", line 803, in call
return self.method(_args, *_kw)
File "/opt/odoo/odoo/openerp/http.py", line 403, in response_wrap
response = f(_args, *_kw)
File "/opt/odoo/odoo/addons/web/controllers/main.py", line 944, in call_kw
return self._call_kw(model, method, args, kwargs)
File "/opt/odoo/odoo/addons/web/controllers/main.py", line 936, in _call_kw
return getattr(request.registry.get(model), method)(request.cr, request.uid, _args, *_kwargs)
File "/opt/odoo/odoo/openerp/api.py", line 241, in wrapper
return old_api(self, _args, *_kwargs)
File "/opt/odoo/odoo/openerp/api.py", line 336, in old_api
result = method(recs, _args, *_kwargs)
File "/opt/odoo/odoo/addons/clouder/clouder_model.py", line 310, in create
res.deploy()
File "/opt/odoo/odoo/openerp/api.py", line 239, in wrapper
return new_api(self, _args, *_kwargs)
File "/opt/odoo/odoo/addons/clouder/clouder_template_registry/clouder_template_registry.py", line 70, in deploy
return super(ClouderContainer, self).deploy()
File "/opt/odoo/odoo/openerp/api.py", line 239, in wrapper
return new_api(self, _args, *_kwargs)
File "/opt/odoo/odoo/addons/clouder/clouder_container.py", line 629, in deploy
self.purge()
File "/opt/odoo/odoo/openerp/api.py", line 239, in wrapper
return new_api(self, _args, *_kwargs)
File "/opt/odoo/odoo/addons/clouder/clouder_container.py", line 719, in purge
self.purge_key()
File "/opt/odoo/odoo/openerp/api.py", line 239, in wrapper
return new_api(self, _args, *_kwargs)
File "/opt/odoo/odoo/addons/clouder/clouder_container.py", line 786, in purge_key
self.fullname, self.home_directory + '/.ssh/config'])
File "/opt/odoo/odoo/openerp/api.py", line 239, in wrapper
return new_api(self, _args, *_kwargs)
File "/opt/odoo/odoo/addons/clouder/clouder_model.py", line 484, in execute_local
stderr=subprocess.STDOUT, shell=shell)
File "/usr/lib/python2.7/subprocess.py", line 679, in init
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1259, in _execute_child
raise child_exception
OSError: [Errno 13] Permission denied

The file odoo-server.log there is a record:

2015-08-04 15:28:32,412 13549 INFO pandaplus openerp.addons.clouder.clouder_model: command : /opt/odoo/odoo/addons/clouder/res/sed.sh www-panda1-registry_myservername /opt/odoo/.ssh/config
2015-08-04 15:28:32,427 13549 INFO pandaplus openerp.addons.clouder.clouder_model: ===================
2015-08-04 15:28:32,436 13549 INFO pandaplus openerp.addons.clouder.clouder_model: FAIL! Reverting...
2015-08-04 15:28:32,439 13549 INFO pandaplus openerp.addons.clouder.clouder_model: ===================
2015-08-04 15:28:32,455 13549 INFO pandaplus openerp.addons.clouder.clouder_model: This base container not be saved or the backup isnt configured in conf, skipping save container
2015-08-04 15:28:32,462 13549 INFO pandaplus openerp.addons.clouder.clouder_model: command : /opt/odoo/odoo/addons/clouder/res/sed.sh www-panda1-registry_myservername /opt/odoo/.ssh/config

I do not understand what is wrong in the file /opt/odoo/.ssh/config ?

Invoicing

Hello everyone,

We also need to develop a module which will manage the invoicing of the container / bases on Clouder. For example, each container / base are linked to a customer and each month the customer will be invoiced.

I have already started developing a module about it, with just the fields, I let you have a look.

Notice that, like for the website module we shall be able to separate the Odoo with the Clouder and the Odoo for the invoicing, for more flexibility.


More details :

We define in application object a non-required fixed price and a price grid for container and/or base. This price grid is based on data like the number of users of the application, number of visitors or order per month etc... Theses data are defined for each application in their template module and automatically recovered and stored in the Clouder instances.

For each line of the grid, we have as columns the data (many2one), the value, the price (float) and the price type (fixed price or *value)
For example we shall be able to manage theses behaviors
fixed price : 50$
price grid
nb users | 10 | 10 | fixed price
nb users | 50 | 30 | fixed price
nb users | 0 | 100 | fixed price
If we have 5 users, the price will be 50 + 10 = 60$
If we have 15 users, the price will be 50 + 30 = 80$
If we have 500 users, the price will be 50 + 100 = 150$

fixed price : 0$
price grid
nb users | 10 | 3 | *value
nb users | 50 | 2 | *value
nb users | 0 | 1 | *value
If we have 5 users, the price will be 0 + 5users * 3 = 15$
If we have 15 users, the price will be 0 + 15users * 2 = 30$
If we have 500 users, the price will be 0 + 500users * 1 = 500$

The fixed price and price grid can be overrided in container/base

Each period, theses prices will automatically generate a customer invoice.
Important, the invoice shall be able to be generated in another Odoo instance and not in the accounting department of the Clouder instance. In this case, the credentials of the Odoo instances shall be in the Clouder configuration.

For managing the period, we define in application and container/base the time between each invoice (1month, 6month, 1year etc...) and in container/base the date of the last invoice.

Case for managing Clouder instances
In the case we are hosting other Clouder instances, we may want to invoice depending of the application which are managed by the hosted Clouder instances.

So we shall manage in the Clouder master a fixed price/price grid politics for each application (through a one2many with the application code and the price politics). We shall have a default configuration in Clouder configuration, which can be overriden on the base.

The Clouder master contact the Clouder slave to indicate in a field the price each container/base on the Clouder slave will be invoiced. At the end of the period, a customer invoice is generated on the Clouder master and a supplier invoice is generated on the Clouder slave (both can be deported on another Odoo depending of their configuration).

The code for managing the concept of data value shall be in code clouder module
The code for managing data value shall be in each template module
The code for managing invoicing shall be in a clouder_invoicing module
The code for managing invoicing in Clouder master shall be in a clouder_invoicing_master module.

Error when adding the Base (last step in documentation)

hi,

i get an error if i try to add the Base.
this is the log

Traceback (most recent call last):
  File "/opt/odoo/odoo/openerp/http.py", line 537, in _handle_exception
    return super(JsonRequest, self)._handle_exception(exception)
  File "/opt/odoo/odoo/openerp/http.py", line 574, in dispatch
    result = self._call_function(**self.params)
  File "/opt/odoo/odoo/openerp/http.py", line 310, in _call_function
    return checked_call(self.db, *args, **kwargs)
  File "/opt/odoo/odoo/openerp/service/model.py", line 113, in wrapper
    return f(dbname, *args, **kwargs)
  File "/opt/odoo/odoo/openerp/http.py", line 307, in checked_call
    return self.endpoint(*a, **kw)
  File "/opt/odoo/odoo/openerp/http.py", line 803, in __call__
    return self.method(*args, **kw)
  File "/opt/odoo/odoo/openerp/http.py", line 403, in response_wrap
    response = f(*args, **kw)
  File "/opt/odoo/odoo/addons/web/controllers/main.py", line 948, in call_kw
    return self._call_kw(model, method, args, kwargs)
  File "/opt/odoo/odoo/addons/web/controllers/main.py", line 940, in _call_kw
    return checked_call(request.db, *args, **kwargs)
  File "/opt/odoo/odoo/openerp/service/model.py", line 113, in wrapper
    return f(dbname, *args, **kwargs)
  File "/opt/odoo/odoo/addons/web/controllers/main.py", line 939, in checked_call
    return getattr(request.registry.get(model), method)(request.cr, request.uid, *args, **kwargs)
  File "/opt/odoo/odoo/openerp/api.py", line 250, in wrapper
    return old_api(self, *args, **kwargs)
  File "/opt/odoo/odoo/openerp/api.py", line 345, in old_api
    result = method(recs, *args, **kwargs)
  File "/opt/odoo/odoo/addons/clouder/clouder_base.py", line 378, in create
    return super(ClouderBase, self).create(vals)
  File "/opt/odoo/odoo/openerp/api.py", line 248, in wrapper
    return new_api(self, *args, **kwargs)
  File "/opt/odoo/odoo/addons/clouder/clouder_model.py", line 310, in create
    res.deploy()
  File "/opt/odoo/odoo/openerp/api.py", line 248, in wrapper
    return new_api(self, *args, **kwargs)
  File "/opt/odoo/odoo/addons/clouder/clouder_base.py", line 595, in deploy
    res = self.deploy_create_database()
  File "/opt/odoo/odoo/openerp/api.py", line 248, in wrapper
    return new_api(self, *args, **kwargs)
  File "/opt/odoo/odoo/addons/clouder_template_odoo/clouder_template_odoo.py", line 218, in deploy_create_database
    ':' + self.service_id.port['hostport'])
  File "/usr/local/lib/python2.7/dist-packages/erppeek.py", line 438, in __init__
    self.server_version = ver = get_proxy('db').server_version()
  File "/usr/local/lib/python2.7/dist-packages/erppeek.py", line 401, in <lambda>
    wrapper = lambda s, *args: s._dispatch(name, args)
  File "/usr/lib/python2.7/xmlrpclib.py", line 1587, in __request
    verbose=self.__verbose
  File "/usr/lib/python2.7/xmlrpclib.py", line 1273, in request
    return self.single_request(host, handler, request_body, verbose)
  File "/usr/lib/python2.7/xmlrpclib.py", line 1303, in single_request
    response = h.getresponse(buffering=True)
  File "/usr/lib/python2.7/httplib.py", line 1051, in getresponse
    response.begin()
  File "/usr/lib/python2.7/httplib.py", line 415, in begin
    version, status, reason = self._read_status()
  File "/usr/lib/python2.7/httplib.py", line 379, in _read_status
    raise BadStatusLine(line)
BadStatusLine: ''

thx for your help.

LDAP and SSO

Hello everyone,

I'd like to give you the vision I have regarding the uses cases of Clouder, from a professional hosters perspective.

A professional hosters will want to manage the following case :
-Create containers for each of his customers (mono customer container)
-Create bases for each of his customers (mono customer base)
-Create one or several container or base, and then give access to some of them to their customers (multi customer container/base). Imagine for example a seafile application with one hundred customer using it, each having 25Go available for them.

We can easily manage the first two case today, but the later will be more difficult. Here is how I see it :
The customer will go on the hoster website and buy the access
The customer info is stored into Clouder and exported into an LDAP which is accessible by the applications.
The applications often have an LDAP module we can use. We use ldap tag or group to know which customer should access to which application.
We use an SSO system (CAS?) so the customer only have to login one time to access to all of his applications.

I want it to be as easy to use as google services, you buy your access, you login once and then you can access to all your application which are linked between them. This is the ultimate goal of Clouder, making so everyone can easily deploy an hosting infrastructure as easy to use as Google, but fully based on open-source applications.

So as you understood, we need to have an ldap and and sso container. I propose openldap and CAS, and I already started to develop some modules with them but I quickly understood it was out of my league, so I'll need your help to prepare theses very important containers.

Error when build the base

I got this error:
Traceback (most recent call last):
File "/opt/odoo/odoo/openerp/http.py", line 537, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/opt/odoo/odoo/openerp/http.py", line 574, in dispatch
result = self._call_function(*_self.params)
File "/opt/odoo/odoo/openerp/http.py", line 310, in _call_function
return checked_call(self.db, *args, *_kwargs)
File "/opt/odoo/odoo/openerp/service/model.py", line 113, in wrapper
return f(dbname, _args, *_kwargs)
File "/opt/odoo/odoo/openerp/http.py", line 307, in checked_call
return self.endpoint(_a, *_kw)
File "/opt/odoo/odoo/openerp/http.py", line 803, in call
return self.method(_args, *_kw)
File "/opt/odoo/odoo/openerp/http.py", line 403, in response_wrap
response = f(_args, *_kw)
File "/opt/odoo/odoo/addons/web/controllers/main.py", line 944, in call_kw
return self._call_kw(model, method, args, kwargs)
File "/opt/odoo/odoo/addons/web/controllers/main.py", line 936, in _call_kw
return getattr(request.registry.get(model), method)(request.cr, request.uid, _args, *_kwargs)
File "/opt/odoo/odoo/openerp/api.py", line 241, in wrapper
return old_api(self, _args, *_kwargs)
File "/opt/odoo/odoo/openerp/api.py", line 336, in old_api
result = method(recs, _args, *_kwargs)
File "/opt/odoo/odoo/addons/clouder/clouder_base.py", line 378, in create
return super(ClouderBase, self).create(vals)
File "/opt/odoo/odoo/openerp/api.py", line 239, in wrapper
return new_api(self, _args, *_kwargs)
File "/opt/odoo/odoo/addons/clouder/clouder_model.py", line 310, in create
res.deploy()
File "/opt/odoo/odoo/openerp/api.py", line 239, in wrapper
return new_api(self, _args, *_kwargs)
File "/opt/odoo/odoo/addons/clouder/clouder_base.py", line 595, in deploy
res = self.deploy_create_database()
File "/opt/odoo/odoo/openerp/api.py", line 239, in wrapper
return new_api(self, _args, *_kwargs)
File "/opt/odoo/odoo/addons/clouder_template_odoo/clouder_template_odoo.py", line 217, in deploy_create_database
user_password=self.admin_password)
File "/usr/local/lib/python2.7/dist-packages/erppeek.py", line 639, in create_database
user_password)
File "/usr/local/lib/python2.7/dist-packages/erppeek.py", line 383, in
wrapper = lambda s, _args: s._dispatch(name, args)
File "/usr/lib/python2.7/xmlrpclib.py", line 1578, in __request
verbose=self.__verbose
File "/usr/lib/python2.7/xmlrpclib.py", line 1264, in request
return self.single_request(host, handler, request_body, verbose)
File "/usr/lib/python2.7/xmlrpclib.py", line 1297, in single_request
return self.parse_response(response)
File "/usr/lib/python2.7/xmlrpclib.py", line 1473, in parse_response
return u.close()
File "/usr/lib/python2.7/xmlrpclib.py", line 793, in close
raise Fault(__self._stack[0])
Fault: <Fault could not connect to server: Connection refused
Is the server running on host "postgres" (172.17.0.252) and accepting
TCP/IP connections on port 5432?
: 'Traceback (most recent call last):\n File "/opt/versions/odoo-odoo/8.0.20150805.174255/parts/odoo/openerp/service/wsgi_server.py", line 75, in xmlrpc_return\n result = openerp.http.dispatch_rpc(service, method, params)\n File "/opt/versions/odoo-odoo/8.0.20150805.174255/parts/odoo/openerp/http.py", line 115, in dispatch_rpc\n result = dispatch(method, params)\n File "/opt/versions/odoo-odoo/8.0.20150805.174255/parts/odoo/openerp/service/db.py", line 73, in dispatch\n return fn(_params)\n File "/opt/versions/odoo-odoo/8.0.20150805.174255/parts/odoo/openerp/service/db.py", line 90, in exp_create_database\n _create_empty_database(db_name)\n File "/opt/versions/odoo-odoo/8.0.20150805.174255/parts/odoo/openerp/service/db.py", line 77, in _create_empty_database\n with closing(db.cursor()) as cr:\n File "/opt/versions/odoo-odoo/8.0.20150805.174255/parts/odoo/openerp/sql_db.py", line 575, in cursor\n return Cursor(self.__pool, self.dbname, self.dsn, serialized=serialized)\n File "/opt/versions/odoo-odoo/8.0.20150805.174255/parts/odoo/openerp/sql_db.py", line 181, in init\n self._cnx = pool.borrow(dsn)\n File "/opt/versions/odoo-odoo/8.0.20150805.174255/parts/odoo/openerp/sql_db.py", line 464, in _locked\n return fun(self, _args, *_kwargs)\n File "/opt/versions/odoo-odoo/8.0.20150805.174255/parts/odoo/openerp/sql_db.py", line 526, in borrow\n result = psycopg2.connect(dsn=dsn, connection_factory=PsycoConnection)\n File "/usr/lib/python2.7/dist-packages/psycopg2/init.py", line 164, in connect\n conn = _connect(dsn, connection_factory=connection_factory, async=async)\nOperationalError: could not connect to server: Connection refused\n\tIs the server running on host "postgres" (172.17.0.252) and accepting\n\tTCP/IP connections on port 5432?\n\n'>

Add another abstract layer between Clouder and Docker

Hello everyone,

Like some of you suggested, we today have many great tools to manage Docker instances. The goal of Clouder is not to replace them, it's to be the place where the informations about application/containers/base are stored.

Since I want to keep the minimum command in Clouder, I believe we have a missing software on the process between Clouder and Docker, I mean Clouder shall give order to this software and this software will then manage the containers. As we do for the registry, this software shall also be in a container created by Clouder.

Some of you suggested docker-compose, other rancher, any other suggestions ? We will probably have to make a choice, we need to make the good one.

Error while deploying container in debian.

I'm again trying a fresh install i encountered this problem while deploying my registry container
"Error : " + str(inst))) except_orm: (u'Connect error!', u"We were not able to connect to your server. Please make sure you add the public key in the authorized_keys file of your root user on your server.\nIf you were trying to connect to a container, a click on the 'reset key' button on the container record may resolve the problem.\nTarget : 192.168.1.5\nError : [Errno None] Unable to connect to port 14007 on or 192.168.1.5"
i checked my odoo log and was blocked while running "sudo docker run" saying missing "sudo" so i had to manually install sudo to make it work. i dont use ubuntu so it is needed to use sudo in docker run ?

Postfix : send mail from server and not from mandrill

Hello world,

After a whole day spent to try to send the mails of the mailing list from my server (and so not from the currently used mandrill), I have to give up I'll not be able to do it alone.

This is a concern for me because the mailing list of Odoo, used by the mailing list of goclouder.net, send for each answer a mail to each people who subscribed. So if we have one hundred people on the mailing list, one hundred mail will be send for each answer.
I have a free fair use of 12000 with mandrill, but I'm afraid to quickly reach this number when I'll start to promote Clouder and then I'll have to pay for the mailing list. That's why I tried to configure my postfix to directly send mail but all my mails finish in spam (ip not blacklisted, SPF ok, couldn't make DKIM work)

I give up and wait until someone correct and use the clouder_template_postfix module to send his email directly, and make it work for the mailing list of Odoo. I think we still need to add SPF and DKIM in it, here is the tutorial I used (french) :
https://www.skyminds.net/serveur-dedie-ajouter-lauthentification-spf-sender-id-et-dkim-a-postfix-et-bind9-avec-opendkim/

Also, until this is done, if someone has a working SMTP server I could connect with sasl to send the emails of the mailing list I'd greatly appreciate it.

Error when adding the Base

Hello:

i define the base and when save, this error appear:

Odoo Server Error

Traceback (most recent call last):
File "/opt/odoo/server/openerp/http.py", line 537, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/opt/odoo/server/openerp/http.py", line 574, in dispatch
result = self._call_function(*_self.params)
File "/opt/odoo/server/openerp/http.py", line 310, in _call_function
return checked_call(self.db, *args, *_kwargs)
File "/opt/odoo/server/openerp/service/model.py", line 118, in wrapper
return f(dbname, _args, *_kwargs)
File "/opt/odoo/server/openerp/http.py", line 307, in checked_call
return self.endpoint(_a, *_kw)
File "/opt/odoo/server/openerp/http.py", line 803, in call
return self.method(_args, *_kw)
File "/opt/odoo/server/openerp/http.py", line 403, in response_wrap
response = f(_args, *_kw)
File "/opt/odoo/server/openerp/addons/web/controllers/main.py", line 944, in call_kw
return self._call_kw(model, method, args, kwargs)
File "/opt/odoo/server/openerp/addons/web/controllers/main.py", line 936, in _call_kw
return getattr(request.registry.get(model), method)(request.cr, request.uid, _args, *_kwargs)
File "/opt/odoo/server/openerp/api.py", line 256, in wrapper
return old_api(self, _args, *_kwargs)
File "/opt/odoo/server/openerp/api.py", line 360, in old_api
result = method(recs, _args, *_kwargs)
File "/opt/odoo/server/openerp/custom/addons/clouder/clouder_base.py", line 378, in create
return super(ClouderBase, self).create(vals)
File "/opt/odoo/server/openerp/api.py", line 254, in wrapper
return new_api(self, _args, *_kwargs)
File "/opt/odoo/server/openerp/custom/addons/clouder/clouder_model.py", line 310, in create
res.deploy()
File "/opt/odoo/server/openerp/api.py", line 254, in wrapper
return new_api(self, _args, *_kwargs)
File "/opt/odoo/server/openerp/custom/addons/clouder/clouder_base.py", line 595, in deploy
res = self.deploy_create_database()
File "/opt/odoo/server/openerp/api.py", line 254, in wrapper
return new_api(self, _args, *_kwargs)
File "/opt/odoo/server/openerp/custom/addons/clouder_template_odoo/clouder_template_odoo.py", line 228, in deploy_create_database
user_password=self.admin_password)
File "/usr/local/lib/python2.7/dist-packages/erppeek.py", line 657, in create_database
user_password)
File "/usr/local/lib/python2.7/dist-packages/erppeek.py", line 401, in
wrapper = lambda s, _args: s.dispatch(name, args)
File "/usr/lib/python2.7/xmlrpclib.py", line 1587, in __request
verbose=self.__verbose
File "/usr/lib/python2.7/xmlrpclib.py", line 1273, in request
return self.single_request(host, handler, request_body, verbose)
File "/usr/lib/python2.7/xmlrpclib.py", line 1306, in single_request
return self.parse_response(response)
File "/usr/lib/python2.7/xmlrpclib.py", line 1482, in parse_response
return u.close()
File "/usr/lib/python2.7/xmlrpclib.py", line 794, in close
raise Fault(
*self._stack[0])
Fault: <Fault FATAL: password authentication failed for user "www_clouder_production"
FATAL: password authentication failed for user "www_clouder_production"

: 'Traceback (most recent call last):\n File "/opt/versions/odoo-clouder/8.0.20151216.191049/parts/odoo/openerp/service/wsgi_server.py", line 75, in xmlrpc_return\n result = openerp.http.dispatch_rpc(service, method, params)\n File "/opt/versions/odoo-clouder/8.0.20151216.191049/parts/odoo/openerp/http.py", line 115, in dispatch_rpc\n result = dispatch(method, params)\n File "/opt/versions/odoo-clouder/8.0.20151216.191049/parts/odoo/openerp/service/db.py", line 73, in dispatch\n return fn(_params)\n File "/opt/versions/odoo-clouder/8.0.20151216.191049/parts/odoo/openerp/service/db.py", line 90, in exp_create_database\n _create_empty_database(db_name)\n File "/opt/versions/odoo-clouder/8.0.20151216.191049/parts/odoo/openerp/service/db.py", line 77, in _create_empty_database\n with closing(db.cursor()) as cr:\n File "/opt/versions/odoo-clouder/8.0.20151216.191049/parts/odoo/openerp/sql_db.py", line 575, in cursor\n return Cursor(self.__pool, self.dbname, self.dsn, serialized=serialized)\n File "/opt/versions/odoo-clouder/8.0.20151216.191049/parts/odoo/openerp/sql_db.py", line 181, in init\n self._cnx = pool.borrow(dsn)\n File "/opt/versions/odoo-clouder/8.0.20151216.191049/parts/odoo/openerp/sql_db.py", line 464, in _locked\n return fun(self, *args, *_kwargs)\n File "/opt/versions/odoo-clouder/8.0.20151216.191049/parts/odoo/openerp/sql_db.py", line 526, in borrow\n result = psycopg2.connect(dsn=dsn, connection_factory=PsycoConnection)\n File "/usr/lib/python2.7/dist-packages/psycopg2/init.py", line 164, in connect\n conn = _connect(dsn, connection_factory=connection_factory, async=async)\nOperationalError: FATAL: password authentication failed for user "www_clouder_production"\nFATAL: password authentication failed for user "www_clouder_production"\n\n'>

I check the postgres container, and is online

regards

Error: Bug in img_postgres

There is a bug in the Postgres image. Since Postgres as updated to 9.4, the path use in the Dockerfile are now incorrect, resulting in an error during the build.

use updated URL for wkhtmltopdf downloads

Hello,

wkhtmltopdf has moved the downloads provider from SourceForge to gna.org. As mentioned in the linked message, all earlier downloads have been removed from SourceForge and you are strongly advised to migrate to the new URLs. The following files in your repository will need to be updated:

  • clouder_template_odoo/clouder_template_odoo_data.xml

It is recommended to either subscribe to the mailing list or Twitter feed to receive updates on new releases and further changes.

Thanks,
wkhtmltopdf maintainer

Next version

Hello guys

Just so you know, after the feedback I received last months I am working on a lot of improvement for Clouder, you can check them on the 'next' branch. Many of them are done to be more compatible with the docker way of doing.

-Removed the need of ssh (I didn't had docker exec when I made the first version)
-integration with connector to make asynchronous call,
-odoo will now be in three containers data/files/exec. Add the notion of package
-Add a one-click-install button which will install all the container for a standard infrastructure
-Remove the build in application (best use a data image for this purpose) and the concept of services (best deploy another container for this purpose)
-and some others

ETA end of november. Since I am removing some features (build in application and services) it's best I launch an open discussion about it, just in case.

Yannick.

Error when build the application

When I build the applicationI Odoo, I indicate the archive container and click on the build button, but I got this error(odoo-server.log):

2015-08-05 16:52:10,844 13549 INFO pandaplus openerp.addons.clouder.clouder_model: connect: ssh www-panda1-archive_panda1.pandaplus.biz
2015-08-05 16:52:10,858 13549 INFO pandaplus openerp.addons.clouder.clouder_model: ===================
2015-08-05 16:52:10,860 13549 INFO pandaplus openerp.addons.clouder.clouder_model: FAIL! Reverting...
2015-08-05 16:52:10,861 13549 INFO pandaplus openerp.addons.clouder.clouder_model: ===================
2015-08-05 16:52:10,867 13549 INFO pandaplus openerp.addons.clouder.clouder_model: connect: ssh www-panda1-archive_panda1.pandaplus.biz
2015-08-05 16:52:10,892 13549 ERROR pandaplus openerp.http: Exception during JSON request handling.
Traceback (most recent call last):
File "/opt/odoo/odoo/openerp/http.py", line 537, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/opt/odoo/odoo/openerp/http.py", line 574, in dispatch
result = self._call_function(*_self.params)
File "/opt/odoo/odoo/openerp/http.py", line 310, in _call_function
return checked_call(self.db, *args, *_kwargs)
File "/opt/odoo/odoo/openerp/service/model.py", line 113, in wrapper
return f(dbname, _args, *_kwargs)
File "/opt/odoo/odoo/openerp/http.py", line 307, in checked_call
return self.endpoint(_a, *_kw)
File "/opt/odoo/odoo/openerp/http.py", line 803, in call
return self.method(_args, *_kw)
File "/opt/odoo/odoo/openerp/http.py", line 403, in response_wrap
response = f(_args, *_kw)
File "/opt/odoo/odoo/addons/web/controllers/main.py", line 948, in call_button
action = self._call_kw(model, method, args, {})
File "/opt/odoo/odoo/addons/web/controllers/main.py", line 936, in _call_kw
return getattr(request.registry.get(model), method)(request.cr, request.uid, _args, *_kwargs)
File "/opt/odoo/odoo/openerp/api.py", line 241, in wrapper
return old_api(self, _args, *_kwargs)
File "/opt/odoo/odoo/openerp/api.py", line 363, in old_api
result = method(recs, _args, *_kwargs)
File "/opt/odoo/odoo/addons/clouder/clouder_application.py", line 291, in build
'archive_id': self.archive_id and self.archive_id.id})
File "/opt/odoo/odoo/openerp/api.py", line 239, in wrapper
return new_api(self, _args, *_kwargs)
File "/opt/odoo/odoo/addons/clouder/clouder_model.py", line 310, in create
res.deploy()
File "/opt/odoo/odoo/openerp/api.py", line 239, in wrapper
return new_api(self, _args, *_kwargs)
File "/opt/odoo/odoo/addons/clouder/clouder_application.py", line 414, in deploy
ssh = self.connect(self.archive_id.fullname)
File "/opt/odoo/odoo/openerp/api.py", line 239, in wrapper
return new_api(self, _args, *_kwargs)
File "/opt/odoo/odoo/addons/clouder/clouder_model.py", line 412, in connect
"Error : " + str(inst)))

This log archive containe:

command : /opt/odoo/odoo/addons/clouder/res/sed.sh www-panda1-archive_panda1.pandaplus.biz /opt/odoo/.ssh/config
command : rm -rf /opt/odoo/.ssh/keys/www-panda1-archive_panda1.pandaplus.biz
command : rm -rf /opt/odoo/.ssh/keys/www-panda1-archive_panda1.pandaplus.biz.pub
connect: ssh panda1.pandaplus.biz
command : rm -rf /opt/keys/www-panda1-archive_panda1.pandaplus.biz/authorized_keys
stdout :
stderr :
connect: ssh panda1.pandaplus.biz
connect: ssh panda1.pandaplus.biz
command : docker stop www-panda1-archive
stdout :
stderr : Error response from daemon: no such id: www-panda1-archive
Error: failed to stop containers: [www-panda1-archive]

command : sudo docker rm www-panda1-archive
stdout :
stderr : Error response from daemon: no such id: www-panda1-archive
Error: failed to remove containers: [www-panda1-archive]

command : rm -rf /opt/keys/www-panda1-archive_panda1.pandaplus.biz
stdout :
stderr :
connect: ssh panda1.pandaplus.biz
command : netstat -an | grep 14003
stdout :
stderr :
command : /opt/odoo/odoo/addons/clouder/res/sed.sh www-panda1-archive_panda1.pandaplus.biz /opt/odoo/.ssh/config
command : rm -rf /opt/odoo/.ssh/keys/www-panda1-archive_panda1.pandaplus.biz
command : rm -rf /opt/odoo/.ssh/keys/www-panda1-archive_panda1.pandaplus.biz.pub
connect: ssh panda1.pandaplus.biz
command : rm -rf /opt/keys/www-panda1-archive_panda1.pandaplus.biz/authorized_keys
stdout :
stderr :
command : ssh-keygen -t rsa -C [email protected] -f /opt/odoo/.ssh/keys/www-panda1-archive_panda1.pandaplus.biz -N
stdout : Generating public/private rsa key pair.

stdout : Your identification has been saved in /opt/odoo/.ssh/keys/www-panda1-archive_panda1.pandaplus.biz.

stdout : Your public key has been saved in /opt/odoo/.ssh/keys/www-panda1-archive_panda1.pandaplus.biz.pub.

stdout : The key fingerprint is:

stdout : 94:a8:f3:6c:91:91:d7:3c:db:72:84:5b:e4:71:52:78 [email protected]

stdout : The key's randomart image is:

stdout : +--[ RSA 2048]----+

stdout : | +oo |

stdout : | o + +.+E |

stdout : | + + = +. |

stdout : | . = B |

stdout : | o o S + o |

stdout : | + . o |

stdout : | + |

stdout : | . |

stdout : | |

stdout : +-----------------+

connect: ssh panda1.pandaplus.biz
command : mkdir -p /opt/keys/www-panda1-archive_panda1.pandaplus.biz
stdout :
stderr :
send : /opt/odoo/.ssh/keys/www-panda1-archive_panda1.pandaplus.biz.pub to /opt/keys/www-panda1-archive_panda1.pandaplus.biz/authorized_keys
command : sudo docker run -d --restart=always -p 14003:22 -v /opt/keys/www-panda1-archive_panda1.pandaplus.biz:/opt/keys --name www-panda1-archive localhost:14000/img_archive:1.20150805.144447
stdout :
stderr : Unable to find image 'localhost:14000/img_archive:1.20150805.144447' locally
Pulling repository localhost:14000/img_archive
Error: image img_archive:1.20150805.144447 not found

connect: ssh panda1.pandaplus.biz
command : docker stop www-panda1-archive
stdout :
stderr : Error response from daemon: no such id: www-panda1-archive
Error: failed to stop containers: [www-panda1-archive]

connect: ssh panda1.pandaplus.biz
command : docker start www-panda1-archive
stdout :
stderr : Error response from daemon: no such id: www-panda1-archive
Error: failed to start containers: [www-panda1-archive]

This base container not be saved or the backup isnt configured in conf, skipping save container

New server added, but registry impossible to create

This is the message i obtain when trying to create a registry container on a new server (my first one) :
"Connect error!

We were not able to connect to your server. Please make sure you add the public key in the authorized_keys file of your root user on your server.
If you were trying to connect to a container, a click on the 'reset key' button on the container record may resolve the problem.
Target : 149.202.38.100
Error : [Errno 111] Connection refused"

What public key is it asking for? the one in the server object in clouder OR the one of the server with clouder on it? In the second case, which public key must to be use (which user's key)?

I have an other question : where can we find the complete requirements to use clouder on the clouder server and on the managed server.

Additional application for ะกlouder

There is an idea, if you find it is not on the current topic, please tell me. I found that the model works Clouder can operate as a Configuration Management. Managing such an application as Ansible. Requires three functions that perform Clouder:
1.Connecting to the server via SSH.
2.Execution playbook.
3.And perform log collection.
There are three basic document. What do you think about this @YannickB?

Error when deploy odoo container

Hi,

I get this error when i try to deploy the odoo or clouder container:

ValidateError
Error while validating constraint
Data error!
You need to specify a link to Clouder for the container local-clouder.

The Logfile shows:

Traceback (most recent call last):
  File "/opt/odoo/odoo/openerp/http.py", line 537, in _handle_exception
    return super(JsonRequest, self)._handle_exception(exception)
  File "/opt/odoo/odoo/openerp/http.py", line 574, in dispatch
    result = self._call_function(**self.params)
  File "/opt/odoo/odoo/openerp/http.py", line 310, in _call_function
    return checked_call(self.db, *args, **kwargs)
  File "/opt/odoo/odoo/openerp/service/model.py", line 113, in wrapper
    return f(dbname, *args, **kwargs)
  File "/opt/odoo/odoo/openerp/http.py", line 307, in checked_call
    return self.endpoint(*a, **kw)
  File "/opt/odoo/odoo/openerp/http.py", line 803, in __call__
    return self.method(*args, **kw)
  File "/opt/odoo/odoo/openerp/http.py", line 403, in response_wrap
    response = f(*args, **kw)
  File "/opt/odoo/odoo/addons/web/controllers/main.py", line 948, in call_kw
    return self._call_kw(model, method, args, kwargs)
  File "/opt/odoo/odoo/addons/web/controllers/main.py", line 940, in _call_kw
    return checked_call(request.db, *args, **kwargs)
  File "/opt/odoo/odoo/openerp/service/model.py", line 113, in wrapper
    return f(dbname, *args, **kwargs)
  File "/opt/odoo/odoo/addons/web/controllers/main.py", line 939, in checked_call
    return getattr(request.registry.get(model), method)(request.cr, request.uid, *args, **kwargs)
  File "/opt/odoo/odoo/openerp/api.py", line 250, in wrapper
    return old_api(self, *args, **kwargs)
  File "/opt/odoo/odoo/openerp/api.py", line 345, in old_api
    result = method(recs, *args, **kwargs)
  File "/opt/odoo/odoo/addons/clouder/clouder_model.py", line 307, in create
    res = super(ClouderModel, self).create(vals)
  File "/opt/odoo/odoo/openerp/api.py", line 248, in wrapper
    return new_api(self, *args, **kwargs)
  File "/opt/odoo/odoo/openerp/models.py", line 4092, in create
    record = self.browse(self._create(old_vals))
  File "/opt/odoo/odoo/openerp/api.py", line 248, in wrapper
    return new_api(self, *args, **kwargs)
  File "/opt/odoo/odoo/openerp/api.py", line 481, in new_api
    result = method(self._model, cr, uid, *args, **kwargs)
  File "/opt/odoo/odoo/openerp/models.py", line 4277, in _create
    result += self._columns[field].set(cr, self, id_new, field, vals[field], user, rel_context) or []
  File "/opt/odoo/odoo/openerp/osv/fields.py", line 801, in set
    id_new = obj.create(cr, user, act[2], context=context)
  File "/opt/odoo/odoo/openerp/api.py", line 250, in wrapper
    return old_api(self, *args, **kwargs)
  File "/opt/odoo/odoo/openerp/api.py", line 345, in old_api
    result = method(recs, *args, **kwargs)
  File "/opt/odoo/odoo/addons/clouder/clouder_model.py", line 307, in create
    res = super(ClouderModel, self).create(vals)
  File "/opt/odoo/odoo/openerp/api.py", line 248, in wrapper
    return new_api(self, *args, **kwargs)
  File "/opt/odoo/odoo/openerp/models.py", line 4092, in create
    record = self.browse(self._create(old_vals))
  File "/opt/odoo/odoo/openerp/api.py", line 248, in wrapper
    return new_api(self, *args, **kwargs)
  File "/opt/odoo/odoo/openerp/api.py", line 481, in new_api
    result = method(self._model, cr, uid, *args, **kwargs)
  File "/opt/odoo/odoo/openerp/models.py", line 4283, in _create
    recs._validate_fields(vals)
  File "/opt/odoo/odoo/openerp/api.py", line 248, in wrapper
    return new_api(self, *args, **kwargs)
  File "/opt/odoo/odoo/openerp/models.py", line 1282, in _validate_fields
    raise ValidationError("Error while validating constraint\n\n%s" % tools.ustr(e))
ValidationError: ('ValidateError', u'Error while validating constraint\n\nData error!\nYou need to specify a link to Clouder for the container local-clouder')

thx for your help.

Vision for distributedOS

To continue the discussion we have at IndieHosters, and with your great inputs, I'd like to know your vision for the future of clouder.

Most modern PaaS provide API (https://github.com/weihanwang/docker-ecosystem-survey#orchestration-frameworks-ie-paas-software-for-docker, yours is down the list with IndiePaaS :) )

Why do you want to build yet another PaaS, and not use one that is already developed (like mesos for instance?)

This question really bother me personally, I have troubles to answer it myself, and I'm wondering if you have an answer :)

Because, you could imagine simply developping an Odoo plugin to interface with paz.sh or mesos, and it would be done, right?

Just wondering!

Thanks!

Error : Incompatible ssh server (no acceptable macs)

Error on testing connection to new server.

it seem it is related to
paramiko/paramiko#526

any idea for a work around? TIA

Odoo Warning

Connect error!

We were not able to connect to your server. Please make sure you add the public key in the authorized_keys file of your root user on your server.
If you were trying to connect to a container, a click on the 'reset key' button on the container record may resolve the problem.
Target : ns30.eu
Error : Incompatible ssh server (no acceptable macs)

Package

Hello everyone,

Currently when we deploy a base, it will automatically create a container if we don't specify a service, but only one container.

We still need to find a way to manage packages (exemple Odoo + Magento) so when a customer fill a form, it will create and configure several containers, one for each applications.

I don't know if we'll have to manage this concept directly in Clouder or if we can use existing software. Someone suggest me http://panamax.io/ and it's true it looks interesting. I'm creating this ticket to not forget this suggestion.

Stuck on building odoo application

Hello guys,

When i try to build the odoo application a get this error:

Traceback (most recent call last):
File "/opt/odoo/server/openerp/http.py", line 537, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/opt/odoo/server/openerp/http.py", line 574, in dispatch
result = self._call_function(*_self.params)
File "/opt/odoo/server/openerp/http.py", line 310, in _call_function
return checked_call(self.db, *args, *_kwargs)
File "/opt/odoo/server/openerp/service/model.py", line 118, in wrapper
return f(dbname, _args, *_kwargs)
File "/opt/odoo/server/openerp/http.py", line 307, in checked_call
return self.endpoint(_a, *_kw)
File "/opt/odoo/server/openerp/http.py", line 803, in call
return self.method(_args, *_kw)
File "/opt/odoo/server/openerp/http.py", line 403, in response_wrap
response = f(_args, *_kw)
File "/opt/odoo/server/addons/web/controllers/main.py", line 948, in call_button
action = self._call_kw(model, method, args, {})
File "/opt/odoo/server/addons/web/controllers/main.py", line 936, in _call_kw
return getattr(request.registry.get(model), method)(request.cr, request.uid, _args, *_kwargs)
File "/opt/odoo/server/openerp/api.py", line 250, in wrapper
return old_api(self, _args, *_kwargs)
File "/opt/odoo/server/openerp/api.py", line 372, in old_api
result = method(recs, _args, *_kwargs)
File "/opt/clouder/clouder/clouder_application.py", line 291, in build
'archive_id': self.archive_id and self.archive_id.id})
File "/opt/odoo/server/openerp/api.py", line 248, in wrapper
return new_api(self, _args, *_kwargs)
File "/opt/clouder/clouder/clouder_model.py", line 310, in create
res.deploy()
File "/opt/odoo/server/openerp/api.py", line 248, in wrapper
return new_api(self, _args, *_kwargs)
File "/opt/clouder/clouder/clouder_application.py", line 418, in deploy
self.build_application()
File "/opt/odoo/server/openerp/api.py", line 248, in wrapper
return new_api(self, _args, *_kwargs)
File "/opt/clouder/clouder_template_odoo/clouder_template_odoo.py", line 94, in build_application
self.full_archivepath + '/parts/http.patch')
File "/opt/odoo/server/openerp/api.py", line 248, in wrapper
return new_api(self, _args, *_kwargs)
File "/opt/clouder/clouder/clouder_model.py", line 466, in send
sftp.put(source, destination)
File "/usr/local/lib/python2.7/dist-packages/paramiko/sftp_client.py", line 669, in put
return self.putfo(fl, remotepath, file_size, callback, confirm)
File "/usr/local/lib/python2.7/dist-packages/paramiko/sftp_client.py", line 621, in putfo
with self.file(remotepath, 'wb') as fr:
File "/usr/local/lib/python2.7/dist-packages/paramiko/sftp_client.py", line 327, in open
t, msg = self._request(CMD_OPEN, filename, imode, attrblock)
File "/usr/local/lib/python2.7/dist-packages/paramiko/sftp_client.py", line 729, in _request
return self._read_response(num)
File "/usr/local/lib/python2.7/dist-packages/paramiko/sftp_client.py", line 776, in _read_response
self._convert_status(msg)
File "/usr/local/lib/python2.7/dist-packages/paramiko/sftp_client.py", line 802, in _convert_status
raise IOError(errno.ENOENT, text)
IOError: [Errno 2] No such file

On the log of odoo server i get this

/opt/archives/odoo-odoo/8.0.20151023.154044/sandbox/lib/python2.7/site-packages/pip/wheel.py
/opt/archives/odoo-odoo/8.0.20151023.154044/sandbox/lib/python2.7/site-packages/pip/wheel.pyc
Proceed (y/n)? Successfully uninstalled pip

2015-10-23 15:40:48,260 3377 INFO saas openerp.addons.clouder.clouder_model: stderr :
2015-10-23 15:40:48,263 3377 INFO saas openerp.addons.clouder.clouder_model: command : sandbox/bin/python bootstrap.py
2015-10-23 15:40:48,266 3377 INFO saas openerp.addons.clouder.clouder_model: path : /opt/archives/odoo-odoo/8.0.20151023.154044
2015-10-23 15:40:50,680 3377 INFO saas openerp.addons.clouder.clouder_model: stdout :
2015-10-23 15:40:50,685 3377 INFO saas openerp.addons.clouder.clouder_model: stderr : Downloading https://pypi.python.org/packages/source/s/setuptools/setuptools-18.4.zip
Extracting in /tmp/tmprPMQ9D
Now working in /tmp/tmprPMQ9D/setuptools-18.4
Building a Setuptools egg in /tmp/bootstrap-WsclVx
/tmp/bootstrap-WsclVx/setuptools-18.4-py2.7.egg
While:
Initializing.

An internal error occurred due to a bug in either zc.buildout or in a
recipe being used:
Traceback (most recent call last):
File "/tmp/bootstrap-WsclVx/zc.buildout-2.4.5-py2.7.egg/zc/buildout/buildout.py", line 1991, in main
user_defaults, command, args)
File "/tmp/bootstrap-WsclVx/zc.buildout-2.4.5-py2.7.egg/zc/buildout/buildout.py", line 231, in init
data['buildout'].copy(), override, set()))
File "/tmp/bootstrap-WsclVx/zc.buildout-2.4.5-py2.7.egg/zc/buildout/buildout.py", line 1605, in _open
fp, filename_for_logging, _default_globals)
File "/tmp/bootstrap-WsclVx/zc.buildout-2.4.5-py2.7.egg/zc/buildout/configparser.py", line 207, in parse
raise MissingSectionHeaderError(fpname, lineno, line)
MissingSectionHeaderError: File contains no section headers.
file: /opt/archives/odoo-odoo/8.0.20151023.154044/buildout.cfg, line: 2
'git clone http://github.com/odoo/odoo.git parts/odoo -b 8.0\n'

2015-10-23 15:40:50,688 3377 INFO saas openerp.addons.clouder.clouder_model: command : bin/buildout
2015-10-23 15:40:50,691 3377 INFO saas openerp.addons.clouder.clouder_model: path : /opt/archives/odoo-odoo/8.0.20151023.154044
2015-10-23 15:40:50,738 3377 INFO saas openerp.addons.clouder.clouder_model: stdout :
2015-10-23 15:40:50,741 3377 INFO saas openerp.addons.clouder.clouder_model: stderr : bash: bin/buildout: No such file or directory

2015-10-23 15:40:50,744 3377 INFO saas openerp.addons.clouder.clouder_model: command : sed -i "s//opt/archives//opt/versions/g" /opt/archives/odoo-odoo/8.0.20151023.154044/bin/start_odoo
2015-10-23 15:40:50,798 3377 INFO saas openerp.addons.clouder.clouder_model: stdout :
2015-10-23 15:40:50,802 3377 INFO saas openerp.addons.clouder.clouder_model: stderr : sed: can't read /opt/archives/odoo-odoo/8.0.20151023.154044/bin/start_odoo: No such file or directory

2015-10-23 15:40:50,805 3377 INFO saas openerp.addons.clouder.clouder_model: command : sed -i "s//opt/archives//opt/versions/g" /opt/archives/odoo-odoo/8.0.20151023.154044/bin/buildout
2015-10-23 15:40:50,901 3377 INFO saas openerp.addons.clouder.clouder_model: stdout :
2015-10-23 15:40:50,906 3377 INFO saas openerp.addons.clouder.clouder_model: stderr : sed: can't read /opt/archives/odoo-odoo/8.0.20151023.154044/bin/buildout: No such file or directory

2015-10-23 15:40:50,992 3377 INFO saas paramiko.transport.sftp: [chan 8] Opened sftp connection (server version 3)
2015-10-23 15:40:50,993 3377 INFO saas openerp.addons.clouder.clouder_model: send : /opt/clouder/clouder_template_odoo/res/http.patch to /opt/archives/odoo-odoo/8.0.20151023.154044/parts/http.patch
2015-10-23 15:40:50,997 3377 INFO saas openerp.addons.clouder.clouder_model: ===================
2015-10-23 15:40:51,000 3377 INFO saas openerp.addons.clouder.clouder_model: FAIL! Reverting...
2015-10-23 15:40:51,003 3377 INFO saas openerp.addons.clouder.clouder_model: ===================
2015-10-23 15:40:51,014 3377 INFO saas openerp.addons.clouder.clouder_model: connect: ssh www-archive_agilorg.ma
2015-10-23 15:40:51,034 3377 INFO ? paramiko.transport: Connected (version 2.0, client OpenSSH_6.7p1)

New application suggestion : Gitlab

Hello everyone,

Well all is said, I think hosting a Gitlab will be very important for most of us to manage the code of our customers.

I started a module about it but I never had the time to finish, this application is really not simple.

new server error in test connection

Hello:

I created two machines in Amazon:

  1. server1: Odoo 8 with Clouder modules (ubuntu 14.04)
  2. server2: debian server with openssh and docker (debian 8)
  3. in Clouder (server1) create a new server
  4. in server2 enable root user and add public key server created in point 3 (Connection port 22)
  5. run "test connection" and get the error

Connect error!

We were not able to connect to your server. Please make sure you add the public key in the authorized_keys file of your root user on your server.
If you were trying to connect to a container, a click on the 'reset key' button on the container record may resolve the problem.
Target : clouder.odoo.cl
Error : [Errno 110] Connection timed out

  1. In server2 I have only open port 22, requires some other open port?

regards

Error: Shinken img

The supervisord script doesn't run the right executable for shinken. The shinken executable is located at /usr/local/shinken/bin/init.d/shinken

New infrastructure suggestion : Odoo and Magento/Prestashop

Hello everyone,

I'd like here to suggest a new infrastructure which can be interesting to target the visitors who want to create an E-commerce website : A full infrastructure with Odoo for the backffoce and a CMS for the e-commerce (Magento or Prestashop). Next I'll only take the example of Odoo-Magento.

At customer request :
A new Odoo base will be deployed
A new Magento base will be deployed
The Magento connector module will be installed on Odoo and configured with the Magento hostname and login.

Error - Adding base problem

Hi since yesterday i'm having an issue adding a base , i suspect postgres is the problem (img_postgres with a postgresql9.4 and 9.1 path) , but have no clue how to resolve it

Error : could not translate host name "postgres" to address: Name or service not known

Odoo Server Error
Traceback (most recent call last):
File "/home/odoo/odoo-dev/odoo/openerp/http.py", line 536, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/home/odoo/odoo-dev/odoo/openerp/http.py", line 573, in dispatch
result = self._call_function(*_self.params)
File "/home/odoo/odoo-dev/odoo/openerp/http.py", line 309, in _call_function
return checked_call(self.db, *args, *_kwargs)
File "/home/odoo/odoo-dev/odoo/openerp/service/model.py", line 113, in wrapper
return f(dbname, _args, *_kwargs)
File "/home/odoo/odoo-dev/odoo/openerp/http.py", line 306, in checked_call
return self.endpoint(_a, *_kw)
File "/home/odoo/odoo-dev/odoo/openerp/http.py", line 802, in call
return self.method(_args, *_kw)
File "/home/odoo/odoo-dev/odoo/openerp/http.py", line 402, in response_wrap
response = f(_args, *_kw)
File "/home/odoo/odoo-dev/odoo/addons/web/controllers/main.py", line 937, in call_kw
return self._call_kw(model, method, args, kwargs)
File "/home/odoo/odoo-dev/odoo/addons/web/controllers/main.py", line 929, in _call_kw
return getattr(request.registry.get(model), method)(request.cr, request.uid, _args, *_kwargs)
File "/home/odoo/odoo-dev/odoo/openerp/api.py", line 241, in wrapper
return old_api(self, _args, *_kwargs)
File "/home/odoo/odoo-dev/odoo/openerp/api.py", line 336, in old_api
result = method(recs, _args, *_kwargs)
File "/home/odoo/odoo-dev/odoo/addons/clouder-8.0/clouder/clouder_base.py", line 378, in create
return super(ClouderBase, self).create(vals)
File "/home/odoo/odoo-dev/odoo/openerp/api.py", line 239, in wrapper
return new_api(self, _args, *_kwargs)
File "/home/odoo/odoo-dev/odoo/addons/clouder-8.0/clouder/clouder_model.py", line 310, in create
res.deploy()
File "/home/odoo/odoo-dev/odoo/openerp/api.py", line 239, in wrapper
return new_api(self, _args, *_kwargs)
File "/home/odoo/odoo-dev/odoo/addons/clouder-8.0/clouder/clouder_base.py", line 595, in deploy
res = self.deploy_create_database()
File "/home/odoo/odoo-dev/odoo/openerp/api.py", line 239, in wrapper
return new_api(self, _args, *_kwargs)
File "/home/odoo/odoo-dev/odoo/addons/clouder-8.0/clouder_template_odoo/clouder_template_odoo.py", line 217, in deploy_create_database
user_password=self.admin_password)
File "/usr/local/lib/python2.7/dist-packages/erppeek.py", line 639, in create_database
user_password)
File "/usr/local/lib/python2.7/dist-packages/erppeek.py", line 383, in
wrapper = lambda s, _args: s._dispatch(name, args)
File "/usr/lib/python2.7/xmlrpclib.py", line 1591, in __request
verbose=self.__verbose
File "/usr/lib/python2.7/xmlrpclib.py", line 1273, in request
return self.single_request(host, handler, request_body, verbose)
File "/usr/lib/python2.7/xmlrpclib.py", line 1306, in single_request
return self.parse_response(response)
File "/usr/lib/python2.7/xmlrpclib.py", line 1482, in parse_response
return u.close()
File "/usr/lib/python2.7/xmlrpclib.py", line 794, in close
raise Fault(__self._stack[0])
Fault: <Fault could not translate host name "postgres" to address: Name or service not known
: 'Traceback (most recent call last):\n File "/opt/versions/odoo-clouder/8.0.20150616.162105/parts/odoo/openerp/service/wsgi_server.py", line 75, in xmlrpc_return\n result = openerp.http.dispatch_rpc(service, method, params)\n File "/opt/versions/odoo-clouder/8.0.20150616.162105/parts/odoo/openerp/http.py", line 115, in dispatch_rpc\n result = dispatch(method, params)\n File "/opt/versions/odoo-clouder/8.0.20150616.162105/parts/odoo/openerp/service/db.py", line 73, in dispatch\n return fn(_params)\n File "/opt/versions/odoo-clouder/8.0.20150616.162105/parts/odoo/openerp/service/db.py", line 90, in exp_create_database\n _create_empty_database(db_name)\n File "/opt/versions/odoo-clouder/8.0.20150616.162105/parts/odoo/openerp/service/db.py", line 77, in _create_empty_database\n with closing(db.cursor()) as cr:\n File "/opt/versions/odoo-clouder/8.0.20150616.162105/parts/odoo/openerp/sql_db.py", line 575, in cursor\n return Cursor(self.__pool, self.dbname, self.dsn, serialized=serialized)\n File "/opt/versions/odoo-clouder/8.0.20150616.162105/parts/odoo/openerp/sql_db.py", line 181, in init\n self._cnx = pool.borrow(dsn)\n File "/opt/versions/odoo-clouder/8.0.20150616.162105/parts/odoo/openerp/sql_db.py", line 464, in _locked\n return fun(self, _args, *_kwargs)\n File "/opt/versions/odoo-clouder/8.0.20150616.162105/parts/odoo/openerp/sql_db.py", line 526, in borrow\n result = psycopg2.connect(dsn=dsn, connection_factory=PsycoConnection)\n File "/usr/lib/python2.7/dist-packages/psycopg2/init.py", line 164, in connect\n conn = _connect(dsn, connection_factory=connection_factory, async=async)\nOperationalError: could not translate host name "postgres" to address: Name or service not known\n\n'>

Multi odoo install

Hello
I am looking for a solution that would help me set up multiple independent instances of ODOO, each instance will be accessible on a domain or subdomain hosted on this server. I do not have very advanced skills at administrating a server and would like to know before diggin into you documentation if it the purpose of what you are proposing.
Thanks for your time
Yaz

Proxy doesnt redirect to my odoo instance

Hello , Following your tutorial i have succeded with all steps until now . after creating a base everything seemed to work . my odoo instance got created and the database , but when i try to get into my instance through the base url it doesnt work . here the log from the base creation .

connect: ssh www-bind_192.168.1.6
command : sed -i "/clou\sIN\sCNAME/d" /etc/bind/db.errafay.net
stdout :
stderr :
command : /etc/init.d/bind9 reload
stdout : Reloading domain name service...: bind9.

stderr :
connect: ssh shinken@www-shinken_192.168.1.6
command : rm /usr/local/shinken/etc/services/clouder-clou-errafay-net.cfg
stdout :
stderr :
command : /etc/init.d/shinken reload
stdout :
stderr : bash: /etc/init.d/shinken: No such file or directory

connect: ssh www-postfix_192.168.1.6
command : sed -i "/^mydestination =/ s/, clou.errafay.net//" /etc/postfix/main.cf
stdout :
stderr :
command : sed -i "/@clou.errafay.net/d" /etc/postfix/virtual_aliases
stdout :
stderr :
command : postmap /etc/postfix/virtual_aliases
stdout :
stderr :
command : sed -i "/d\sclouder_clou_errafay_net/d" /etc/aliases
stdout :
stderr :
command : newaliases
stdout :
stderr :
command : /etc/init.d/postfix reload
stdout : Reloading Postfix configuration...done.

stderr :
connect: ssh www-proxy_192.168.1.6
command : rm /etc/nginx/sites-enabled/clouder-clou-errafay-net
stdout :
stderr : rm: cannot remove /etc/nginx/sites-enabled/clouder-clou-errafay-net: No such file or directory

command : rm /etc/nginx/sites-available/clouder-clou-errafay-net
stdout :
stderr : rm: cannot remove /etc/nginx/sites-available/clouder-clou-errafay-net: No such file or directory

command : rm /etc/ssl/certs/clou.errafay.net.*
stdout :
stderr : rm: cannot remove /etc/ssl/certs/clou.errafay.net.*: No such file or directory

command : rm /etc/ssl/private/clou.errafay.net.*
stdout :
stderr : rm: cannot remove /etc/ssl/private/clou.errafay.net.*: No such file or directory

command : /etc/init.d/nginx reload
stdout : Reloading nginx configuration: nginx.

stderr :
connect: ssh postgres@www-postgres_192.168.1.6
command : psql -c "update pg_database set datallowconn = 'false' where datname = 'clouder_clou_errafay_net'; SELECT pg_terminate_backend(procpid) FROM pg_stat_activity WHERE datname = 'clouder_clou_errafay_net';"
stdout :
stderr : ERROR: column "procpid" does not exist
LINE 1: ...er_clou_errafay_net'; SELECT pg_terminate_backend(procpid) F...
^

command : dropdb clouder_clou_errafay_net
stdout :
stderr :
connect: ssh odoo@www-clouder_192.168.1.6
command : rm -rf /opt/odoo/test/filestore/clouder_clou_errafay_net
stdout :
stderr :
connect: ssh postgres@www-postgres_192.168.1.6
command : psql -c "update pg_database set datallowconn = 'false' where datname = 'clouder_clou_errafay_net'; SELECT pg_terminate_backend(procpid) FROM pg_stat_activity WHERE datname = 'clouder_clou_errafay_net';"
stdout :
stderr : ERROR: column "procpid" does not exist
LINE 1: ...er_clou_errafay_net'; SELECT pg_terminate_backend(procpid) F...
^

command : dropdb clouder_clou_errafay_net
stdout :
stderr : dropdb: database removal failed: ERROR: database "clouder_clou_errafay_net" does not exist

connect: ssh odoo@www-clouder_192.168.1.6
command : rm -rf /opt/odoo/test/filestore/clouder_clou_errafay_net
stdout :
stderr :
connect: ssh odoo@www-clouder_192.168.1.6
command : mkdir -p /opt/odoo/test/filestore/clouder_clou_errafay_net
stdout :
stderr :
client = erppeek.Client('http://192.168.1.6:14019')
client.create_database('dUpJOfA5PD78Zrdkc6Nn','clouder_clou_errafay_net',demo=False,lang='en_US',user_password='XwSWRx8WKILcMEce5C2c')
Database created
client = erppeek.Client('http://192.168.1.6:14019,db=clouder_clou_errafay_net,user='admin', password=XwSWRx8WKILcMEce5C2c)
admin_id = client.model('ir.model.data').get_object_reference('base', 'user_root')[1]
client.model('res.users').write([1], {'login': admin})
extended_group_id = client.model('ir.model.data').get_object_reference('base', 'group_no_one')[1]
client.model('res.groups').write([8], {'users': [(4, 1)]})
client.install(clouder)
client = erppeek.Client('http://192.168.1.6:14019, db=clouder_clou_errafay_net, user=admin, password=XwSWRx8WKILcMEce5C2c)
company_id = client.model('ir.model.data').get_object_reference('base', 'main_company')[1]
client.model('res.company').write([1], {'name':der})
config_ids = client.model('ir.config_parameter').search([('key','=','web.base.url')])
client.model('ir.config_parameter').write([1], {'value': 'http://clou.errafay.net})
config_ids = client.model('ir.config_parameter').search([('key','=','ir_attachment.location')])
client.model('ir.config_parameter').create({'key': 'ir_attachment.location', 'value': 'file:///filestore'})
Saving 2015-06-23-104037_clouder-clou-errafay-net
Comment: Manual
connect: ssh odoo@www-clouder_192.168.1.6
command : mkdir -p /base-backup/2015-06-22_clou_errafay.net
stdout :
stderr :
command : pg_dump -O -h postgres -U www_clouder_test clouder_clou_errafay_net > /base-backup/2015-06-22_clou_errafay.net/clouder_clou_errafay_net.dump
stdout :
stderr :
connect: ssh odoo@www-clouder_192.168.1.6
command : cp -R /opt/odoo/test/filestore/clouder_clou_errafay_net /base-backup/2015-06-22_clou_errafay.net/filestore
stdout :
stderr :
command : chmod -R 777 /base-backup/2015-06-22_clou_errafay.net
stdout :
stderr :
connect: ssh www-clouder_192.168.1.6
command : rm -rf /tmp/2015-06-22_clou_errafay.net*
stdout :
stderr :
command : mkdir /tmp/2015-06-22_clou_errafay.net
stdout :
stderr :
command : cp -R /base-backup/2015-06-22_clou_errafay.net/* /tmp/2015-06-22_clou_errafay.net
stdout :
stderr :
command : echo "2015-06-23" > /tmp/2015-06-22_clou_errafay.net/backup-date
stdout :
stderr :
command : chmod -R 777 /tmp/2015-06-22_clou_errafay.net*
stdout :
stderr :
connect: ssh backup@www-backup_192.168.1.6
command : rm -rf /opt/backup/list/clouder_clou_errafay_net
stdout :
stderr :
command : mkdir -p /opt/backup/list/clouder_clou_errafay_net
stdout :
stderr :
command : echo "2015-06-22_clou_errafay.net" > /opt/backup/list/clouder_clou_errafay_net/repo
stdout :
stderr :
send : /home/odoo/.ssh/config to /home/backup/.ssh/config
send : /home/odoo/.ssh/keys/www-clouder_192.168.1.6.pub to /home/backup/.ssh/keys/www-clouder_192.168.1.6.pub
send : /home/odoo/.ssh/keys/www-clouder_192.168.1.6 to /home/backup/.ssh/keys/www-clouder_192.168.1.6
command : chmod -R 700 /home/backup/.ssh
stdout :
stderr :
command : rm -rf /tmp/2015-06-22_clou_errafay.net
stdout :
stderr :
command : mkdir /tmp/2015-06-22_clou_errafay.net
stdout :
stderr :
command : rsync -e 'ssh -o StrictHostKeyChecking=no' -ra www-clouder_192.168.1.6:/tmp/2015-06-22_clou_errafay.net/ /tmp/2015-06-22_clou_errafay.net
stdout :
stderr :
command : export BUP_DIR=/opt/backup/bup; bup index /tmp/2015-06-22_clou_errafay.net
stdout :
stderr :
command : export BUP_DIR=/opt/backup/bup; bup save -n 2015-06-22_clou_errafay.net -d 1435056037 --strip /tmp/2015-06-22_clou_errafay.net
stdout :
stderr :
command : rm -rf /tmp/2015-06-22_clou_errafay.net*
stdout :
stderr :
command : rm /home/backup/.ssh/keys/*
stdout :
stderr :
connect: ssh www-clouder_192.168.1.6
command : rm -rf /tmp/2015-06-22_clou_errafay.net*
stdout :
stderr :
connect: ssh odoo@www-clouder_192.168.1.6
command : rm -rf /base-backup/2015-06-22_clou_errafay.net
stdout :
stderr :
connect: ssh www-bind_192.168.1.6
command : sed -i "/clou\sIN\sCNAME/d" /etc/bind/db.errafay.net
stdout :
stderr :
command : /etc/init.d/bind9 reload
stdout : Reloading domain name service...: bind9.

stderr :
connect: ssh www-bind_192.168.1.6
command : echo "clou IN CNAME 192.168.1.6." >> /etc/bind/db.errafay.net
stdout :
stderr :
command : echo "IN MX 1 192.168.1.6. ;clou IN CNAME" >> /etc/bind/db.errafay.net
stdout :
stderr :
command : /etc/init.d/bind9 reload
stdout : Reloading domain name service...: bind9.

stderr :
connect: ssh shinken@www-shinken_192.168.1.6
command : rm /usr/local/shinken/etc/services/clouder-clou-errafay-net.cfg
stdout :
stderr : rm: cannot remove /usr/local/shinken/etc/services/clouder-clou-errafay-net.cfg: No such file or directory

command : /etc/init.d/shinken reload
stdout :
stderr : bash: /etc/init.d/shinken: No such file or directory

connect: ssh shinken@www-shinken_192.168.1.6
send : /home/odoo/odoo-dev/odoo/addons/clouder-8.0/clouder_template_shinken/res/base-shinken.config to /usr/local/shinken/etc/services/clouder-clou-errafay-net.cfg
command : sed -i "s/TYPE/base/g" /usr/local/shinken/etc/services/clouder-clou-errafay-net.cfg
stdout :
stderr :
command : sed -i "s/UNIQUE_NAME/clouder_clou_errafay_net/g" /usr/local/shinken/etc/services/clouder-clou-errafay-net.cfg
stdout :
stderr :
command : sed -i "s/DATABASES/clouder_clou_errafay_net/g" /usr/local/shinken/etc/services/clouder-clou-errafay-net.cfg
stdout :
stderr :
command : sed -i "s/BASE/clou/g" /usr/local/shinken/etc/services/clouder-clou-errafay-net.cfg
stdout :
stderr :
command : sed -i "s/DOMAIN/errafay.net/g" /usr/local/shinken/etc/services/clouder-clou-errafay-net.cfg
stdout :
stderr :
command : sed -i "s/METHOD/bup/g" /usr/local/shinken/etc/services/clouder-clou-errafay-net.cfg
stdout :
stderr :
command : sed -i "s/CONTAINER/www-backup_192.168.1.6/g" /usr/local/shinken/etc/services/clouder-clou-errafay-net.cfg
stdout :
stderr :
command : /etc/init.d/shinken reload
stdout :
stderr : bash: /etc/init.d/shinken: No such file or directory

command : rm -rf /home/shinken/.ssh/keys/www-backup_192.168.1.6*
stdout :
stderr :
send : /home/odoo/.ssh/keys/www-backup_192.168.1.6.pub to /home/shinken/.ssh/keys/www-backup_192.168.1.6.pub
send : /home/odoo/.ssh/keys/www-backup_192.168.1.6 to /home/shinken/.ssh/keys/www-backup_192.168.1.6
command : chmod -R 700 /home/shinken/.ssh
stdout :
stderr :
command : sed -i '/Host www-backup_192.168.1.6/,/END www-backup_192.168.1.6/d' /home/shinken/.ssh/config
stdout :
stderr :
command : echo "Host www-backup_192.168.1.6" >> /home/shinken/.ssh/config
stdout :
stderr :
command : echo " Hostname 192.168.1.6" >> /home/shinken/.ssh/config
stdout :
stderr :
command : echo " Port 14005" >> /home/shinken/.ssh/config
stdout :
stderr :
command : echo " User backup" >> /home/shinken/.ssh/config
stdout :
stderr :
command : echo " IdentityFile ~/.ssh/keys/www-backup_192.168.1.6" >> /home/shinken/.ssh/config
stdout :
stderr :
command : echo "#END www-backup_192.168.1.6" >> ~/.ssh/config
stdout :
stderr :
connect: ssh www-postfix_192.168.1.6
command : sed -i "/^mydestination =/ s/, clou.errafay.net//" /etc/postfix/main.cf
stdout :
stderr :
command : sed -i "/@clou.errafay.net/d" /etc/postfix/virtual_aliases
stdout :
stderr :
command : postmap /etc/postfix/virtual_aliases
stdout :
stderr :
command : sed -i "/d\sclouder_clou_errafay_net/d" /etc/aliases
stdout :
stderr :
command : newaliases
stdout :
stderr :
command : /etc/init.d/postfix reload
stdout : Reloading Postfix configuration...done.

stderr :
client = erppeek.Client('http://192.168.1.6:14019,db=clouder_clou_errafay_net,user=admin, password=XwSWRx8WKILcMEce5C2c)
connect: ssh www-postfix_192.168.1.6
command : sed -i "/^mydestination =/ s/$/, clou.errafay.net/" /etc/postfix/main.cf
stdout :
stderr :
command : echo "@clou.errafay.net clouder_clou_errafay_net@localhost" >> /etc/postfix/virtual_aliases
stdout :
stderr :
command : postmap /etc/postfix/virtual_aliases
stdout :
stderr :
command : echo 'clouder_clou_errafay_net: "|openerp_mailgate.py --host=192.168.1.6 --port=14019 -u 1 -p XwSWRx8WKILcMEce5C2c -d clouder_clou_errafay_net"' >> /etc/aliases
stdout :
stderr :
command : newaliases
stdout :
stderr :
command : /etc/init.d/postfix reload
stdout : Reloading Postfix configuration...done.

stderr :
connect: ssh www-proxy_192.168.1.6
command : rm /etc/nginx/sites-enabled/clouder-clou-errafay-net
stdout :
stderr : rm: cannot remove /etc/nginx/sites-enabled/clouder-clou-errafay-net: No such file or directory

command : rm /etc/nginx/sites-available/clouder-clou-errafay-net
stdout :
stderr : rm: cannot remove /etc/nginx/sites-available/clouder-clou-errafay-net: No such file or directory

command : rm /etc/ssl/certs/clou.errafay.net.*
stdout :
stderr : rm: cannot remove /etc/ssl/certs/clou.errafay.net.*: No such file or directory

command : rm /etc/ssl/private/clou.errafay.net.*
stdout :
stderr : rm: cannot remove /etc/ssl/private/clou.errafay.net.*: No such file or directory

command : /etc/init.d/nginx reload
stdout : Reloading nginx configuration: nginx.

stderr :
connect: ssh www-proxy_192.168.1.6
send : /home/odoo/odoo-dev/odoo/addons/clouder-8.0/clouder_template_odoo/res/proxy.config to /etc/nginx/sites-available/clouder-clou-errafay-net
command : sed -i "s/BASE/clou/g" /etc/nginx/sites-available/clouder-clou-errafay-net
stdout :
stderr :
command : sed -i "s/DOMAIN/errafay.net/g" /etc/nginx/sites-available/clouder-clou-errafay-net
stdout :
stderr :
command : sed -i "s/SERVER/192.168.1.6/g" /etc/nginx/sites-available/clouder-clou-errafay-net
stdout :
stderr :
command : sed -i "s/PORT/14019/g" /etc/nginx/sites-available/clouder-clou-errafay-net
stdout :
stderr :
command : openssl req -x509 -nodes -days 365 -newkey rsa:2048 -out /etc/ssl/certs/clou.errafay.net.crt -keyout /etc/ssl/private/clou.errafay.net.key -subj "/C=FR/L=Paris/O=errafay/CN=clou.errafay.net"
stdout :
stderr : Generating a 2048 bit RSA private key
............................................................+++
.........................................+++

writing new private key to '/etc/ssl/private/clou.errafay.net.key'

command : ln -s /etc/nginx/sites-available/clouder-clou-errafay-net /etc/nginx/sites-enabled/clouder-clou-errafay-net
stdout :
stderr :
command : /etc/init.d/nginx reload
stdout : Reloading nginx configuration: nginx.

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 27: ordinal not in range(128)

Hi , when i try to save my registry container i get this error :

Odoo Server Error
Traceback (most recent call last):
File "/home/odoo/odoo-dev/odoo/openerp/http.py", line 536, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/home/odoo/odoo-dev/odoo/openerp/http.py", line 573, in dispatch
result = self._call_function(*_self.params)
File "/home/odoo/odoo-dev/odoo/openerp/http.py", line 309, in _call_function
return checked_call(self.db, *args, *_kwargs)
File "/home/odoo/odoo-dev/odoo/openerp/service/model.py", line 113, in wrapper
return f(dbname, _args, *_kwargs)
File "/home/odoo/odoo-dev/odoo/openerp/http.py", line 306, in checked_call
return self.endpoint(_a, *_kw)
File "/home/odoo/odoo-dev/odoo/openerp/http.py", line 802, in call
return self.method(_args, *_kw)
File "/home/odoo/odoo-dev/odoo/openerp/http.py", line 402, in response_wrap
response = f(_args, *_kw)
File "/home/odoo/odoo-dev/odoo/addons/web/controllers/main.py", line 937, in call_kw
return self._call_kw(model, method, args, kwargs)
File "/home/odoo/odoo-dev/odoo/addons/web/controllers/main.py", line 929, in _call_kw
return getattr(request.registry.get(model), method)(request.cr, request.uid, _args, *_kwargs)
File "/home/odoo/odoo-dev/odoo/openerp/api.py", line 241, in wrapper
return old_api(self, _args, *_kwargs)
File "/home/odoo/odoo-dev/odoo/openerp/api.py", line 336, in old_api
result = method(recs, _args, *_kwargs)
File "/home/odoo/odoo-dev/odoo/clouder/clouder/clouder_model.py", line 310, in create
res.deploy()
File "/home/odoo/odoo-dev/odoo/openerp/api.py", line 239, in wrapper
return new_api(self, _args, *_kwargs)
File "/home/odoo/odoo-dev/odoo/clouder/clouder/clouder_template_registry/clouder_template_registry.py", line 70, in deploy
return super(ClouderContainer, self).deploy()
File "/home/odoo/odoo-dev/odoo/openerp/api.py", line 239, in wrapper
return new_api(self, _args, *_kwargs)
File "/home/odoo/odoo-dev/odoo/clouder/clouder/clouder_container.py", line 703, in deploy
self.deploy_post()
File "/home/odoo/odoo-dev/odoo/clouder/clouder/clouder_template_registry/clouder_template_registry.py", line 78, in deploy_post
ssh = self.connect(self.fullname)
File "/home/odoo/odoo-dev/odoo/openerp/api.py", line 239, in wrapper
return new_api(self, _args, *_kwargs)
File "/home/odoo/odoo-dev/odoo/clouder/clouder/clouder_model.py", line 412, in connect
"Error : " + str(inst)))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 27: ordinal not in range(128)

Software to manage update on containers

Hello everyone,

Another core container we will need, currently the only way we have to update a container is to regenerate another image an go on each container to replace it with the new image.

This is really heavy, we need a simpler way for simple update like the apt-get update and the apt-get upgrade. Of course this is really important for security, because currently it's difficult to make the security update.

I guess we shall use a more common orchestrator for this, like puppet/chef/saltz container, and then each clouder template module shall have his own configuration file for the orchestrator. Moreover I guess this orchestrator will be useful for more complex things than theses update.

What do you think? Which orchestrator shall be use for this purpose?

identityfile is a list if paramiko >= 1.10.0

I'm getting this error on save of Containers

File "/opt/odoo/clouder/clouder/clouder_model.py", line 391, in connect
    + ", type : " + type(identityfile)))
TypeError: cannot concatenate 'str' and 'type' objects

This is easily fixed by adding a str():

    if not isinstance(identityfile, basestring):
                raise except_orm(
                    _('Data error!'),
                    _("For unknown reason, it seems the variable identityfile in "
                      "the connect ssh function is invalid. Please report "
                      "this message.\n"
                      "Identityfile : " + str(identityfile)
                      + ", type : " + str(type(identityfile))))

Which then reveals the real problem:

Data error!

For unknown reason, it seems the variable identityfile in the connect ssh function is invalid. Please report this message.
Identityfile : ['/opt/odoo/.ssh/keys/clouder1.xxxx.yyy'], type : <type 'list'>

The config file seems rigth:

Host clouder1.xxxx.yyy
  HostName clouder1.xxxx.yyy
  Port 14022
  User root
  IdentityFile /opt/odoo/.ssh/keys/clouder1.xxxx.yyy
#END clouder1.xxxx.yyy

So why is identityfile a list, and not a string?

This is on Ubuntu 14.04, Python 2.7.6, paramiko==1.15.2

Found this on Paramiko 1.10.0 2013-03-01 release notes:

[Feature] #93: Overhaul SSH config parsing to be in line with man ssh_config (& the behavior of ssh itself), including addition of parameter expansion within config values.

For example, the IdentityFile change turns config objects' identityfile key values into lists when they were strings before, so code expecting a string in that slot (e.g. parts of Fabric, though that is only one client-usage example) will break.

paramiko/paramiko#93

This can be solved by

if isinstance(identityfile, list ):
            identityfile = identityfile[0]

Now I can save some Containers. The Backup Bup gives me an connect error from deploy_link():

  File "/opt/odoo/clouder/clouder/clouder_template_backup/clouder_template_backup.py", line 66,   in deploy_link
     username='backup')
   File "/opt/odoo/odoo8/openerp/api.py", line 239, in wrapper
     return new_api(self, *args, **kwargs)
   File "/opt/odoo/clouder/clouder/clouder_model.py", line 408, in connect
     "Error : " + str(inst)))
 except_orm: (u'Connect error!', u"We were not able to connect to your server. Please make sure   you add the public key in the authorized_keys file of your root user on your server.\nIf you were trying to connect to a container, a click on the 'reset key' button on the container record may resolve the  problem.\nError : [Errno 111] Connection refused")

But I think I would leave that to a new issue, when I have looked more into the problem.

Thanks for your time and for a great project
hhg

Using the default ports when running a docker run command

Hi Yannick,

I had a issue running a container and when the looked at the log , if the server port mapping are not provided it is sending a "False" notation to the docker run command as shown below :

sudo docker run -d -p False:5000 -p False:443 -p False:22 -v /opt/keys/www-registry_www.server.com:/opt/keys --name www-registry img_registry:1.20150430.091512
stdout :
stderr : time="2015-05-04T22:10:36-04:00" level="fatal" msg="Invalid hostPort: False"


I think if the server port mapping are not provided, it should use the default docker image ports or if they need to explicitly defined , probably good idea to have this mandatory when creating a container record.

Cheers,
Naran

Firewall

Hello everyone,

I'd like to suggest a new feature which will be very important regarding security : the firewall. All professional hosting close or whitelist the sensible ports and I think we should do the same.

Regarding the technology to use, I guess iptables is the obvious answer but if you have another suggestions please don't hesitate.

I already started to think about it when I was developing Clouder, we have a field (today unused) on the ports containers where you can specified if the port shall be closed, open to other containers or open to the whole internet. I think we shall add another field for the whitelist (or directly replace the existing field with the whilelist field).
Then when we create the container, it will automatically reconfigure the firewall depending of the informations on Clouder.

Also I don't know if we have a way to place the firewall inside a container or if we are forced to install it on the host system. What do you think?

Error - adding server

on adding 1st server,
odoo throw the following error when saving the form. the path to the ssh keys seems wrong.

any idea? TIA

Odoo Server Error
Traceback (most recent call last):
File "/opt/odoo/odoo-server/openerp/http.py", line 530, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/opt/odoo/odoo-server/openerp/http.py", line 567, in dispatch
result = self._call_function(*_self.params)
File "/opt/odoo/odoo-server/openerp/http.py", line 303, in _call_function
return checked_call(self.db, *args, *_kwargs)
File "/opt/odoo/odoo-server/openerp/service/model.py", line 113, in wrapper
return f(dbname, _args, *_kwargs)
File "/opt/odoo/odoo-server/openerp/http.py", line 300, in checked_call
return self.endpoint(_a, *_kw)
File "/opt/odoo/odoo-server/openerp/http.py", line 796, in call
return self.method(_args, *_kw)
File "/opt/odoo/odoo-server/openerp/http.py", line 396, in response_wrap
response = f(_args, *_kw)
File "/opt/odoo/odoo-server/addons/web/controllers/main.py", line 936, in call_kw
return self._call_kw(model, method, args, kwargs)
File "/opt/odoo/odoo-server/addons/web/controllers/main.py", line 928, in _call_kw
return getattr(request.registry.get(model), method)(request.cr, request.uid, _args, *_kwargs)
File "/opt/odoo/odoo-server/openerp/api.py", line 241, in wrapper
return old_api(self, _args, *_kwargs)
File "/opt/odoo/odoo-server/openerp/api.py", line 336, in old_api
result = method(recs, _args, *_kwargs)
File "/opt/odoo/custom/addons/yannick/clouder/clouder_model.py", line 310, in create
res.deploy()
File "/opt/odoo/odoo-server/openerp/api.py", line 239, in wrapper
return new_api(self, _args, *_kwargs)
File "/opt/odoo/custom/addons/yannick/clouder_template_shinken/clouder_template_shinken.py", line 46, in deploy
super(ClouderServer, self).deploy()
File "/opt/odoo/odoo-server/openerp/api.py", line 239, in wrapper
return new_api(self, _args, *_kwargs)
File "/opt/odoo/custom/addons/yannick/clouder/clouder_container.py", line 182, in deploy
self.execute_write_file(key_file, self.private_key)
File "/opt/odoo/odoo-server/openerp/api.py", line 239, in wrapper
return new_api(self, _args, *_kwargs)
File "/opt/odoo/custom/addons/yannick/clouder/clouder_model.py", line 539, in execute_write_file
f = open(localfile, 'a')
IOError: [Errno 2] No such file or directory: u'/opt/odoo/.ssh/keys/ns30.eu'

img_backup_bup missing package

I was having an issue yesterday building an image for "img_backup_bup" adding the g++ package fixed it .

RUN DEBIAN_FRONTEND=noninteractive apt-get -y -q install python2.7-dev python-fuse python-pyxattr python-pylibacl python-tornado linux-libc-dev acl attr par2 git make cron ncftp g++

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.