from temboardagent.errors import UserError from temboardagent.routing import RouteSet from . import functions as activity_functions routes = RouteSet() @routes.get(b'/activity', check_key=True) def get_activity(http_context, app): with app.postgres.connect() as conn: return activity_functions.get_activity(conn) @routes.get(b'/activity/waiting', check_key=True) def get_activity_waiting(http_context, app): with app.postgres.connect() as conn: return activity_functions.get_activity_waiting(conn) @routes.get(b'/activity/blocking', check_key=True) def get_activity_blocking(http_context, app): with app.postgres.connect() as conn: return activity_functions.get_activity_blocking(conn) @routes.post(b'/activity/kill') def post_activity_kill(http_context, app): with app.postgres.connect() as conn: return activity_functions.post_activity_kill(conn, app.config,
from datetime import datetime from temboardagent.routing import RouteSet from temboardagent.toolkit import taskmanager from temboardagent.tools import validate_parameters from temboardagent.types import T_OBJECTNAME from . import functions routes = RouteSet(prefix=b'/maintenance') workers = taskmanager.WorkerSet() @routes.get(b'', check_key=True) def get_instance(http_context, app): with app.postgres.connect() as conn: instance = next(functions.get_instance(conn)) with app.postgres.connect() as conn: rows = functions.get_databases(conn) databases = [] for database in rows: database = dict(database) # we need to connect with a different database dbname = database['datname'] with functions.get_postgres(app.config, dbname).connect() as conn: database.update(**functions.get_database(conn)) databases.append(database)
from temboardagent.routing import RouteSet from . import functions as pgconf_functions from .types import ( T_PGSETTINGS_CATEGORY, ) routes = RouteSet(prefix=b'/pgconf') @routes.get(b'/configuration') @routes.get(b'/configuration/category/' + T_PGSETTINGS_CATEGORY) def get_pg_conf(http_context, app): with app.postgres.connect() as conn: return pgconf_functions.get_settings(conn, http_context) @routes.get(b'/configuration/categories') def get_pg_conf_categories(http_context, app): with app.postgres.connect() as conn: return pgconf_functions.get_settings_categories(conn) @routes.post(b'/configuration') def post_pg_conf(http_context, app): with app.postgres.connect() as conn: return pgconf_functions.post_settings(conn, app.config, http_context) @routes.get(b'/configuration/status')
# workers = WorkerSet() @workers.register(pool_size=1) @workers.schedule(id='monprojet_toto', redo_interval=5) def worker_toto(app): logger.info("hello") # # API Version 0 # This API is a Work In Process and highly unstable ! # routes_v0 = RouteSet() # GET /pgbadger/v0/reports : list all reports @routes_v0.get(b'/pgbadger/v0/reports') def get_pgbadger_reports(http_context, app): try: return json.dumps(pgbadger.list_reports(app.config)) except UserError as e: return json.dumps(error()) # GET /pgbadger/v0/reports/last : get last report (in json) @routes_v0.get(b'/pgbadger/v0/reports/last') def get_pgbadger_report_last(http_context, app): try:
import logging import json import os from temboardagent.toolkit import taskmanager from temboardagent.toolkit.configuration import OptionSpec from temboardagent.routing import RouteSet from temboardagent.queue import Queue, Message from temboardagent.errors import UserError from . import metrics logger = logging.getLogger(__name__) routes = RouteSet(prefix=b'/dashboard') workers = taskmanager.WorkerSet() @routes.get(b'') def dashboard(http_context, app): return metrics.get_metrics_queue(app.config) @routes.get(b'/config') def dashboard_config(http_context, app): return dict( scheduler_interval=app.config.dashboard.scheduler_interval, history_length=app.config.dashboard.history_length, ) @routes.get(b'/live')
import logging from temboardagent.errors import HTTPError from temboardagent.routing import RouteSet from temboardagent.postgres import Postgres from temboardagent.tools import now from temboardagent.toolkit.configuration import OptionSpec logger = logging.getLogger(__name__) routes = RouteSet(prefix=b"/statements") query = """\ SELECT rolname, datname, pgss.* FROM pg_stat_statements pgss JOIN pg_authid ON pgss.userid = pg_authid.oid JOIN pg_database ON pgss.dbid = pg_database.oid """ @routes.get(b"/", check_key=True) def get_statements(http_context, app): """Return a snapshot of latest statistics of executed SQL statements """ config = app.config dbname = config.statements.dbname snapshot_datetime = now() conninfo = dict(config.postgresql, dbname=dbname) try:
probe_memory, probe_process, probe_replication_lag, probe_replication_connection, probe_sessions, probe_temp_files_size_delta, probe_tblspc_size, probe_wal_files, probe_xacts, run_probes, ) from .output import remove_passwords logger = logging.getLogger(__name__) workers = taskmanager.WorkerSet() routes = RouteSet(prefix=b'/monitoring') T_TIMESTAMP_UTC = b'(^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$)' T_LIMIT = b'(^[0-9]+$)' @routes.get(b'/probe/sessions', check_key=True) def get_probe_sessions(http_context, app): return api_run_probe(probe_sessions(app.config.monitoring), app.config) @routes.get(b'/probe/xacts', check_key=True) def get_probe_xacts(http_context, app): return api_run_probe(probe_xacts(app.config.monitoring), app.config)
probe_loadavg, probe_locks, probe_memory, probe_process, probe_replication, probe_sessions, probe_tblspc_size, probe_wal_files, probe_xacts, run_probes, ) from .output import send_output, remove_passwords logger = logging.getLogger(__name__) workers = taskmanager.WorkerSet() routes = RouteSet(prefix=b'/monitoring/probe') @routes.get(b'/sessions') def get_probe_sessions(http_context, app): return api_run_probe(probe_sessions(app.config.monitoring), app.config) @routes.get(b'/xacts') def get_probe_xacts(http_context, app): return api_run_probe(probe_xacts(app.config.monitoring), app.config) @routes.get(b'/locks') def get_probe_locks(http_context, app): return api_run_probe(probe_locks(app.config.monitoring), app.config)
from temboardagent.routing import RouteSet from temboardagent.toolkit.configuration import OptionSpec from temboardagent.toolkit.validators import file_ import datetime import os.path from pickle import loads as unpickle from temboardagent.errors import HTTPError from temboardagent.toolkit import taskmanager from . import functions import pgbackrest import pitrery logger = logging.getLogger('backup') routes = RouteSet(prefix=b'/backup') __version__ = '1.0' T_OPERATION_ID = b'(^[0-9a-f]{8}$)' class _BackupTool(object): def __new__(self, tool): if tool == 'pitrery': return pitrery return pgbackrest @routes.get(b'', check_session=False) def get_plugin_info(http_context, app):