dbos 1.11.0a2__tar.gz → 1.11.0a4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of dbos might be problematic. Click here for more details.
- {dbos-1.11.0a2 → dbos-1.11.0a4}/PKG-INFO +1 -1
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/cli/migration.py +12 -8
- {dbos-1.11.0a2 → dbos-1.11.0a4}/pyproject.toml +1 -1
- {dbos-1.11.0a2 → dbos-1.11.0a4}/tests/test_migrate.py +11 -9
- {dbos-1.11.0a2 → dbos-1.11.0a4}/LICENSE +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/README.md +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/__init__.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/__main__.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_admin_server.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_app_db.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_classproperty.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_client.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_conductor/conductor.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_conductor/protocol.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_context.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_core.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_croniter.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_dbos.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_dbos_config.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_debug.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_docker_pg_helper.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_error.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_event_loop.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_fastapi.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_flask.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_kafka.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_kafka_message.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_logger.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_migrations/env.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_migrations/script.py.mako +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_migrations/versions/01ce9f07bd10_streaming.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_migrations/versions/04ca4f231047_workflow_queues_executor_id.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_migrations/versions/27ac6900c6ad_add_queue_dedup.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_migrations/versions/50f3227f0b4b_fix_job_queue.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_migrations/versions/5c361fc04708_added_system_tables.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_migrations/versions/66478e1b95e5_consolidate_queues.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_migrations/versions/83f3732ae8e7_workflow_timeout.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_migrations/versions/933e86bdac6a_add_queue_priority.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_migrations/versions/a3b18ad34abe_added_triggers.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_migrations/versions/d76646551a6b_job_queue_limiter.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_migrations/versions/d76646551a6c_workflow_queue.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_migrations/versions/d994145b47b6_consolidate_inputs.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_migrations/versions/eab0cc1d9a14_job_queue.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_migrations/versions/f4b9b32ba814_functionname_childid_op_outputs.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_outcome.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_queue.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_recovery.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_registrations.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_roles.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_scheduler.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_schemas/__init__.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_schemas/application_database.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_schemas/system_database.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_serialization.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_sys_db.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_templates/dbos-db-starter/README.md +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_templates/dbos-db-starter/__package/__init__.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_templates/dbos-db-starter/__package/main.py.dbos +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_templates/dbos-db-starter/__package/schema.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_templates/dbos-db-starter/alembic.ini +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_templates/dbos-db-starter/dbos-config.yaml.dbos +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_templates/dbos-db-starter/migrations/env.py.dbos +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_templates/dbos-db-starter/migrations/script.py.mako +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_templates/dbos-db-starter/migrations/versions/2024_07_31_180642_init.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_templates/dbos-db-starter/start_postgres_docker.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_tracer.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_utils.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_workflow_commands.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/cli/_github_init.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/cli/_template_init.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/cli/cli.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/dbos-config.schema.json +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/py.typed +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/tests/__init__.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/tests/atexit_no_ctor.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/tests/atexit_no_launch.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/tests/classdefs.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/tests/client_collateral.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/tests/client_worker.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/tests/conftest.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/tests/dupname_classdefs1.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/tests/dupname_classdefsa.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/tests/more_classdefs.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/tests/queuedworkflow.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/tests/test_admin_server.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/tests/test_async.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/tests/test_async_workflow_management.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/tests/test_classdecorators.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/tests/test_cli.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/tests/test_client.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/tests/test_concurrency.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/tests/test_config.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/tests/test_croniter.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/tests/test_dbos.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/tests/test_debug.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/tests/test_docker_secrets.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/tests/test_failures.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/tests/test_fastapi.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/tests/test_fastapi_roles.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/tests/test_flask.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/tests/test_kafka.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/tests/test_outcome.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/tests/test_package.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/tests/test_queue.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/tests/test_scheduler.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/tests/test_schema_migration.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/tests/test_singleton.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/tests/test_spans.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/tests/test_sqlalchemy.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/tests/test_streaming.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/tests/test_workflow_introspection.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/tests/test_workflow_management.py +0 -0
- {dbos-1.11.0a2 → dbos-1.11.0a4}/version/__init__.py +0 -0
|
@@ -46,40 +46,44 @@ def grant_dbos_schema_permissions(database_url: str, role_name: str) -> None:
|
|
|
46
46
|
)
|
|
47
47
|
engine = None
|
|
48
48
|
try:
|
|
49
|
-
engine = sa.create_engine(
|
|
49
|
+
engine = sa.create_engine(
|
|
50
|
+
sa.make_url(database_url).set(drivername="postgresql+psycopg")
|
|
51
|
+
)
|
|
50
52
|
with engine.connect() as connection:
|
|
51
53
|
connection.execution_options(isolation_level="AUTOCOMMIT")
|
|
52
54
|
|
|
53
55
|
# Grant usage on the dbos schema
|
|
54
|
-
sql = f
|
|
56
|
+
sql = f'GRANT USAGE ON SCHEMA dbos TO "{role_name}"'
|
|
55
57
|
typer.echo(sql)
|
|
56
58
|
connection.execute(sa.text(sql))
|
|
57
59
|
|
|
58
60
|
# Grant all privileges on all existing tables in dbos schema (includes views)
|
|
59
|
-
sql = f
|
|
61
|
+
sql = f'GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA dbos TO "{role_name}"'
|
|
60
62
|
typer.echo(sql)
|
|
61
63
|
connection.execute(sa.text(sql))
|
|
62
64
|
|
|
63
65
|
# Grant all privileges on all sequences in dbos schema
|
|
64
|
-
sql =
|
|
66
|
+
sql = (
|
|
67
|
+
f'GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA dbos TO "{role_name}"'
|
|
68
|
+
)
|
|
65
69
|
typer.echo(sql)
|
|
66
70
|
connection.execute(sa.text(sql))
|
|
67
71
|
|
|
68
72
|
# Grant execute on all functions and procedures in dbos schema
|
|
69
|
-
sql = f
|
|
73
|
+
sql = f'GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA dbos TO "{role_name}"'
|
|
70
74
|
typer.echo(sql)
|
|
71
75
|
connection.execute(sa.text(sql))
|
|
72
76
|
|
|
73
77
|
# Grant default privileges for future objects in dbos schema
|
|
74
|
-
sql = f
|
|
78
|
+
sql = f'ALTER DEFAULT PRIVILEGES IN SCHEMA dbos GRANT ALL ON TABLES TO "{role_name}"'
|
|
75
79
|
typer.echo(sql)
|
|
76
80
|
connection.execute(sa.text(sql))
|
|
77
81
|
|
|
78
|
-
sql = f
|
|
82
|
+
sql = f'ALTER DEFAULT PRIVILEGES IN SCHEMA dbos GRANT ALL ON SEQUENCES TO "{role_name}"'
|
|
79
83
|
typer.echo(sql)
|
|
80
84
|
connection.execute(sa.text(sql))
|
|
81
85
|
|
|
82
|
-
sql = f
|
|
86
|
+
sql = f'ALTER DEFAULT PRIVILEGES IN SCHEMA dbos GRANT EXECUTE ON FUNCTIONS TO "{role_name}"'
|
|
83
87
|
typer.echo(sql)
|
|
84
88
|
connection.execute(sa.text(sql))
|
|
85
89
|
|
|
@@ -8,12 +8,14 @@ from dbos import DBOS, DBOSConfig
|
|
|
8
8
|
def test_migrate(postgres_db_engine: sa.Engine) -> None:
|
|
9
9
|
"""Test that you can migrate with a privileged role and run DBOS with a less-privileged role"""
|
|
10
10
|
database_name = "migrate_test"
|
|
11
|
-
role_name = "
|
|
11
|
+
role_name = "migrate-test-role"
|
|
12
12
|
role_password = "migrate_test_password"
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
# Verify migration is agnostic to driver name (under the hood it uses postgresql+psycopg)
|
|
15
|
+
db_url = postgres_db_engine.url.set(database=database_name).set(
|
|
16
|
+
drivername="postgresql"
|
|
16
17
|
)
|
|
18
|
+
db_url_string = db_url.render_as_string(hide_password=False)
|
|
17
19
|
|
|
18
20
|
# Drop the DBOS database if it exists. Create a test role with no permissions.
|
|
19
21
|
with postgres_db_engine.connect() as connection:
|
|
@@ -21,15 +23,17 @@ def test_migrate(postgres_db_engine: sa.Engine) -> None:
|
|
|
21
23
|
connection.execute(
|
|
22
24
|
sa.text(f"DROP DATABASE IF EXISTS {database_name} WITH (FORCE)")
|
|
23
25
|
)
|
|
24
|
-
connection.execute(sa.text(f
|
|
26
|
+
connection.execute(sa.text(f'DROP ROLE IF EXISTS "{role_name}"'))
|
|
25
27
|
connection.execute(
|
|
26
|
-
sa.text(
|
|
28
|
+
sa.text(
|
|
29
|
+
f"CREATE ROLE \"{role_name}\" WITH LOGIN PASSWORD '{role_password}'"
|
|
30
|
+
)
|
|
27
31
|
)
|
|
28
32
|
|
|
29
33
|
# Using the admin role, create the DBOS database and verify it exists.
|
|
30
34
|
# Set permissions for the test role.
|
|
31
35
|
subprocess.check_call(
|
|
32
|
-
["dbos", "migrate", "-D",
|
|
36
|
+
["dbos", "migrate", "-D", db_url_string, "-s", db_url_string, "-r", role_name]
|
|
33
37
|
)
|
|
34
38
|
with postgres_db_engine.connect() as c:
|
|
35
39
|
c.execution_options(isolation_level="AUTOCOMMIT")
|
|
@@ -42,9 +46,7 @@ def test_migrate(postgres_db_engine: sa.Engine) -> None:
|
|
|
42
46
|
|
|
43
47
|
# Initialize DBOS with the test role. Verify various operations work.
|
|
44
48
|
test_db_url = (
|
|
45
|
-
|
|
46
|
-
.set(username=role_name)
|
|
47
|
-
.set(password=role_password)
|
|
49
|
+
db_url.set(username=role_name).set(password=role_password)
|
|
48
50
|
).render_as_string(hide_password=False)
|
|
49
51
|
DBOS.destroy(destroy_registry=True)
|
|
50
52
|
config: DBOSConfig = {
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_migrations/versions/5c361fc04708_added_system_tables.py
RENAMED
|
File without changes
|
{dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_migrations/versions/66478e1b95e5_consolidate_queues.py
RENAMED
|
File without changes
|
|
File without changes
|
{dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_migrations/versions/933e86bdac6a_add_queue_priority.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dbos-1.11.0a2 → dbos-1.11.0a4}/dbos/_migrations/versions/d994145b47b6_consolidate_inputs.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|