arkitekt-next 0.8.60__tar.gz → 0.8.62__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 arkitekt-next might be problematic. Click here for more details.
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/PKG-INFO +19 -9
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/__blok__.py +3 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/__init__.py +5 -1
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/base_models.py +2 -4
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/bloks/arkitekt.py +15 -13
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/bloks/base.py +6 -4
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/bloks/gateway.py +10 -6
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/bloks/kraph.py +4 -1
- arkitekt_next-0.8.62/arkitekt_next/bloks/local_sign.py +261 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/bloks/lok.py +5 -3
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/bloks/ollama.py +1 -4
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/bloks/orkestrator.py +4 -6
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/bloks/self_signed.py +1 -8
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/bloks/services/certer.py +2 -2
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/commands/gen/init.py +2 -2
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/commands/inspect/templates.py +0 -2
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/commands/kabinet/build.py +28 -9
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/commands/kabinet/init.py +1 -1
- {arkitekt_next-0.8.60/arkitekt_next/cli → arkitekt_next-0.8.62/arkitekt_next/cli/commands/kabinet}/io.py +3 -63
- arkitekt_next-0.8.62/arkitekt_next/cli/commands/kabinet/main.py +43 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/commands/kabinet/publish.py +2 -2
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/commands/kabinet/stage.py +1 -1
- {arkitekt_next-0.8.60/arkitekt_next/cli → arkitekt_next-0.8.62/arkitekt_next/cli/commands/kabinet}/types.py +0 -48
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/commands/kabinet/utils.py +1 -1
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/commands/kabinet/validate.py +1 -1
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/commands/manifest/inspect.py +2 -7
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/commands/manifest/main.py +0 -2
- arkitekt_next-0.8.62/arkitekt_next/cli/io.py +74 -0
- arkitekt_next-0.8.62/arkitekt_next/cli/types.py +42 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/ui.py +1 -1
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/init_registry.py +2 -11
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/qt/builders.py +2 -3
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/service_registry.py +5 -87
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/utils.py +3 -2
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/pyproject.toml +20 -10
- arkitekt_next-0.8.60/arkitekt_next/cli/commands/kabinet/main.py +0 -31
- arkitekt_next-0.8.60/arkitekt_next/cli/commands/kabinet/wizard.py +0 -329
- arkitekt_next-0.8.60/arkitekt_next/cli/commands/manifest/wizard.py +0 -94
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/LICENSE +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/README.md +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/apps/__init__.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/apps/service/__init__.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/apps/service/fakts_next.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/apps/service/fakts_qt.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/apps/service/grant_registry.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/apps/service/herre.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/apps/service/herre_qt.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/apps/types.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/bloks/__init__.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/bloks/admin.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/bloks/config.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/bloks/fluss.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/bloks/internal_docker.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/bloks/kabinet.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/bloks/livekit.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/bloks/mikro.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/bloks/minio.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/bloks/mount.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/bloks/namegen.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/bloks/postgres.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/bloks/redis.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/bloks/rekuest.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/bloks/secret.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/bloks/services/__init__.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/bloks/services/admin.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/bloks/services/config.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/bloks/services/db.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/bloks/services/gateway.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/bloks/services/livekit.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/bloks/services/lok.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/bloks/services/mount.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/bloks/services/name.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/bloks/services/ollama.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/bloks/services/redis.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/bloks/services/s3.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/bloks/services/secret.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/bloks/services/socket.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/bloks/socket.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/bloks/tailscale.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/builders.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/__init__.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/commands/call/__init__.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/commands/call/local.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/commands/call/main.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/commands/call/remote.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/commands/gen/__init__.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/commands/gen/compile.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/commands/gen/main.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/commands/gen/watch.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/commands/init/__init__.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/commands/init/main.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/commands/inspect/__init__.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/commands/inspect/main.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/commands/inspect/requirements.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/commands/inspect/variables.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/commands/kabinet/__init__.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/commands/manifest/__init__.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/commands/manifest/scopes.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/commands/manifest/version.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/commands/run/__init__.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/commands/run/dev.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/commands/run/main.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/commands/run/prod.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/commands/run/utils.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/configs/base.yaml +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/constants.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/dockerfiles/vanilla.dockerfile +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/errors.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/inspect.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/main.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/options.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/schemas/fluss.schema.graphql +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/schemas/gucker.schema.graphql +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/schemas/kabinet.schema.graphql +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/schemas/kluster.schema.graphql +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/schemas/konviktion.schema.graphql +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/schemas/kuay.schema.graphql +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/schemas/mikro.schema.graphql +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/schemas/mikro_next.schema.graphql +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/schemas/napari.schema.graphql +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/schemas/omero_ark.schema.graphql +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/schemas/port.schema.graphql +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/schemas/rekuest.schema.graphql +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/schemas/rekuest_next.schema.graphql +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/schemas/unlok.schema.graphql +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/templates/filter.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/templates/simple.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/texts.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/utils.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/validators.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/vars.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/cli/versions/v1.yaml +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/constants.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/qt/__init__.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/qt/assets/dark/gear.png +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/qt/assets/dark/green pulse.gif +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/qt/assets/dark/orange pulse.gif +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/qt/assets/dark/pink pulse.gif +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/qt/assets/dark/red pulse.gif +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/qt/assets/light/gear.png +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/qt/assets/light/green pulse.gif +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/qt/assets/light/orange pulse.gif +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/qt/assets/light/pink pulse.gif +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/qt/assets/light/red pulse.gif +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/qt/magic_bar.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/qt/types.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/qt/utils.py +0 -0
- {arkitekt_next-0.8.60 → arkitekt_next-0.8.62}/arkitekt_next/tqdm.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: arkitekt-next
|
|
3
|
-
Version: 0.8.
|
|
3
|
+
Version: 0.8.62
|
|
4
4
|
Summary: client for the arkitekt_next platform
|
|
5
5
|
License: MIT
|
|
6
6
|
Author: jhnnsrs
|
|
@@ -14,29 +14,39 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
14
14
|
Classifier: Programming Language :: Python :: 3.11
|
|
15
15
|
Classifier: Programming Language :: Python :: 3.12
|
|
16
16
|
Provides-Extra: all
|
|
17
|
+
Provides-Extra: alpaka
|
|
17
18
|
Provides-Extra: blok
|
|
18
19
|
Provides-Extra: cli
|
|
19
20
|
Provides-Extra: extended
|
|
21
|
+
Provides-Extra: fluss
|
|
22
|
+
Provides-Extra: kabinet
|
|
23
|
+
Provides-Extra: kraph
|
|
24
|
+
Provides-Extra: lovekit
|
|
25
|
+
Provides-Extra: mikro
|
|
26
|
+
Provides-Extra: reaktion
|
|
27
|
+
Provides-Extra: rekuest
|
|
20
28
|
Provides-Extra: stream
|
|
29
|
+
Provides-Extra: unlok
|
|
30
|
+
Requires-Dist: alpaka (>=0.1.17) ; (python_version >= "3.10" and python_version < "4.0") and (extra == "alpaka" or extra == "extended")
|
|
21
31
|
Requires-Dist: blok (>=0.0.22) ; (python_version >= "3.9" and python_version < "4.0") and (extra == "blok")
|
|
22
32
|
Requires-Dist: cryptography (>=40.0.8) ; (python_version >= "3.8" and python_version < "4.0") and (extra == "blok")
|
|
23
33
|
Requires-Dist: dokker (>=1.0.0)
|
|
24
34
|
Requires-Dist: fakts-next (>=1.0.4)
|
|
25
|
-
Requires-Dist: fluss-next (>=0.1.
|
|
35
|
+
Requires-Dist: fluss-next (>=0.1.96) ; extra == "fluss" or extra == "all"
|
|
26
36
|
Requires-Dist: herre-next (>=1.0.2)
|
|
27
|
-
Requires-Dist: kabinet (>=0.1.
|
|
37
|
+
Requires-Dist: kabinet (>=0.1.46) ; (python_version >= "3.9" and python_version < "4.0") and (extra == "kabinet" or extra == "all")
|
|
28
38
|
Requires-Dist: koil (>=1.0.3)
|
|
29
|
-
Requires-Dist: kraph (>=0.1.
|
|
30
|
-
Requires-Dist: lovekit (>=0.1.
|
|
31
|
-
Requires-Dist: mikro-next (>=0.1.
|
|
39
|
+
Requires-Dist: kraph (>=0.1.101) ; (python_version >= "3.8" and python_version < "4.0") and (extra == "kraph" or extra == "extended")
|
|
40
|
+
Requires-Dist: lovekit (>=0.1.19) ; (python_version >= "3.10" and python_version < "4.0") and (extra == "lovekit" or extra == "stream")
|
|
41
|
+
Requires-Dist: mikro-next (>=0.1.55) ; (python_version >= "3.10" and python_version < "4.0") and (extra == "mikro" or extra == "all")
|
|
32
42
|
Requires-Dist: namegenerator (>=1.0.6) ; (python_version >= "3.8" and python_version < "4.0") and (extra == "blok")
|
|
33
43
|
Requires-Dist: netifaces (>=0.11.0) ; (python_version >= "3.8" and python_version < "4.0") and (extra == "blok")
|
|
34
|
-
Requires-Dist: reaktion-next (>=0.1.
|
|
35
|
-
Requires-Dist: rekuest-next (>=0.2.
|
|
44
|
+
Requires-Dist: reaktion-next (>=0.1.87) ; (python_version >= "3.8" and python_version < "4.0") and (extra == "reaktion" or extra == "all")
|
|
45
|
+
Requires-Dist: rekuest-next (>=0.2.62) ; (python_version >= "3.8" and python_version < "4.0") and (extra == "cli" or extra == "rekuest" or extra == "all")
|
|
36
46
|
Requires-Dist: rich-click (>=1.6.1) ; extra == "cli" or extra == "all" or extra == "blok"
|
|
37
47
|
Requires-Dist: semver (>=3.0.1) ; extra == "cli" or extra == "all"
|
|
38
48
|
Requires-Dist: turms (>=0.8.2) ; (python_version >= "3.9" and python_version < "4.0") and (extra == "cli" or extra == "all")
|
|
39
|
-
Requires-Dist: unlok-next (>=0.1.
|
|
49
|
+
Requires-Dist: unlok-next (>=0.1.89) ; (python_version >= "3.8" and python_version < "4.0") and (extra == "unlok")
|
|
40
50
|
Requires-Dist: watchfiles (>=0.18.1) ; extra == "cli" or extra == "all"
|
|
41
51
|
Description-Content-Type: text/markdown
|
|
42
52
|
|
|
@@ -21,6 +21,7 @@ from arkitekt_next.bloks.namegen import PreformedNamesBlok
|
|
|
21
21
|
from arkitekt_next.bloks.ollama import OllamaBlok
|
|
22
22
|
from arkitekt_next.bloks.self_signed import SelfSignedBlok
|
|
23
23
|
from arkitekt_next.bloks.kraph import KraphBlok
|
|
24
|
+
from arkitekt_next.bloks.local_sign import LocalSignBlok
|
|
24
25
|
|
|
25
26
|
|
|
26
27
|
def get_bloks():
|
|
@@ -48,4 +49,6 @@ def get_bloks():
|
|
|
48
49
|
SecretBlok(),
|
|
49
50
|
PreformedNamesBlok(),
|
|
50
51
|
OrkestratorBlok(),
|
|
52
|
+
LocalSignBlok(),
|
|
51
53
|
]
|
|
54
|
+
|
|
@@ -34,7 +34,11 @@ from .builders import easy, interactive
|
|
|
34
34
|
from .apps.types import App
|
|
35
35
|
from fakts_next.helpers import afakt, fakt
|
|
36
36
|
from .init_registry import init, InitHookRegisty, get_current_init_hook_registry
|
|
37
|
-
from .service_registry import
|
|
37
|
+
from .service_registry import (
|
|
38
|
+
require,
|
|
39
|
+
ServiceBuilderRegistry,
|
|
40
|
+
get_current_service_registry,
|
|
41
|
+
)
|
|
38
42
|
|
|
39
43
|
|
|
40
44
|
__all__ = [
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
from hashlib import sha256
|
|
4
4
|
import json
|
|
5
|
-
from pydantic import BaseModel, Field, field_validator
|
|
5
|
+
from pydantic import BaseModel, Field, field_validator, ConfigDict
|
|
6
6
|
from typing import List, Optional
|
|
7
7
|
|
|
8
8
|
|
|
@@ -42,9 +42,7 @@ class Manifest(BaseModel):
|
|
|
42
42
|
""" A URL to the logo of the app TODO: We should enforce this to be a http URL as local paths won't work """
|
|
43
43
|
requirements: Optional[List[Requirement]] = Field(default_factory=list)
|
|
44
44
|
""" Requirements that this app has TODO: What are the requirements? """
|
|
45
|
-
|
|
46
|
-
class Config:
|
|
47
|
-
extra = "forbid"
|
|
45
|
+
model_config = ConfigDict(extra="forbid")
|
|
48
46
|
|
|
49
47
|
def hash(self):
|
|
50
48
|
"""Hash the manifest
|
|
@@ -22,18 +22,21 @@ class AdminCredentials(BaseModel):
|
|
|
22
22
|
email: str
|
|
23
23
|
|
|
24
24
|
|
|
25
|
-
@blok(
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
25
|
+
@blok(
|
|
26
|
+
"live.arkitekt",
|
|
27
|
+
dependencies=[
|
|
28
|
+
MikroBlok.as_dependency(True, True),
|
|
29
|
+
KabinetBlok.as_dependency(True, True),
|
|
30
|
+
RekuestBlok.as_dependency(True, True),
|
|
31
|
+
FlussBlok.as_dependency(True, True),
|
|
32
|
+
InternalDockerBlok.as_dependency(True, True),
|
|
33
|
+
LocalLiveKitBlok.as_dependency(True, True),
|
|
34
|
+
OrkestratorBlok.as_dependency(True, False),
|
|
35
|
+
KraphBlok.as_dependency(True, False),
|
|
36
|
+
TailscaleBlok.as_dependency(True, False),
|
|
37
|
+
OllamaBlok.as_dependency(True, False),
|
|
38
|
+
],
|
|
39
|
+
)
|
|
37
40
|
class ArkitektBlok:
|
|
38
41
|
|
|
39
42
|
def entry(self, renderer: Renderer):
|
|
@@ -46,6 +49,5 @@ class ArkitektBlok:
|
|
|
46
49
|
)
|
|
47
50
|
)
|
|
48
51
|
|
|
49
|
-
|
|
50
52
|
def build(self, cwd):
|
|
51
53
|
pass
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from blok import blok, InitContext, Option
|
|
2
2
|
from blok.tree import YamlFile, Repo
|
|
3
|
-
from typing import Any, Protocol
|
|
3
|
+
from typing import Any, Optional, Protocol
|
|
4
4
|
from blok.utils import check_protocol_compliance
|
|
5
5
|
from dataclasses import asdict
|
|
6
6
|
from arkitekt_next.bloks.services import (
|
|
@@ -58,15 +58,15 @@ class BaseArkitektService:
|
|
|
58
58
|
self,
|
|
59
59
|
init: InitContext,
|
|
60
60
|
lok: LokService,
|
|
61
|
-
dns: DnsService,
|
|
62
61
|
db: DBService,
|
|
63
|
-
gateway: GatewayService,
|
|
64
62
|
redis: RedisService,
|
|
65
63
|
s3: S3Service,
|
|
66
64
|
config: ConfigService,
|
|
67
65
|
mount: MountService,
|
|
68
66
|
admin: AdminService,
|
|
69
67
|
secret: SecretService,
|
|
68
|
+
gateway: Optional[GatewayService] = None,
|
|
69
|
+
dns: DnsService = None,
|
|
70
70
|
mount_repo: bool = False,
|
|
71
71
|
host: str = "",
|
|
72
72
|
image: str = "",
|
|
@@ -83,7 +83,9 @@ class BaseArkitektService:
|
|
|
83
83
|
|
|
84
84
|
path_name = self.host
|
|
85
85
|
|
|
86
|
-
|
|
86
|
+
if gateway:
|
|
87
|
+
print("Registering gateway access")
|
|
88
|
+
gateway_access = gateway.expose(path_name, 80, self.host)
|
|
87
89
|
|
|
88
90
|
postgress_access = db.register_db(self.host)
|
|
89
91
|
redis_access = redis.register()
|
|
@@ -33,7 +33,8 @@ class ExposedPort(BaseModel):
|
|
|
33
33
|
|
|
34
34
|
|
|
35
35
|
@blok(
|
|
36
|
-
"live.arkitekt.gateway",
|
|
36
|
+
"live.arkitekt.gateway",
|
|
37
|
+
description="A gateway for exposing services on the host",
|
|
37
38
|
)
|
|
38
39
|
class CaddyBlok:
|
|
39
40
|
def __init__(self) -> None:
|
|
@@ -63,7 +64,13 @@ class CaddyBlok:
|
|
|
63
64
|
def retrieve_gateway_network(self):
|
|
64
65
|
return self.gateway_network
|
|
65
66
|
|
|
66
|
-
def preflight(
|
|
67
|
+
def preflight(
|
|
68
|
+
self,
|
|
69
|
+
init: InitContext,
|
|
70
|
+
dns: DnsService,
|
|
71
|
+
name: NameService,
|
|
72
|
+
certer: CerterService,
|
|
73
|
+
):
|
|
67
74
|
for key, value in init.kwargs.items():
|
|
68
75
|
setattr(self, key, value)
|
|
69
76
|
|
|
@@ -73,7 +80,6 @@ class CaddyBlok:
|
|
|
73
80
|
|
|
74
81
|
self.cert_mount = certer.retrieve_certs_mount()
|
|
75
82
|
self.depends_on = certer.retrieve_depends_on()
|
|
76
|
-
|
|
77
83
|
|
|
78
84
|
def build(
|
|
79
85
|
self,
|
|
@@ -108,8 +114,7 @@ class CaddyBlok:
|
|
|
108
114
|
"""
|
|
109
115
|
tls /certs/caddy.crt /certs/caddy.key
|
|
110
116
|
"""
|
|
111
|
-
if protocol == "https"
|
|
112
|
-
and self.cert_mount
|
|
117
|
+
if protocol == "https" and self.cert_mount
|
|
113
118
|
else ""
|
|
114
119
|
)
|
|
115
120
|
caddyfile += """
|
|
@@ -167,7 +172,6 @@ class CaddyBlok:
|
|
|
167
172
|
f"{port.port}:{port.port}" for port in self.exposed_ports.values()
|
|
168
173
|
]
|
|
169
174
|
|
|
170
|
-
|
|
171
175
|
volumes = ["./configs/Caddyfile:/etc/caddy/Caddyfile"]
|
|
172
176
|
if self.cert_mount:
|
|
173
177
|
volumes.append(f"{self.cert_mount}:/certs")
|
|
@@ -18,7 +18,10 @@ class AccessCredentials(BaseModel):
|
|
|
18
18
|
db_name: str
|
|
19
19
|
|
|
20
20
|
|
|
21
|
-
@blok(
|
|
21
|
+
@blok(
|
|
22
|
+
"live.arkitekt.kraph",
|
|
23
|
+
description="Kraph allows you to interconnect structures in a graph database",
|
|
24
|
+
)
|
|
22
25
|
class KraphBlok(BaseArkitektService):
|
|
23
26
|
def __init__(self) -> None:
|
|
24
27
|
self.dev = False
|
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
import click
|
|
2
|
+
|
|
3
|
+
from pydantic import BaseModel
|
|
4
|
+
from cryptography.hazmat.primitives import serialization as crypto_serialization
|
|
5
|
+
from cryptography.hazmat.primitives.asymmetric import rsa
|
|
6
|
+
from cryptography.hazmat.backends import default_backend as crypto_default_backend
|
|
7
|
+
from typing import Dict, Optional
|
|
8
|
+
from arkitekt_next.bloks.secret import SecretBlok
|
|
9
|
+
from arkitekt_next.bloks.services.admin import AdminService
|
|
10
|
+
from arkitekt_next.bloks.services.db import DBService
|
|
11
|
+
from arkitekt_next.bloks.services.gateway import GatewayService
|
|
12
|
+
from arkitekt_next.bloks.services.livekit import LivekitService
|
|
13
|
+
from arkitekt_next.bloks.services.lok import LokCredentials, LokService
|
|
14
|
+
import yaml
|
|
15
|
+
import secrets
|
|
16
|
+
from dataclasses import asdict
|
|
17
|
+
|
|
18
|
+
from arkitekt_next.bloks.services.redis import RedisService
|
|
19
|
+
from blok import blok, InitContext, ExecutionContext, Option
|
|
20
|
+
from blok.bloks.services.dns import DnsService
|
|
21
|
+
from blok.tree import YamlFile, Repo
|
|
22
|
+
from blok import blok, InitContext
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
DEFAULT_ARKITEKT_URL = "http://localhost:8000"
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
# Define a custom user type that will parse and validate the user input
|
|
29
|
+
class UserParamType(click.ParamType):
|
|
30
|
+
name = "user"
|
|
31
|
+
|
|
32
|
+
def convert(self, value, param, ctx):
|
|
33
|
+
if isinstance(value, dict):
|
|
34
|
+
return value
|
|
35
|
+
try:
|
|
36
|
+
name, password = value.split(":")
|
|
37
|
+
return {"name": name, "password": password}
|
|
38
|
+
except ValueError:
|
|
39
|
+
self.fail(
|
|
40
|
+
f"User '{value}' is not in the correct format. It should be 'name:password'.",
|
|
41
|
+
param,
|
|
42
|
+
ctx,
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
USER = UserParamType()
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
# Define a custom user type that will parse and validate the user input
|
|
50
|
+
class GroupParamType(click.ParamType):
|
|
51
|
+
name = "group"
|
|
52
|
+
|
|
53
|
+
def convert(self, value, param, ctx):
|
|
54
|
+
if isinstance(value, dict):
|
|
55
|
+
return value
|
|
56
|
+
try:
|
|
57
|
+
name, description = value.split(":")
|
|
58
|
+
return {"name": name, "description": description}
|
|
59
|
+
except ValueError:
|
|
60
|
+
self.fail(
|
|
61
|
+
f"User '{value}' is not in the correct format. It should be 'name:password'.",
|
|
62
|
+
param,
|
|
63
|
+
ctx,
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
GROUP = GroupParamType()
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
class RedeemTokenParamType(click.ParamType):
|
|
71
|
+
name = "redeem_token"
|
|
72
|
+
|
|
73
|
+
def convert(self, value, param, ctx):
|
|
74
|
+
if isinstance(value, dict):
|
|
75
|
+
assert "user" in value, f"scope is required {value}"
|
|
76
|
+
assert "token" in value, f"description is required {value}"
|
|
77
|
+
return value
|
|
78
|
+
|
|
79
|
+
try:
|
|
80
|
+
user, token = value.split(":")
|
|
81
|
+
return {"user": user, "token": token}
|
|
82
|
+
except ValueError:
|
|
83
|
+
self.fail(
|
|
84
|
+
f"RedeemToken '{value}' is not in the correct format. It should be 'username:token'.",
|
|
85
|
+
param,
|
|
86
|
+
ctx,
|
|
87
|
+
)
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
TOKEN = RedeemTokenParamType()
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
class ScopeParamType(click.ParamType):
|
|
94
|
+
name = "scope"
|
|
95
|
+
|
|
96
|
+
def convert(self, value, param, ctx):
|
|
97
|
+
if isinstance(value, dict):
|
|
98
|
+
assert "scope" in value, f"scope is required {value}"
|
|
99
|
+
assert "description" in value, f"description is required {value}"
|
|
100
|
+
return value
|
|
101
|
+
|
|
102
|
+
try:
|
|
103
|
+
name, description = value.split(":")
|
|
104
|
+
return {"scope": name, "description": description}
|
|
105
|
+
except ValueError:
|
|
106
|
+
self.fail(
|
|
107
|
+
f"Scopes '{value}' is not in the correct format. It should be 'scope:description'.",
|
|
108
|
+
param,
|
|
109
|
+
ctx,
|
|
110
|
+
)
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
SCOPE = ScopeParamType()
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
@blok(LokService, description="A local sign service")
|
|
117
|
+
class LocalSignBlok:
|
|
118
|
+
db_name: str
|
|
119
|
+
|
|
120
|
+
def __init__(self) -> None:
|
|
121
|
+
self.db_name = "lok_db"
|
|
122
|
+
self.mount_repo = False
|
|
123
|
+
self.build_repo = False
|
|
124
|
+
self.private_key = None
|
|
125
|
+
self.public_key = None
|
|
126
|
+
self.host = "lok"
|
|
127
|
+
self.dev = False
|
|
128
|
+
self.with_repo = False
|
|
129
|
+
self.users = []
|
|
130
|
+
self.tokens = []
|
|
131
|
+
self.groups = []
|
|
132
|
+
self.scopes = {}
|
|
133
|
+
self.key = None
|
|
134
|
+
self.deployment_name = "default"
|
|
135
|
+
self.token_expiry_seconds = 700000
|
|
136
|
+
self.preformed_redeem_tokens = [secrets.token_hex(16) for i in range(80)]
|
|
137
|
+
self.registered_tokens = {}
|
|
138
|
+
self.local_access = None
|
|
139
|
+
|
|
140
|
+
def retrieve_credentials(self) -> LokCredentials:
|
|
141
|
+
return LokCredentials(
|
|
142
|
+
public_key=self.public_key, key_type="RS256", issuer="lok"
|
|
143
|
+
)
|
|
144
|
+
|
|
145
|
+
def retrieve_labels(self, service_name: str, builder_name: str) -> list[str]:
|
|
146
|
+
return [
|
|
147
|
+
f"fakts.service={service_name}",
|
|
148
|
+
f"fakts.builder={builder_name}",
|
|
149
|
+
]
|
|
150
|
+
|
|
151
|
+
def retrieve_token(self, user: str = "admin") -> str:
|
|
152
|
+
pass
|
|
153
|
+
return "fake-token"
|
|
154
|
+
|
|
155
|
+
def register_scopes(self, scopes_dict: Dict[str, str]) -> LokCredentials:
|
|
156
|
+
self.scopes = self.scopes | scopes_dict
|
|
157
|
+
|
|
158
|
+
def preflight(
|
|
159
|
+
self,
|
|
160
|
+
init: InitContext
|
|
161
|
+
):
|
|
162
|
+
for key, value in init.kwargs.items():
|
|
163
|
+
setattr(self, key, value)
|
|
164
|
+
|
|
165
|
+
assert self.public_key, "Public key is required"
|
|
166
|
+
assert self.private_key, "Private key is required"
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
def build(self, context: ExecutionContext):
|
|
170
|
+
context.file_tree.set_nested("secrets", "public_key.pem", self.public_key)
|
|
171
|
+
context.file_tree.set_nested("secrets", "private_key.pem", self.private_key)
|
|
172
|
+
|
|
173
|
+
def get_options(self):
|
|
174
|
+
key = rsa.generate_private_key(
|
|
175
|
+
public_exponent=65537, key_size=2048, backend=crypto_default_backend()
|
|
176
|
+
)
|
|
177
|
+
|
|
178
|
+
private_key = key.private_bytes(
|
|
179
|
+
crypto_serialization.Encoding.PEM,
|
|
180
|
+
crypto_serialization.PrivateFormat.PKCS8,
|
|
181
|
+
crypto_serialization.NoEncryption(),
|
|
182
|
+
).decode()
|
|
183
|
+
|
|
184
|
+
public_key = (
|
|
185
|
+
key.public_key()
|
|
186
|
+
.public_bytes(
|
|
187
|
+
crypto_serialization.Encoding.OpenSSH,
|
|
188
|
+
crypto_serialization.PublicFormat.OpenSSH,
|
|
189
|
+
)
|
|
190
|
+
.decode()
|
|
191
|
+
)
|
|
192
|
+
|
|
193
|
+
with_dev = Option(
|
|
194
|
+
subcommand="dev",
|
|
195
|
+
help="Run the service in development mode",
|
|
196
|
+
type=bool,
|
|
197
|
+
default=self.dev,
|
|
198
|
+
show_default=True,
|
|
199
|
+
)
|
|
200
|
+
|
|
201
|
+
with_fakts_url = Option(
|
|
202
|
+
subcommand="db_name",
|
|
203
|
+
help="The name of the database",
|
|
204
|
+
default="db_name",
|
|
205
|
+
show_default=True,
|
|
206
|
+
)
|
|
207
|
+
with_users = Option(
|
|
208
|
+
subcommand="users",
|
|
209
|
+
help="Users that should be greated by default. Format is name:password",
|
|
210
|
+
default=["admin:admin"],
|
|
211
|
+
multiple=True,
|
|
212
|
+
type=USER,
|
|
213
|
+
show_default=True,
|
|
214
|
+
)
|
|
215
|
+
with_groups = Option(
|
|
216
|
+
subcommand="groups",
|
|
217
|
+
help="Groups that should be greated by default. Format is name:description",
|
|
218
|
+
default=["admin:admin_group"],
|
|
219
|
+
multiple=True,
|
|
220
|
+
type=GROUP,
|
|
221
|
+
show_default=True,
|
|
222
|
+
)
|
|
223
|
+
with_public_key = Option(
|
|
224
|
+
subcommand="public_key",
|
|
225
|
+
help="The public key for the JWT creation",
|
|
226
|
+
default=public_key,
|
|
227
|
+
required=True,
|
|
228
|
+
callback=validate_public_key,
|
|
229
|
+
)
|
|
230
|
+
with_private_key = Option(
|
|
231
|
+
subcommand="private_key",
|
|
232
|
+
help="The corresponding private key for the JWT creation",
|
|
233
|
+
default=private_key,
|
|
234
|
+
callback=validate_private_key,
|
|
235
|
+
required=True,
|
|
236
|
+
)
|
|
237
|
+
|
|
238
|
+
return [
|
|
239
|
+
with_dev,
|
|
240
|
+
with_fakts_url,
|
|
241
|
+
with_users,
|
|
242
|
+
with_groups,
|
|
243
|
+
with_private_key,
|
|
244
|
+
with_public_key,
|
|
245
|
+
]
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
def validate_public_key(ctx, param, value):
|
|
249
|
+
if not value.startswith("ssh-rsa"):
|
|
250
|
+
raise click.BadParameter(
|
|
251
|
+
f"Public key must be in ssh-rsa format. Started with {value}"
|
|
252
|
+
)
|
|
253
|
+
return value
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
def validate_private_key(ctx, param, value):
|
|
257
|
+
if not value.startswith("-----BEGIN PRIVATE KEY-----"):
|
|
258
|
+
raise click.BadParameter(
|
|
259
|
+
f"Private key must be in PEM format. Started with {value}"
|
|
260
|
+
)
|
|
261
|
+
return value
|
|
@@ -234,8 +234,6 @@ class LokBlok:
|
|
|
234
234
|
trusted_origins.append(f"http://{i}")
|
|
235
235
|
trusted_origins.append(f"https://{i}")
|
|
236
236
|
|
|
237
|
-
|
|
238
|
-
|
|
239
237
|
configuration = YamlFile(
|
|
240
238
|
**{
|
|
241
239
|
"db": asdict(self.postgress_access),
|
|
@@ -257,7 +255,11 @@ class LokBlok:
|
|
|
257
255
|
],
|
|
258
256
|
"groups": [group for group in self.groups],
|
|
259
257
|
"deployment": {"name": self.deployment_name},
|
|
260
|
-
"livekit":
|
|
258
|
+
"livekit": (
|
|
259
|
+
asdict(self.local_access)
|
|
260
|
+
if self.local_access
|
|
261
|
+
else {"api_key": "dev", "api_secret": "secret", "api_url": None}
|
|
262
|
+
),
|
|
261
263
|
"token_expire_seconds": self.token_expiry_seconds,
|
|
262
264
|
"apps": [],
|
|
263
265
|
"force_script_name": "lok",
|
|
@@ -20,7 +20,6 @@ class OllamaBlok:
|
|
|
20
20
|
for key, value in init.kwargs.items():
|
|
21
21
|
setattr(self, key, value)
|
|
22
22
|
|
|
23
|
-
|
|
24
23
|
if self.skip:
|
|
25
24
|
return
|
|
26
25
|
|
|
@@ -28,7 +27,6 @@ class OllamaBlok:
|
|
|
28
27
|
|
|
29
28
|
self.initialized = True
|
|
30
29
|
|
|
31
|
-
|
|
32
30
|
def build(self, context: ExecutionContext):
|
|
33
31
|
if self.skip:
|
|
34
32
|
return
|
|
@@ -40,7 +38,7 @@ class OllamaBlok:
|
|
|
40
38
|
"image": self.image,
|
|
41
39
|
"environment": {
|
|
42
40
|
"OLLAMA_KEEP_ALIVE": "24h",
|
|
43
|
-
}
|
|
41
|
+
},
|
|
44
42
|
}
|
|
45
43
|
|
|
46
44
|
if self.gpu:
|
|
@@ -58,7 +56,6 @@ class OllamaBlok:
|
|
|
58
56
|
}
|
|
59
57
|
}
|
|
60
58
|
|
|
61
|
-
|
|
62
59
|
context.docker_compose.set_nested("services", self.host, db_service)
|
|
63
60
|
|
|
64
61
|
def get_options(self):
|
|
@@ -34,11 +34,10 @@ class OrkestratorBlok:
|
|
|
34
34
|
|
|
35
35
|
if self.disable:
|
|
36
36
|
return
|
|
37
|
-
|
|
37
|
+
|
|
38
38
|
if not self.dev:
|
|
39
39
|
gateway.expose(self.path_name, 80, self.host)
|
|
40
40
|
|
|
41
|
-
|
|
42
41
|
self.service = {
|
|
43
42
|
"image": "jhnnsrs/orkestrator_next:nightly",
|
|
44
43
|
"environment": {
|
|
@@ -46,8 +45,8 @@ class OrkestratorBlok:
|
|
|
46
45
|
},
|
|
47
46
|
}
|
|
48
47
|
|
|
49
|
-
return
|
|
50
|
-
|
|
48
|
+
return
|
|
49
|
+
|
|
51
50
|
else:
|
|
52
51
|
|
|
53
52
|
self.mount = mount.register_mount("orkestrator", Repo(self.repo))
|
|
@@ -73,7 +72,7 @@ class OrkestratorBlok:
|
|
|
73
72
|
def build(self, context: ExecutionContext):
|
|
74
73
|
if self.disable:
|
|
75
74
|
return
|
|
76
|
-
|
|
75
|
+
|
|
77
76
|
if self.dev:
|
|
78
77
|
|
|
79
78
|
context.install_commands.set_nested(
|
|
@@ -84,7 +83,6 @@ class OrkestratorBlok:
|
|
|
84
83
|
)
|
|
85
84
|
return
|
|
86
85
|
|
|
87
|
-
|
|
88
86
|
context.docker_compose.set_nested("services", self.host, self.service)
|
|
89
87
|
pass
|
|
90
88
|
|
|
@@ -32,9 +32,7 @@ class ExposedPort(BaseModel):
|
|
|
32
32
|
to: int
|
|
33
33
|
|
|
34
34
|
|
|
35
|
-
@blok(
|
|
36
|
-
"live.arkitekt.certer", description="A self-signed certificate generator"
|
|
37
|
-
)
|
|
35
|
+
@blok("live.arkitekt.certer", description="A self-signed certificate generator")
|
|
38
36
|
class SelfSignedBlok:
|
|
39
37
|
def __init__(self) -> None:
|
|
40
38
|
self.host = "certer"
|
|
@@ -44,7 +42,6 @@ class SelfSignedBlok:
|
|
|
44
42
|
def retrieve_certs_mount(self):
|
|
45
43
|
return self.certs_mount
|
|
46
44
|
|
|
47
|
-
|
|
48
45
|
def retrieve_depends_on(self):
|
|
49
46
|
return ["certer"]
|
|
50
47
|
|
|
@@ -55,7 +52,6 @@ class SelfSignedBlok:
|
|
|
55
52
|
self.public_ips = dns.get_dns_result().ip_addresses
|
|
56
53
|
self.public_hosts = dns.get_dns_result().hostnames
|
|
57
54
|
|
|
58
|
-
|
|
59
55
|
def build(
|
|
60
56
|
self,
|
|
61
57
|
context: ExecutionContext,
|
|
@@ -63,7 +59,6 @@ class SelfSignedBlok:
|
|
|
63
59
|
|
|
64
60
|
context.file_tree.set_nested("certs", {})
|
|
65
61
|
|
|
66
|
-
|
|
67
62
|
certer_container = {
|
|
68
63
|
"image": self.certer_image,
|
|
69
64
|
"volumes": ["./certs:/certs"],
|
|
@@ -75,8 +70,6 @@ class SelfSignedBlok:
|
|
|
75
70
|
|
|
76
71
|
context.docker_compose.set_nested("services", self.host, certer_container)
|
|
77
72
|
|
|
78
|
-
|
|
79
|
-
|
|
80
73
|
def get_options(self):
|
|
81
74
|
with_public_urls = Option(
|
|
82
75
|
subcommand="public_url",
|
|
@@ -14,7 +14,7 @@ from arkitekt_next.cli.options import (
|
|
|
14
14
|
import yaml
|
|
15
15
|
from arkitekt_next.cli.utils import build_relative_dir
|
|
16
16
|
from arkitekt_next.cli.vars import get_console, get_manifest
|
|
17
|
-
from arkitekt_next.service_registry import
|
|
17
|
+
from arkitekt_next.service_registry import get_default_service_registry
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
@click.command()
|
|
@@ -51,7 +51,7 @@ def init(ctx, boring, services, config, documents, schemas, path, seperate_doc_d
|
|
|
51
51
|
# Initializing the config
|
|
52
52
|
projects = {}
|
|
53
53
|
|
|
54
|
-
registry =
|
|
54
|
+
registry = get_default_service_registry()
|
|
55
55
|
|
|
56
56
|
chosen_services = registry.service_builders
|
|
57
57
|
|