python3-cyberfusion-queue-support 2.6.3__tar.gz → 2.7__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.
- {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/PKG-INFO +1 -1
- {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/pyproject.toml +1 -1
- {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/__init__.py +2 -8
- {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/database.py +28 -12
- python3_cyberfusion_queue_support-2.7/src/cyberfusion/QueueSupport/encoders.py +42 -0
- {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/items/database_user_drop.py +3 -3
- {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/items/database_user_ensure_state.py +3 -3
- {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/python3_cyberfusion_queue_support.egg-info/PKG-INFO +1 -1
- python3_cyberfusion_queue_support-2.6.3/src/cyberfusion/QueueSupport/encoders.py +0 -21
- {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/README.md +0 -0
- {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/setup.cfg +0 -0
- {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/exceptions/__init__.py +0 -0
- {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/interfaces.py +0 -0
- {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/items/__init__.py +0 -0
- {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/items/chmod.py +0 -0
- {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/items/chown.py +0 -0
- {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/items/command.py +0 -0
- {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/items/copy.py +0 -0
- {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/items/database_create.py +0 -0
- {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/items/database_drop.py +0 -0
- {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/items/database_user_grant_grant.py +0 -0
- {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/items/database_user_grant_revoke.py +0 -0
- {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/items/mkdir.py +0 -0
- {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/items/move.py +0 -0
- {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/items/rmtree.py +0 -0
- {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/items/systemd_daemon_reload.py +0 -0
- {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/items/systemd_tmp_files_create.py +0 -0
- {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/items/systemd_unit_disable.py +0 -0
- {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/items/systemd_unit_enable.py +0 -0
- {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/items/systemd_unit_reload.py +0 -0
- {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/items/systemd_unit_restart.py +0 -0
- {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/items/systemd_unit_start.py +0 -0
- {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/items/systemd_unit_stop.py +0 -0
- {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/items/unlink.py +0 -0
- {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/migrations/__init__.py +0 -0
- {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/migrations/env.py +0 -0
- {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/migrations/versions/571e55ab5ed5_initial_migration.py +0 -0
- {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/migrations/versions/8023b9eecdd1_add_traceback_to_queue_items.py +0 -0
- {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/migrations/versions/9ae29b5db790_add_string_to_queue_item_outcomes.py +0 -0
- {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/migrations/versions/__init__.py +0 -0
- {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/outcomes.py +0 -0
- {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/sentinels.py +0 -0
- {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/settings.py +0 -0
- {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/utilities.py +0 -0
- {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/python3_cyberfusion_queue_support.egg-info/SOURCES.txt +0 -0
- {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/python3_cyberfusion_queue_support.egg-info/dependency_links.txt +0 -0
- {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/python3_cyberfusion_queue_support.egg-info/entry_points.txt +0 -0
- {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/python3_cyberfusion_queue_support.egg-info/requires.txt +0 -0
- {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/python3_cyberfusion_queue_support.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python3-cyberfusion-queue-support
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.7
|
|
4
4
|
Summary: Library to queue actions.
|
|
5
5
|
Author-email: Cyberfusion <support@cyberfusion.io>
|
|
6
6
|
Project-URL: Source, https://github.com/CyberfusionIO/python3-cyberfusion-queue-support
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"""Classes for queue."""
|
|
2
2
|
|
|
3
3
|
import logging
|
|
4
|
-
from copy import copy
|
|
5
4
|
from dataclasses import dataclass
|
|
6
5
|
from typing import List
|
|
7
6
|
import traceback
|
|
@@ -62,18 +61,13 @@ class Queue:
|
|
|
62
61
|
else:
|
|
63
62
|
deduplicated = True
|
|
64
63
|
|
|
65
|
-
item_dict = copy(item.__dict__)
|
|
66
|
-
|
|
67
|
-
del item_dict["_reference"]
|
|
68
|
-
del item_dict["_hide_outcomes"]
|
|
69
|
-
|
|
70
64
|
object_ = QueueItem(
|
|
71
65
|
queue=self.queue_database_object,
|
|
72
66
|
type=item.__class__.__name__,
|
|
73
67
|
reference=item.reference,
|
|
74
68
|
hide_outcomes=item.hide_outcomes,
|
|
75
69
|
deduplicated=deduplicated,
|
|
76
|
-
attributes=
|
|
70
|
+
attributes=item,
|
|
77
71
|
traceback=None,
|
|
78
72
|
)
|
|
79
73
|
|
|
@@ -141,7 +135,7 @@ class Queue:
|
|
|
141
135
|
queue_item=item_mapping.database_object,
|
|
142
136
|
queue_process=process_object,
|
|
143
137
|
type=outcome.__class__.__name__,
|
|
144
|
-
attributes=outcome
|
|
138
|
+
attributes=outcome,
|
|
145
139
|
string=str(outcome),
|
|
146
140
|
)
|
|
147
141
|
)
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import json
|
|
2
|
+
|
|
1
3
|
from alembic.config import Config
|
|
2
4
|
import os
|
|
3
5
|
import functools
|
|
@@ -13,19 +15,13 @@ from sqlalchemy.ext.declarative import declarative_base
|
|
|
13
15
|
from sqlalchemy import event
|
|
14
16
|
from sqlalchemy.types import JSON
|
|
15
17
|
|
|
16
|
-
from cyberfusion.QueueSupport.encoders import
|
|
18
|
+
from cyberfusion.QueueSupport.encoders import CustomEncoder
|
|
17
19
|
from cyberfusion.QueueSupport.settings import settings
|
|
18
20
|
|
|
19
21
|
|
|
20
22
|
def set_sqlite_pragma(
|
|
21
23
|
dbapi_connection: sqlite3.Connection, connection_record: _ConnectionRecord
|
|
22
24
|
) -> None:
|
|
23
|
-
"""Enable foreign key support.
|
|
24
|
-
|
|
25
|
-
This is needed for cascade deletes to work.
|
|
26
|
-
|
|
27
|
-
See https://docs.sqlalchemy.org/en/13/dialects/sqlite.html#sqlite-foreign-keys
|
|
28
|
-
"""
|
|
29
25
|
cursor = dbapi_connection.cursor()
|
|
30
26
|
|
|
31
27
|
cursor.execute("PRAGMA foreign_keys=ON")
|
|
@@ -51,7 +47,7 @@ def run_migrations() -> None:
|
|
|
51
47
|
def make_database_session() -> Session:
|
|
52
48
|
engine = create_engine(
|
|
53
49
|
settings.database_path,
|
|
54
|
-
json_serializer=
|
|
50
|
+
json_serializer=lambda obj: json.dumps(obj, cls=CustomEncoder),
|
|
55
51
|
)
|
|
56
52
|
|
|
57
53
|
event.listen(engine, "connect", set_sqlite_pragma)
|
|
@@ -88,6 +84,15 @@ class Queue(BaseModel):
|
|
|
88
84
|
|
|
89
85
|
__tablename__ = "queues"
|
|
90
86
|
|
|
87
|
+
queue_items = relationship(
|
|
88
|
+
"QueueItem",
|
|
89
|
+
back_populates="queue",
|
|
90
|
+
)
|
|
91
|
+
queue_processes = relationship(
|
|
92
|
+
"QueueProcess",
|
|
93
|
+
back_populates="queue",
|
|
94
|
+
)
|
|
95
|
+
|
|
91
96
|
|
|
92
97
|
class QueueProcess(BaseModel):
|
|
93
98
|
"""QueueProcess model."""
|
|
@@ -95,9 +100,14 @@ class QueueProcess(BaseModel):
|
|
|
95
100
|
__tablename__ = "queue_processes"
|
|
96
101
|
|
|
97
102
|
queue_id = Column(Integer, ForeignKey("queues.id"), nullable=False)
|
|
98
|
-
queue = relationship("Queue")
|
|
99
103
|
preview = Column(Boolean, nullable=False)
|
|
100
104
|
|
|
105
|
+
queue = relationship("Queue", back_populates="queue_processes")
|
|
106
|
+
queue_item_outcomes = relationship(
|
|
107
|
+
"QueueItemOutcome",
|
|
108
|
+
back_populates="queue_process",
|
|
109
|
+
)
|
|
110
|
+
|
|
101
111
|
|
|
102
112
|
class QueueItem(BaseModel):
|
|
103
113
|
"""QueueItem model."""
|
|
@@ -105,7 +115,6 @@ class QueueItem(BaseModel):
|
|
|
105
115
|
__tablename__ = "queue_items"
|
|
106
116
|
|
|
107
117
|
queue_id = Column(Integer, ForeignKey("queues.id"), nullable=False)
|
|
108
|
-
queue = relationship("Queue")
|
|
109
118
|
type = Column(String(length=255), nullable=False)
|
|
110
119
|
reference = Column(String(length=255), nullable=True)
|
|
111
120
|
hide_outcomes = Column(Boolean, nullable=False)
|
|
@@ -113,6 +122,12 @@ class QueueItem(BaseModel):
|
|
|
113
122
|
attributes = Column(JSON, nullable=False)
|
|
114
123
|
traceback = Column(String(), nullable=True)
|
|
115
124
|
|
|
125
|
+
queue = relationship("Queue", back_populates="queue_items")
|
|
126
|
+
queue_item_outcomes = relationship(
|
|
127
|
+
"QueueItemOutcome",
|
|
128
|
+
back_populates="queue_item",
|
|
129
|
+
)
|
|
130
|
+
|
|
116
131
|
|
|
117
132
|
class QueueItemOutcome(BaseModel):
|
|
118
133
|
"""QueueItemOutcome model."""
|
|
@@ -120,9 +135,10 @@ class QueueItemOutcome(BaseModel):
|
|
|
120
135
|
__tablename__ = "queue_item_outcomes"
|
|
121
136
|
|
|
122
137
|
queue_item_id = Column(Integer, ForeignKey("queue_items.id"), nullable=False)
|
|
123
|
-
queue_item = relationship("QueueItem")
|
|
124
138
|
queue_process_id = Column(Integer, ForeignKey("queue_processes.id"), nullable=False)
|
|
125
|
-
queue_process = relationship("QueueProcess")
|
|
126
139
|
type = Column(String(length=255), nullable=False)
|
|
127
140
|
attributes = Column(JSON, nullable=False)
|
|
128
141
|
string = Column(String(length=255), nullable=False)
|
|
142
|
+
|
|
143
|
+
queue_item = relationship("QueueItem", back_populates="queue_item_outcomes")
|
|
144
|
+
queue_process = relationship("QueueProcess", back_populates="queue_item_outcomes")
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
from json import JSONEncoder
|
|
2
|
+
from typing import Any
|
|
3
|
+
|
|
4
|
+
from cyberfusion.DatabaseSupport.database_user_grants import DatabaseUserGrant
|
|
5
|
+
from cyberfusion.DatabaseSupport.database_users import DatabaseUser
|
|
6
|
+
from cyberfusion.DatabaseSupport.databases import Database
|
|
7
|
+
from cyberfusion.SystemdSupport import Unit
|
|
8
|
+
|
|
9
|
+
from cyberfusion.QueueSupport.outcomes import OutcomeInterface
|
|
10
|
+
from cyberfusion.QueueSupport.items import _Item
|
|
11
|
+
from cyberfusion.QueueSupport.sentinels import UNKNOWN
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class CustomEncoder(JSONEncoder):
|
|
15
|
+
def default(self, o: Any) -> Any:
|
|
16
|
+
if isinstance(o, _Item):
|
|
17
|
+
return {
|
|
18
|
+
key: value for key, value in vars(o).items() if not key.startswith("_")
|
|
19
|
+
}
|
|
20
|
+
elif isinstance(o, OutcomeInterface):
|
|
21
|
+
return vars(o)
|
|
22
|
+
elif isinstance(o, Unit):
|
|
23
|
+
return {"name": o.name}
|
|
24
|
+
elif isinstance(o, Database):
|
|
25
|
+
return {"name": o.name, "server_software_name": o.server_software_name}
|
|
26
|
+
elif isinstance(o, DatabaseUser):
|
|
27
|
+
return {
|
|
28
|
+
"name": o.name,
|
|
29
|
+
"server_software_name": o.server_software_name,
|
|
30
|
+
"host": o.host,
|
|
31
|
+
}
|
|
32
|
+
elif isinstance(o, DatabaseUserGrant):
|
|
33
|
+
return {
|
|
34
|
+
"database": o.database,
|
|
35
|
+
"database_user": o.database_user,
|
|
36
|
+
"privileges_name": o.privilege_names,
|
|
37
|
+
"table_name": o.table_name,
|
|
38
|
+
}
|
|
39
|
+
elif o == UNKNOWN:
|
|
40
|
+
return "unknown"
|
|
41
|
+
|
|
42
|
+
return super().default(o)
|
|
@@ -31,7 +31,7 @@ class DatabaseUserDropItem(_Item):
|
|
|
31
31
|
"""Set attributes."""
|
|
32
32
|
self.server_software_name = server_software_name
|
|
33
33
|
self.name = name
|
|
34
|
-
self.
|
|
34
|
+
self.host = host
|
|
35
35
|
self._reference = reference
|
|
36
36
|
self._hide_outcomes = hide_outcomes
|
|
37
37
|
|
|
@@ -43,7 +43,7 @@ class DatabaseUserDropItem(_Item):
|
|
|
43
43
|
),
|
|
44
44
|
name=self.name,
|
|
45
45
|
server_software_name=self.server_software_name,
|
|
46
|
-
host=self.
|
|
46
|
+
host=self.host,
|
|
47
47
|
)
|
|
48
48
|
|
|
49
49
|
@property
|
|
@@ -77,5 +77,5 @@ class DatabaseUserDropItem(_Item):
|
|
|
77
77
|
return (
|
|
78
78
|
other.server_software_name == self.server_software_name
|
|
79
79
|
and other.name == self.name
|
|
80
|
-
and other.
|
|
80
|
+
and other.host == self.host
|
|
81
81
|
)
|
|
@@ -34,7 +34,7 @@ class DatabaseUserEnsureStateItem(_Item):
|
|
|
34
34
|
self.server_software_name = server_software_name
|
|
35
35
|
self.name = name
|
|
36
36
|
self.password = password
|
|
37
|
-
self.
|
|
37
|
+
self.host = host
|
|
38
38
|
self._reference = reference
|
|
39
39
|
self._hide_outcomes = hide_outcomes
|
|
40
40
|
|
|
@@ -47,7 +47,7 @@ class DatabaseUserEnsureStateItem(_Item):
|
|
|
47
47
|
name=self.name,
|
|
48
48
|
server_software_name=self.server_software_name,
|
|
49
49
|
password=self.password,
|
|
50
|
-
host=self.
|
|
50
|
+
host=self.host,
|
|
51
51
|
)
|
|
52
52
|
|
|
53
53
|
@property
|
|
@@ -95,6 +95,6 @@ class DatabaseUserEnsureStateItem(_Item):
|
|
|
95
95
|
return (
|
|
96
96
|
other.server_software_name == self.server_software_name
|
|
97
97
|
and other.name == self.name
|
|
98
|
-
and other.
|
|
98
|
+
and other.host == self.host
|
|
99
99
|
and other.password == self.password
|
|
100
100
|
)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python3-cyberfusion-queue-support
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.7
|
|
4
4
|
Summary: Library to queue actions.
|
|
5
5
|
Author-email: Cyberfusion <support@cyberfusion.io>
|
|
6
6
|
Project-URL: Source, https://github.com/CyberfusionIO/python3-cyberfusion-queue-support
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import json
|
|
2
|
-
from json import JSONEncoder
|
|
3
|
-
from typing import Any
|
|
4
|
-
|
|
5
|
-
from cyberfusion.SystemdSupport import Unit
|
|
6
|
-
|
|
7
|
-
from cyberfusion.QueueSupport.sentinels import UNKNOWN
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
class CustomEncoder(JSONEncoder):
|
|
11
|
-
def default(self, o: Any) -> Any:
|
|
12
|
-
if isinstance(o, Unit):
|
|
13
|
-
return {"name": o.name}
|
|
14
|
-
elif o == UNKNOWN:
|
|
15
|
-
return "unknown"
|
|
16
|
-
|
|
17
|
-
return super().default(o)
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
def json_serialize(obj: Any) -> str:
|
|
21
|
-
return json.dumps(obj, cls=CustomEncoder)
|
|
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
|