This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (pypi.python.org).
Help us improve Python packaging - Donate today!
Project Description

anybox.pg.odoo

This tool basically manages versionned snapshots of the current database, mimicking the common workflow of VCS tools such as init, commit, revert, log, etc. It was first created to snapshot Odoo databases but may be easily modified to be agnostic.

Install

This tool works on Python 2.7 and Python 3.x. Install as any normal Python distribution, in a virtualenv, buildout or system-wide. The only current dependency is psycopg2 >= 2.5.

Example with a virtualenv:

$ virtualenv sandbox && source sandbox/bin/activate
$ pip install anybox.pg.odoo

Usage

First read the available commands with odb -h. You get the available commands:

init                Set the current db
commit              Save the current db in a new revision
info                Display the revision of the current db
revert              Drop the current db and clone from a previous revision
log                 List all available revisions
purge               Destroy revisions
tags                List all tags
tag                 Tag a specific revision

You should first set the current database with odb init:

$ odb init demo8
Now revision 1

Then you can get the current revision with odb info:

$ odb info
database: demo8
revision : 1 (parent: 0)

Commit the current database to create a snapshot and a new revision with odb commit:

$ odb commit
Now revision 2
$ odb info
database: demo8
revision : 2 (parent: 1)
$ odb commit
Now revision 3
$ odb commit
Now revision 4

You can revert back to the last revision of the database (the parent) with odb revert:

$ odb revert
Reverted to parent 3, now at revision 4

You can also revert back to any previous revision:

$ odb revert 2
Reverted to parent 2, now at revision 4
$ odb info
database: demo8
revision : 4 (parent: 2)

You can put tags on a revision, revert to a tag and delete a tag with odb tag and odb tags:

$ odb tag v1 2
$ odb tag v2 3
$ odb tags
v2 (demo8*3)
v1 (demo8*2)
$ odb revert v1
Reverted to parent 2, now at revision 4
$ odb tag -d v1

The you can display all the revisions with odb log:

$ odb log
demo8:
    revision: 4
    parent: 2
demo8*3:
    revision: 3
    parent: 2
    tag: v2
demo8*2:
    revision: 2
    parent: 1
demo8*1:
    revision: 1
    parent: 0

Then you can purge all the revisions except the tags:

$ odb purge keeptags

or all the revisions:

$ odb purge all

How it works and pollutes

  • It uses the CREATE DATABASE FROM TEMPLATE feature of PostgreSQL
  • It currently stores version information in the ir_config_parameter table of Odoo (though this will change in the future).
  • It expects that the connection to PostgreSQL is done through Unix Domain Socket with the current user being allowed to create and drop databases.
  • It stores the current database in ~/.anybox.pg.odoo

what’s next? (todo list)

  • Use a dedicated database to store version information instead of the ir_config_parameter table
  • Implement diff (#fear)
  • Improve the database naming scheme

Contribute

Mercurial repository and bug tracker: https://bitbucket.org/anybox/anybox.pg.odoo

Run tests with:

$ python setup.py test

Changelog

0.6 (2014-11-02)

  • fixed error in Python 3
  • remove tag and message of the current version after commit and revert

0.5 (2014-10-19)

  • Works on Python 3.1+
  • Works on Postgres 9.1 and maybe lower
  • odb purge keeptags : purge all but tags
  • implemented commit message
  • revert now checks that the source db exists (much safer)

0.4 (2014-10-19)

  • Implemented odb log
  • Implemented odb purge
  • Implemented odb tag and revert to tag
  • Implemented odb tags
  • Renamed version to revision
  • Renamed snapshot() to commit()

0.3 (2014-10-16)

  • Keep the same db as the current one to work in place
  • Fixed versionning and start at 1
  • Also disconnect during revert operation
  • Removed the unneeded tip

0.2 (2014-10-15 after sleeping)

  • Fixed packaging
  • Fixed the revert behaviour
  • Allow to revert without argument
  • Improved doc

0.1 (2014-10-15)

  • Initial draft
Release History

Release History

0.6

This version

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.5

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.4

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.3

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.2

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.1

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

Download Files

Download Files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
anybox.pg.odoo-0.6.tar.gz (9.4 kB) Copy SHA256 Checksum SHA256 Source Nov 2, 2014

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting