Skip to main content

Postgraas is a super simple PostgreSQL-as-a-service

Project description

https://travis-ci.org/blue-yonder/postgraas_server.svg?branch=master https://coveralls.io/repos/github/blue-yonder/postgraas_server/badge.svg?branch=master

Postgraas is a super simple PostgreSQL-as-a-service

What is Postgraas?

Postgraas offers CRUD operations for complete PostgreSQL database instances via a simple REST api. The database instances are docker containers and the API server is a few hundred LoC Flask application. It is not meant as a production ready solution, but more as a proof-of-concept to spread the idea of creating “as-a-service” services easily yourself and should inspire you to start working on your own cloud infrastructure today. But in fact, it proofs the concept very well and it turned out to be super useful for delivering a PostgreSQL instance if you need one fast, e.g. for integration tests, for playing around with fancy ShowHN projects or other experiments. The CRUD management via REST api is of course also a necessary prerequisite for building an automated continuous delivery pipeline for a modern software project.

Installation

You can find detailed instructions in the docs

Install via pip:

pip install postgraas_server

Start the WSGI api server for example via gunicorn:

pip install gunicorn
gunicorn -w 4 -b 0.0.0.0:8080 postgraas_server.postgraas_api:app

Usage

We need to send all the required parameters for the creation as an http request. This is quite convenient by creating a file e.g. my_postgraas.json:

{
    "postgraas_instance_name": "my_postgraas",
    "db_name": "my_db",
    "db_username": "db_user",
    "db_pwd": "secret"
}

and making a POST request to the collection resource with curl:

curl -H "Content-Type: application/json" -X POST --data @my_postgraas.json http://localhost:8080/api/v2/postgraas_instances

now your instance is created and as a response you get the details of your instance:

{
     "postgraas_instance_id": 1,
     "container_id": "193f0d94d49fa26626fdbdb583e9453f923468b01eac59207b4852831a105c03",
     "db_pwd": "secret",
     "host": "not imlemented yet",
     "db_name": "my_db",
     "db_username": "db_user",
     "port": 54648
}

We are now able to connect to the database for example via psql:

psql -h localhost -p 54648 -U db_user my_db

Awesome, isn’t it?

Development

Run the tests

You need to have docker installed

Make sure you pull the right docker image:

docker pull postgres:9.4

Make a virtualenv and install the requirements including the dev requirements and a local editable install of the package, for convenience you can install the requirements.in

pip install -r requirements.in
pip install -r requirements_dev.txt
pip install -e .

For the tests you need a running postgres meta database and set some environment variables accordingly. There is a convenience script to set this all up using a docker postgres database:

. setup_integration_test_docker.sh

Now you should be able to execute the tests:

pytest tests/

Project details


Download files

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

Source Distribution

postgraas_server-2.1.2.tar.gz (39.6 kB view details)

Uploaded Source

Built Distribution

postgraas_server-2.1.2-py2.py3-none-any.whl (20.5 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file postgraas_server-2.1.2.tar.gz.

File metadata

  • Download URL: postgraas_server-2.1.2.tar.gz
  • Upload date:
  • Size: 39.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.37.0 CPython/3.6.7

File hashes

Hashes for postgraas_server-2.1.2.tar.gz
Algorithm Hash digest
SHA256 1b701d1597eadf6daa83ae25cce8ada9b22206e84377798584696af4293c0c47
MD5 dd45f30acc664f17f8db2b68c9bb7ae6
BLAKE2b-256 f747c56388c02f9d427ae667502baf943dbf027e63ebe90eaf8679934a12be0e

See more details on using hashes here.

File details

Details for the file postgraas_server-2.1.2-py2.py3-none-any.whl.

File metadata

  • Download URL: postgraas_server-2.1.2-py2.py3-none-any.whl
  • Upload date:
  • Size: 20.5 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.37.0 CPython/3.6.7

File hashes

Hashes for postgraas_server-2.1.2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 eb018f3723f238c4c1d14fd8ceb8ee02cb9ff0063f6fe65f3fe7c69b7e0651ba
MD5 9f7f17c9e35974e691390e49103de51b
BLAKE2b-256 5d8eb5f36eb92a10ed093783a4d5e521678d1a2a6d6fc1480b9513ad51b9c2c9

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page