aiida.manage.external package#
User facing APIs to control AiiDA from the verdi cli, scripts or plugins
Subpackages#
Submodules#
Provides an API for postgres database maintenance tasks.
This API creates and drops postgres users and databases used by the
verdi quicksetup
commandline tool. It allows convenient access to this
functionality from within python without knowing details about how postgres is
installed by default on various systems. If the postgres setup is not the
default installation, additional information needs to be provided.
- class aiida.manage.external.postgres.Postgres(dbinfo=None, **kwargs)[source]#
Bases:
pgsu.PGSU
Adds convenience functions to
pgsu.PGSU
.- Provides convenience functions for
creating/dropping users
creating/dropping databases
etc.
Example:
postgres = Postgres() postgres.create_dbuser('username', 'password') if not postgres.db_exists('dbname'): postgres.create_db('username', 'dbname')
- __module__ = 'aiida.manage.external.postgres'#
- can_user_authenticate(dbuser, dbpass)[source]#
Check whether the database user credentials are valid.
Checks whether dbuser has access to the template1 postgres database via psycopg2.
- Parameters
dbuser – the database user
dbpass – the database password
- Returns
True if the credentials are valid, False otherwise
- create_dbuser_db_safe(dbname, dbuser, dbpass)[source]#
Create DB and user + grant privileges.
An existing database user is reused, if it is able to authenticate. If not, a new username is generated on the fly.
An existing database is not reused (unsafe), a new database name is generated on the fly.
- db_exists(dbname)[source]#
Check wether a postgres database with dbname exists
- Parameters
dbname (str) – Name of the database to check for
- Returns
(bool), True if database exists, False otherwise
- property dbinfo#
Alias for Postgres.dsn.
- dbuser_exists(dbuser)[source]#
Find out if postgres user with name dbuser exists
- Parameters
dbuser (str) – database user to check for
- Returns
(bool) True if user exists, False otherwise
- drop_db(dbname)[source]#
Drop a database in postgres
- Parameters
dbname (str) – Name of the database.
- drop_dbuser(dbuser)[source]#
Drop a database user in postgres
- Parameters
dbuser (str) – Name of the user to be dropped.
- find_new_db(start_from='aiida')[source]#
Find database name that does not yet exist.
Generates names of the form “aiida_1”, “aiida_2”, etc. until it finds a name that does not yet exist.
- Parameters
start_from (str) – start from this name
- Returns
dbname
- find_new_dbuser(start_from='aiida')[source]#
Find database user that does not yet exist.
Generates names of the form “aiida_1”, “aiida_2”, etc. until it finds a name that does not yet exist.
- Parameters
start_from (str) – start from this name
- Returns
dbuser
- classmethod from_profile(profile: Profile, **kwargs)[source]#
Create Postgres instance with dbinfo from AiiDA profile data.
- Note: This only uses host and port from the profile, since the others are not going to be relevant for the
database superuser.
- Parameters
profile – AiiDA profile instance
kwargs – keyword arguments forwarded to PGSU constructor
- Returns
Postgres instance pre-populated with data from AiiDA profile
- property host_for_psycopg2#
Return correct host for psycopg2 connection (as required by regular AiiDA operation).
- property port_for_psycopg2#
Return port for psycopg2 connection (as required by regular AiiDA operation).