jaseci 1.4.0.9__py3-none-any.whl → 1.4.0.11__py3-none-any.whl

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 jaseci might be problematic. Click here for more details.

Files changed (87) hide show
  1. jaseci/VERSION +1 -1
  2. jaseci/__init__.py +3 -0
  3. jaseci/actions/standard/elastic.py +3 -2
  4. jaseci/actions/standard/mail.py +3 -2
  5. jaseci/actions/standard/std.py +3 -2
  6. jaseci/actions/standard/stripe.py +3 -2
  7. jaseci/actions/standard/task.py +3 -5
  8. jaseci/actions/standard/tests/test_mail_lib.py +8 -7
  9. jaseci/actions/tests/test_std.py +4 -5
  10. jaseci/actor/walker.py +6 -3
  11. jaseci/api/config_api.py +3 -2
  12. jaseci/api/jac_api.py +2 -2
  13. jaseci/api/jsorc_api.py +60 -121
  14. jaseci/api/prometheus_api.py +14 -20
  15. jaseci/api/queue_api.py +9 -5
  16. jaseci/api/tests/test_global_api.py +3 -3
  17. jaseci/api/tests/test_logger_api.py +3 -3
  18. jaseci/api/user_api.py +3 -3
  19. jaseci/api/webhook_api.py +6 -4
  20. jaseci/attr/action.py +10 -4
  21. jaseci/element/master.py +2 -0
  22. jaseci/element/super_master.py +2 -0
  23. jaseci/hook/memory.py +3 -1
  24. jaseci/hook/redis.py +5 -4
  25. jaseci/jac/interpreter/interp.py +16 -4
  26. jaseci/jac/tests/test_book.py +2 -2
  27. jaseci/jsctl/jsctl.py +48 -15
  28. jaseci/jsctl/tests/test_jsctl.py +5 -0
  29. jaseci/jsorc.py +733 -0
  30. jaseci/jsorc_settings.py +184 -0
  31. jaseci/manifests/database.yaml +107 -0
  32. jaseci/manifests/elastic.yaml +5923 -0
  33. jaseci/manifests/prometheus.yaml +1273 -0
  34. jaseci/{svc/jsorc-backup/jaseci-redis.yaml → manifests/redis.yaml} +20 -0
  35. jaseci/svc/__init__.py +0 -25
  36. jaseci/svc/{elastic/elastic.py → elastic_svc.py} +5 -16
  37. jaseci/svc/kube_svc.py +240 -0
  38. jaseci/svc/{mail/mail.py → mail_svc.py} +14 -17
  39. jaseci/svc/{prometheus/prometheus.py → prome_svc.py} +5 -16
  40. jaseci/svc/{redis/redis.py → redis_svc.py} +14 -26
  41. jaseci/svc/{stripe/stripe.py → stripe_svc.py} +4 -7
  42. jaseci/svc/{task/task.py → task_svc.py} +27 -24
  43. jaseci/svc/{task/common.py → tasks.py} +287 -293
  44. jaseci/tests/jac_test_progs.py +21 -0
  45. jaseci/tests/test_core.py +14 -15
  46. jaseci/tests/test_jac.py +59 -60
  47. jaseci/tests/test_node.py +6 -13
  48. jaseci/tests/test_progs.py +74 -52
  49. jaseci/tests/test_stripe.py +6 -10
  50. jaseci/utils/actions/actions_manager.py +254 -0
  51. jaseci/{svc/actions_optimizer → utils/actions}/actions_optimizer.py +9 -19
  52. jaseci/utils/json_handler.py +2 -3
  53. jaseci/utils/test_core.py +4 -5
  54. jaseci/utils/utils.py +12 -0
  55. {jaseci-1.4.0.9.dist-info → jaseci-1.4.0.11.dist-info}/METADATA +2 -1
  56. {jaseci-1.4.0.9.dist-info → jaseci-1.4.0.11.dist-info}/RECORD +63 -80
  57. jaseci/svc/common.py +0 -763
  58. jaseci/svc/config.py +0 -9
  59. jaseci/svc/elastic/__init__.py +0 -3
  60. jaseci/svc/elastic/config.py +0 -8
  61. jaseci/svc/elastic/manifest.py +0 -1
  62. jaseci/svc/jsorc-backup/jsorc.py +0 -182
  63. jaseci/svc/jsorc-backup/promon/__init__.py +0 -0
  64. jaseci/svc/jsorc-backup/promon/promon.py +0 -202
  65. jaseci/svc/mail/__init__.py +0 -4
  66. jaseci/svc/mail/config.py +0 -25
  67. jaseci/svc/meta.py +0 -164
  68. jaseci/svc/postgres/__init__.py +0 -0
  69. jaseci/svc/postgres/manifest.py +0 -106
  70. jaseci/svc/prometheus/__init__.py +0 -5
  71. jaseci/svc/prometheus/config.py +0 -11
  72. jaseci/svc/prometheus/manifest.py +0 -1102
  73. jaseci/svc/redis/__init__.py +0 -5
  74. jaseci/svc/redis/config.py +0 -10
  75. jaseci/svc/redis/manifest.py +0 -65
  76. jaseci/svc/state.py +0 -17
  77. jaseci/svc/stripe/__init__.py +0 -3
  78. jaseci/svc/stripe/config.py +0 -7
  79. jaseci/svc/task/__init__.py +0 -5
  80. jaseci/svc/task/config.py +0 -17
  81. /jaseci/{svc/actions_optimizer → manifests}/__init__.py +0 -0
  82. /jaseci/{svc/jsorc-backup → utils/actions}/__init__.py +0 -0
  83. /jaseci/{svc/actions_optimizer → utils/actions}/actions_state.py +0 -0
  84. {jaseci-1.4.0.9.dist-info → jaseci-1.4.0.11.dist-info}/LICENSE +0 -0
  85. {jaseci-1.4.0.9.dist-info → jaseci-1.4.0.11.dist-info}/WHEEL +0 -0
  86. {jaseci-1.4.0.9.dist-info → jaseci-1.4.0.11.dist-info}/entry_points.txt +0 -0
  87. {jaseci-1.4.0.9.dist-info → jaseci-1.4.0.11.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,184 @@
1
+ import os
2
+ import yaml
3
+
4
+
5
+ def load_default_yaml(file):
6
+ manifest = {}
7
+ with open(
8
+ f"{os.path.dirname(os.path.abspath(__file__))}/manifests/{file}.yaml", "r"
9
+ ) as stream:
10
+ try:
11
+ for conf in yaml.safe_load_all(stream):
12
+ kind = conf["kind"]
13
+ if not manifest.get(kind):
14
+ manifest[kind] = []
15
+ manifest[kind].append(conf)
16
+ except yaml.YAMLError as exc:
17
+ print(exc)
18
+
19
+ return manifest
20
+
21
+
22
+ class JsOrcSettings:
23
+ ###############################################################################################################
24
+ # ------------------------------------------------- DEFAULT ------------------------------------------------- #
25
+ ###############################################################################################################
26
+
27
+ DEFAULT_CONFIG = {"enabled": False, "quiet": False, "automated": False}
28
+
29
+ DEFAULT_MANIFEST = {}
30
+
31
+ UNSAFE_PARAPHRASE = "I know what I'm doing!"
32
+ UNSAFE_KINDS = ["PersistentVolumeClaim"]
33
+
34
+ ###############################################################################################################
35
+ # -------------------------------------------------- JSORC -------------------------------------------------- #
36
+ ###############################################################################################################
37
+
38
+ JSORC_CONFIG = {
39
+ "backoff_interval": 10,
40
+ "pre_loaded_services": ["kube", "redis", "prome", "mail", "task", "elastic"],
41
+ }
42
+
43
+ ###############################################################################################################
44
+ # -------------------------------------------------- KUBE --------------------------------------------------- #
45
+ ###############################################################################################################
46
+
47
+ KUBE_CONFIG = {
48
+ "enabled": bool(os.getenv("KUBE_NAMESPACE")),
49
+ "quiet": True,
50
+ "automated": False,
51
+ "namespace": os.getenv("KUBE_NAMESPACE", "default"),
52
+ "in_cluster": True,
53
+ "config": None,
54
+ }
55
+
56
+ ###############################################################################################################
57
+ # -------------------------------------------------- REDIS -------------------------------------------------- #
58
+ ###############################################################################################################
59
+
60
+ REDIS_CONFIG = {
61
+ "enabled": True,
62
+ "quiet": True,
63
+ "automated": True,
64
+ "host": os.getenv("REDIS_HOST", "localhost"),
65
+ "port": os.getenv("REDIS_PORT", "6379"),
66
+ "db": os.getenv("REDIS_DB", "1"),
67
+ }
68
+
69
+ REDIS_MANIFEST = load_default_yaml("redis")
70
+
71
+ ###############################################################################################################
72
+ # -------------------------------------------------- TASK --------------------------------------------------- #
73
+ ###############################################################################################################
74
+
75
+ DEFAULT_REDIS_URL = (
76
+ f'redis://{os.getenv("REDIS_HOST", "localhost")}'
77
+ f':{os.getenv("REDIS_PORT", "6379")}/{os.getenv("REDIS_DB", "1")}'
78
+ )
79
+
80
+ TASK_CONFIG = {
81
+ "enabled": True,
82
+ "quiet": True,
83
+ "automated": True,
84
+ "broker_url": DEFAULT_REDIS_URL,
85
+ "result_backend": DEFAULT_REDIS_URL,
86
+ "broker_connection_retry_on_startup": True,
87
+ "task_track_started": True,
88
+ "worker_redirect_stdouts": False,
89
+ }
90
+
91
+ ###############################################################################################################
92
+ # -------------------------------------------------- MAIL --------------------------------------------------- #
93
+ ###############################################################################################################
94
+
95
+ MAIL_CONFIG = {
96
+ "enabled": False,
97
+ "quiet": True,
98
+ "automated": False,
99
+ "version": 2,
100
+ "tls": True,
101
+ "host": "",
102
+ "port": 587,
103
+ "sender": "",
104
+ "user": "",
105
+ "pass": "",
106
+ "backend": "smtp",
107
+ "templates": {
108
+ "activation_subj": "Please activate your account!",
109
+ "activation_body": "Thank you for creating an account!\n\n"
110
+ "Activation Code: {{code}}\n"
111
+ "Please click below to activate:\n{{link}}",
112
+ "activation_html_body": "Thank you for creating an account!<br><br>"
113
+ "Activation Code: {{code}}<br>"
114
+ "Please click below to activate:<br>"
115
+ "{{link}}",
116
+ "resetpass_subj": "Password Reset for Jaseci Account",
117
+ "resetpass_body": "Your Jaseci password reset token is: {{token}}",
118
+ "resetpass_html_body": "Your Jaseci password reset" "token is: {{token}}",
119
+ },
120
+ }
121
+
122
+ ###############################################################################################################
123
+ # ------------------------------------------------- STRIPE -------------------------------------------------- #
124
+ ###############################################################################################################
125
+
126
+ STRIPE_CONFIG = {
127
+ "enabled": False,
128
+ "api_key": None,
129
+ "automated": False,
130
+ "webhook_key": None,
131
+ "fallback_walker": "stripe",
132
+ "event_walker": {},
133
+ }
134
+
135
+ ###############################################################################################################
136
+ # ----------------------------------------------- PROMETHEUS ------------------------------------------------ #
137
+ ###############################################################################################################
138
+
139
+ PROME_CONFIG = {
140
+ "enabled": bool(os.getenv("PROME_HOST")),
141
+ "quiet": True,
142
+ "automated": True,
143
+ "url": (
144
+ f'http://{os.getenv("PROME_HOST", "localhost")}'
145
+ f':{os.getenv("PROME_PORT", "9090")}'
146
+ ),
147
+ }
148
+
149
+ PROME_MANIFEST = load_default_yaml("prometheus")
150
+
151
+ ###############################################################################################################
152
+ # ------------------------------------------------ ELASTIC -------------------------------------------------- #
153
+ ###############################################################################################################
154
+
155
+ ELASTIC_CONFIG = {
156
+ "enabled": bool(os.getenv("ELASTIC_HOST")),
157
+ "quiet": False,
158
+ "automated": True,
159
+ "url": (
160
+ f'http://{os.getenv("ELASTIC_HOST", "localhost")}'
161
+ f':{os.getenv("ELASTIC_PORT", "9200")}'
162
+ ),
163
+ "auth": os.getenv("ELASTIC_AUTH"),
164
+ "common_index": "common",
165
+ "activity_index": "activity",
166
+ }
167
+
168
+ ELASTIC_MANIFEST = load_default_yaml("elastic")
169
+
170
+ ###############################################################################################################
171
+ # ------------------------------------------------ DATABASE ------------------------------------------------- #
172
+ ###############################################################################################################
173
+
174
+ DB_REGEN_CONFIG = {
175
+ "enabled": os.environ.get("JSORC_DB_REGEN") == "true",
176
+ "pod": os.environ.get("JSORC_POD_NAME", "jaseci"),
177
+ "host": os.environ.get("POSTGRES_HOST", "jaseci-db"),
178
+ "db": os.environ.get("DBNAME", "postgres"),
179
+ "user": os.environ.get("POSTGRES_USER"),
180
+ "password": os.environ.get("POSTGRES_PASSWORD"),
181
+ "port": os.getenv("POSTGRES_PORT", 5432),
182
+ }
183
+
184
+ DB_REGEN_MANIFEST = load_default_yaml("database")
@@ -0,0 +1,107 @@
1
+ apiVersion: v1
2
+ kind: Service
3
+ metadata:
4
+ creationTimestamp: null
5
+ name: jaseci-db
6
+ spec:
7
+ internalTrafficPolicy: Cluster
8
+ ports:
9
+ - port: 5432
10
+ protocol: TCP
11
+ targetPort: 5432
12
+ selector:
13
+ pod: jaseci-db
14
+ sessionAffinity: None
15
+ type: ClusterIP
16
+ status:
17
+ loadBalancer: {}
18
+
19
+ ---
20
+
21
+ apiVersion: v1
22
+ data:
23
+ password: bGlmZWxvZ2lmeWphc2VjaQ==
24
+ user: cG9zdGdyZXM=
25
+ kind: Secret
26
+ metadata:
27
+ creationTimestamp: null
28
+ name: jaseci-db-credentials
29
+ type: Opaque
30
+
31
+ ---
32
+
33
+ apiVersion: v1
34
+ kind: PersistentVolumeClaim
35
+ metadata:
36
+ creationTimestamp: null
37
+ name: jaseci-db-pvc
38
+ spec:
39
+ accessModes:
40
+ - ReadWriteOnce
41
+ resources:
42
+ requests:
43
+ storage: 10Gi
44
+ volumeMode: Filesystem
45
+ status:
46
+ phase: Pending
47
+
48
+ ---
49
+
50
+ apiVersion: apps/v1
51
+ kind: Deployment
52
+ metadata:
53
+ creationTimestamp: null
54
+ name: jaseci-db
55
+ spec:
56
+ progressDeadlineSeconds: 600
57
+ replicas: 1
58
+ revisionHistoryLimit: 10
59
+ selector:
60
+ matchLabels:
61
+ pod: jaseci-db
62
+ strategy:
63
+ rollingUpdate:
64
+ maxSurge: 25%
65
+ maxUnavailable: 25%
66
+ type: RollingUpdate
67
+ template:
68
+ metadata:
69
+ creationTimestamp: null
70
+ labels:
71
+ pod: jaseci-db
72
+ spec:
73
+ containers:
74
+ - env:
75
+ - name: POSTGRES_USER
76
+ valueFrom:
77
+ secretKeyRef:
78
+ key: user
79
+ name: jaseci-db-credentials
80
+ - name: POSTGRES_PASSWORD
81
+ valueFrom:
82
+ secretKeyRef:
83
+ key: password
84
+ name: jaseci-db-credentials
85
+ image: postgres:alpine
86
+ imagePullPolicy: IfNotPresent
87
+ name: jaseci-db
88
+ ports:
89
+ - containerPort: 5432
90
+ protocol: TCP
91
+ resources: {}
92
+ terminationMessagePath: /dev/termination-log
93
+ terminationMessagePolicy: File
94
+ volumeMounts:
95
+ - mountPath: /var/lib/postgresql/data
96
+ name: jaseci-db-volume
97
+ subPath: jaseci
98
+ dnsPolicy: ClusterFirst
99
+ restartPolicy: Always
100
+ schedulerName: default-scheduler
101
+ securityContext: {}
102
+ terminationGracePeriodSeconds: 30
103
+ volumes:
104
+ - name: jaseci-db-volume
105
+ persistentVolumeClaim:
106
+ claimName: jaseci-db-pvc
107
+ status: {}