Author: |
IT-Projects LLC, Ivan Yelizariev |
License: |
AGPL-3 |
Branch: |
13.0 |
Repository: |
thanhchatvn/saas-addons |
Dependencies: |
auth_quick_master,
queue_job,
web_editor,
and
web_notify |
Languages: |
Python (681, 55.5%),
XML (402, 32.8%),
and
reStructuredText (144, 11.7%) |
Other branches: |
12.0,
12.0-db-list,
and
14.0 |
Other repositories: |
Altovate/saas-addons,
AyoubZahid/clouder,
Deanzou/saas-addons,
Enigma228322/saas-addons,
ErrafayM/clouder,
Jeisonpernia/saas-addons,
MaryamKia/saas-addons,
MediaJockey/saas-addons,
MjAbuz/saas-addons,
NigmatullinAN/saas-addons,
Nucleoos/clouder,
RL-OtherApps/saas-addons,
Raniani-lab/saas-addons,
SeuMarco/saas-addons,
Tedezed/saas-addons,
TestMergeBot/saas-addons,
YannickB/saas-deprecated,
ajinvn2019/saas-addons,
ajite/odoo-hosting-orchestrator,
alejandroperezcosio/clouder,
altanmur/saas-addons,
angeloluidens/saas-addons,
anhvu-sg/saas-addons,
axonoffice/clouder,
cdelambert/clouder,
code-pack/saas-addons,
diassynthesis/odoo-hosting-orchestrator,
digitalsatori/saas,
dingguijin/saas-addons,
dndoanh/saas-addons,
dvorakmilda/saas-addons,
dynaz/saas-addons,
elblasy33/saas-addons,
em230418/saas-addons,
hinfo506/saas-addons,
hotkee/saas,
ilmir-k/saas-addons,
it-projects-llc/saas-addons,
jason156/saas-addons,
jeffery9/saas,
jupiterzhuo/saas-addons,
kaadevelop/saas-addons,
kaadevelopment/saas-addons,
kmee/saas-addons,
laumar92/saas-addons,
lithint/clouder,
loftwah/saas-addons,
marionumza/it-projects-llc-saas-addons,
mbouazza/saas-addons,
metalwmz/saas-addons,
michielbdejong/clouder,
microcom/clouder,
mohshedid/saas-addons,
molandtoxx/saas-addons,
nedaszilinskas/saas-addons,
niulinlnc/saas-addons,
odoousers2014/clouder,
pasgou/clouder,
pasgou/saas-addons,
phlema/saas-addons,
phoexer/saas-addons,
sem2173/odoo-hosting-orchestrator,
shengyf1/saas-addons,
shingonoide/saas,
sinandurgut07/saas-addons,
ssisoftwaresolutions/saas-addons,
steingabelgaard/clouder,
suhongrui/odoo-hosting-orchestrator,
sunflowerit/saas-addons,
toanthuan/saas-addons,
veryberry/clouder,
vkuldeep/saas-addons,
ychavda/saas-addons,
and
yelizariev/saas-addons |
<a class="reference external image-reference" href="https://www.gnu.org/licenses/agpl"><img alt="License: AGPL-3" src="https://img.shields.io/badge/license-AGPL--3-blue.png" /></a>
<a name="saas-base"></a>
<h2>SaaS Base</h2>
<p>Base module for master SaaS instance.</p>
<p>The module is similar to <code>saas_portal</code> in <em>odoo-saas-tools</em>.</p>
<a name="models-overview"></a>
<h3>Models overview</h3>
<ul class="simple">
<li><code>saas.template</code> -- similar to <code>saas_portal.plan</code> in <em>odoo-saas-tools</em>, but covers only technical aspects (database creation) and not any sale/trial stuff. A single record can be used for multiple servers (via <code>saas.template.operator</code>.</li>
<li><code>saas.operator</code> -- similar to <code>saas_portal.server</code> in <em>odoo-saas-tools</em>. Credentials to create-destroy, update, migrate, backup, etc. odoo instances.<ul>
<li>It doesn't need special odoo instance (database, <em>SaaS Server</em> in terms of
<em>odoo-saas-tool</em> project) in corresponding server and could work by sending
requests, for example, to kubernetes.</li>
<li>Single <em>operator</em> is only one set of modules at some versions. If you have a
server which is used for different versions of odoo or just module version,
then you need you to create <code>saas.operator</code> per each module set. Those
<em>operators</em> may use same credentials.</li>
<li>Different <em>Operators</em> may have same postgresql scope. It's usefull in
staging when we apply a database for new versions of modules. On the other
hand, it force us to have unique database names across operators</li>
</ul>
</li>
<li><code>saas.db</code> -- similar to <code>saas_portal.client</code> in <em>odoo-saas-tools</em></li>
<li><code>saas.log</code> -- saas history, e.g. database creation, updating, etc.</li>
</ul>
<a name="roadmap"></a>
<h3>Roadmap</h3>
<ul class="simple">
<li><dl class="first docutils">
<dt>TODO: Create menu for SaaS Operator</dt>
<dd><ul class="first last">
<li>smart button for builds list</li>
</ul>
</dd>
</dl>
</li>
<li><dl class="first docutils">
<dt>TODO: Create menu for SaaS Log model</dt>
<dd><ul class="first last">
<li>saas.db form: add smart button for saas.log's</li>
<li>saas.operator: add smart button for saas.log's</li>
</ul>
</dd>
</dl>
</li>
<li>TODO: Add check uniqueness of database name across saas.db records with state == done. Also check that there is no records of saas.db with name equal to one that user wants to use in use in wizard, saas template operator.</li>
<li>TODO: Make the saas.template form duplicable again</li>
<li>TODO: Add page refresh button on saas.template form</li>
<li><dl class="first docutils">
<dt>TODO: saas_test: add database creation rollback and extra safety:</dt>
<dd><ul class="first last">
<li>setUp: prepare list of database names that will be created during the tests. Check that those databases don't exist and raise error otherwise</li>
<li>use random suffix to avoid droping database reserved for production purposes during test execution, e.g. template_database_ecusnc63asdf234</li>
<li>tearDown: drop created databases after test exectuion</li>
</ul>
</dd>
</dl>
</li>
<li><dl class="first docutils">
<dt>TODO: Add coverage for "Connect to the build" button:</dt>
<dd><ul class="first last">
<li>get authentication on master database in requests' session (use authenticate method from odoo/tests/common.py)</li>
<li>open "connect to build url"</li>
<li>check that you are finally redirected to /web page at the build</li>
</ul>
</dd>
</dl>
</li>
<li>TODO: add computed record in saas.db model to avoid using the name of the master database. Some new db type is needed. Say, <code>('other', 'Reserved DB Name')</code></li>
<li>TODO: saas.operator: add a button that runs a wizard which allows to make new build (saas.db) from backup; add a method in <code>saas.operator</code> which takes the backup as argument; implement the method for "Same Instance" operator</li>
</ul>
<a name="credits"></a>
<h3>Credits</h3>
<a name="contributors"></a>
<h4>Contributors</h4>
<ul class="simple">
<li><a class="reference external" href="https://it-projects.info/team/yelizariev">Ivan Yelizariev</a></li>
<li><a class="reference external" href="https://it-projects.info/team/mudarisov">Denis Mudarisov</a></li>
</ul>
<a name="sponsors"></a>
<h4>Sponsors</h4>
<ul class="simple">
<li><a class="reference external" href="https://it-projects.info">IT-Projects LLC</a></li>
</ul>
<a name="maintainers"></a>
<h4>Maintainers</h4>
<ul class="simple">
<li><a class="reference external" href="https://it-projects.info">IT-Projects LLC</a></li>
</ul>
<a name="further-information"></a>
<h3>Further information</h3>
<p>Demo: <a class="reference external" href="http://runbot.it-projects.info/demo/saas-addons/13.0">http://runbot.it-projects.info/demo/saas-addons/13.0</a></p>
<p>Usage instructions: <a class="reference external" href="doc/index.rst">doc/index.rst</a></p>
<p>Changelog: <a class="reference external" href="doc/changelog.rst">doc/changelog.rst</a></p>
<p>Notifications on updates: <a class="reference external" href="https://github.com/it-projects-llc/saas-addons/commits/13.0/saas.atom">via Atom</a>, <a class="reference external" href="https://blogtrottr.com/?subscribe=https://github.com/it-projects-llc/saas-addons/commits/13.0/saas.atom">by Email</a></p>
<p>Tested on Odoo 13.0 fb377a8f1bf2bea020c14ea57997ea9078a54e5f</p>