ominfra 0.0.0.dev143__py3-none-any.whl → 0.0.0.dev144__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.
- ominfra/manage/deploy/__init__.py +0 -0
- ominfra/manage/deploy/command.py +23 -0
- ominfra/manage/deploy/inject.py +19 -0
- ominfra/manage/inject.py +3 -0
- ominfra/manage/main.py +30 -16
- ominfra/scripts/manage.py +60 -15
- {ominfra-0.0.0.dev143.dist-info → ominfra-0.0.0.dev144.dist-info}/METADATA +3 -3
- {ominfra-0.0.0.dev143.dist-info → ominfra-0.0.0.dev144.dist-info}/RECORD +12 -9
- {ominfra-0.0.0.dev143.dist-info → ominfra-0.0.0.dev144.dist-info}/LICENSE +0 -0
- {ominfra-0.0.0.dev143.dist-info → ominfra-0.0.0.dev144.dist-info}/WHEEL +0 -0
- {ominfra-0.0.0.dev143.dist-info → ominfra-0.0.0.dev144.dist-info}/entry_points.txt +0 -0
- {ominfra-0.0.0.dev143.dist-info → ominfra-0.0.0.dev144.dist-info}/top_level.txt +0 -0
File without changes
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# ruff: noqa: UP006 UP007
|
2
|
+
import dataclasses as dc
|
3
|
+
|
4
|
+
from ..commands.base import Command
|
5
|
+
from ..commands.base import CommandExecutor
|
6
|
+
|
7
|
+
|
8
|
+
##
|
9
|
+
|
10
|
+
|
11
|
+
@dc.dataclass(frozen=True)
|
12
|
+
class DeployCommand(Command['DeployCommand.Output']):
|
13
|
+
@dc.dataclass(frozen=True)
|
14
|
+
class Output(Command.Output):
|
15
|
+
pass
|
16
|
+
|
17
|
+
|
18
|
+
##
|
19
|
+
|
20
|
+
|
21
|
+
class DeployCommandExecutor(CommandExecutor[DeployCommand, DeployCommand.Output]):
|
22
|
+
def execute(self, cmd: DeployCommand) -> DeployCommand.Output:
|
23
|
+
return DeployCommand.Output()
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# ruff: noqa: UP006 UP007
|
2
|
+
import typing as ta
|
3
|
+
|
4
|
+
from omlish.lite.inject import InjectorBindingOrBindings
|
5
|
+
from omlish.lite.inject import InjectorBindings
|
6
|
+
from omlish.lite.inject import inj
|
7
|
+
|
8
|
+
from ..commands.inject import bind_command
|
9
|
+
from .command import DeployCommand
|
10
|
+
from .command import DeployCommandExecutor
|
11
|
+
|
12
|
+
|
13
|
+
def bind_deploy(
|
14
|
+
) -> InjectorBindings:
|
15
|
+
lst: ta.List[InjectorBindingOrBindings] = [
|
16
|
+
bind_command(DeployCommand, DeployCommandExecutor),
|
17
|
+
]
|
18
|
+
|
19
|
+
return inj.as_bindings(*lst)
|
ominfra/manage/inject.py
CHANGED
@@ -8,6 +8,7 @@ from omlish.lite.marshal import ObjMarshalerManager
|
|
8
8
|
|
9
9
|
from .commands.inject import bind_commands
|
10
10
|
from .config import MainConfig
|
11
|
+
from .deploy.inject import bind_deploy
|
11
12
|
from .marshal import ObjMarshalerInstaller
|
12
13
|
from .marshal import ObjMarshalerInstallers
|
13
14
|
from .remote.config import RemoteConfig
|
@@ -32,6 +33,8 @@ def bind_main(
|
|
32
33
|
bind_remote(
|
33
34
|
remote_config=remote_config,
|
34
35
|
),
|
36
|
+
|
37
|
+
bind_deploy(),
|
35
38
|
]
|
36
39
|
|
37
40
|
#
|
ominfra/manage/main.py
CHANGED
@@ -5,15 +5,21 @@
|
|
5
5
|
manage.py -s 'docker run -i python:3.12'
|
6
6
|
manage.py -s 'ssh -i /foo/bar.pem foo@bar.baz' -q --python=python3.8
|
7
7
|
"""
|
8
|
+
import contextlib
|
9
|
+
import typing as ta
|
10
|
+
|
8
11
|
from omlish.lite.logs import log # noqa
|
9
|
-
from omlish.lite.marshal import ObjMarshalOptions
|
10
12
|
from omlish.lite.marshal import ObjMarshalerManager
|
13
|
+
from omlish.lite.marshal import ObjMarshalOptions
|
11
14
|
from omlish.lite.pycharm import PycharmRemoteDebug
|
12
15
|
|
13
16
|
from .bootstrap import MainBootstrap
|
14
17
|
from .bootstrap_ import main_bootstrap
|
18
|
+
from .commands.base import Command
|
19
|
+
from .commands.base import CommandExecutor
|
15
20
|
from .commands.subprocess import SubprocessCommand
|
16
21
|
from .config import MainConfig
|
22
|
+
from .deploy.command import DeployCommand
|
17
23
|
from .remote.config import RemoteConfig
|
18
24
|
from .remote.execution import RemoteExecution
|
19
25
|
from .remote.spawning import RemoteSpawning
|
@@ -39,6 +45,8 @@ def _main() -> None:
|
|
39
45
|
|
40
46
|
parser.add_argument('--debug', action='store_true')
|
41
47
|
|
48
|
+
parser.add_argument('--local', action='store_true')
|
49
|
+
|
42
50
|
parser.add_argument('command', nargs='+')
|
43
51
|
|
44
52
|
args = parser.parse_args()
|
@@ -69,28 +77,34 @@ def _main() -> None:
|
|
69
77
|
|
70
78
|
#
|
71
79
|
|
72
|
-
cmds = [
|
73
|
-
|
74
|
-
|
75
|
-
|
80
|
+
cmds: ta.List[Command] = []
|
81
|
+
for c in args.command:
|
82
|
+
if c == 'deploy':
|
83
|
+
cmds.append(DeployCommand())
|
84
|
+
else:
|
85
|
+
cmds.append(SubprocessCommand([c]))
|
76
86
|
|
77
87
|
#
|
78
88
|
|
79
|
-
|
80
|
-
|
81
|
-
shell_quote=args.shell_quote,
|
82
|
-
python=args.python,
|
83
|
-
)
|
89
|
+
with contextlib.ExitStack() as es:
|
90
|
+
ce: CommandExecutor
|
84
91
|
|
85
|
-
|
86
|
-
|
87
|
-
r = rce.try_execute(cmd)
|
92
|
+
if args.local:
|
93
|
+
ce = injector[CommandExecutor]
|
88
94
|
|
89
|
-
|
95
|
+
else:
|
96
|
+
tgt = RemoteSpawning.Target(
|
97
|
+
shell=args.shell,
|
98
|
+
shell_quote=args.shell_quote,
|
99
|
+
python=args.python,
|
100
|
+
)
|
90
101
|
|
91
|
-
|
102
|
+
ce = es.enter_context(injector[RemoteExecution].connect(tgt, bs)) # noqa
|
92
103
|
|
93
|
-
|
104
|
+
for cmd in cmds:
|
105
|
+
r = ce.try_execute(cmd)
|
106
|
+
|
107
|
+
print(injector[ObjMarshalerManager].marshal_obj(r, opts=ObjMarshalOptions(raw_bytes=True)))
|
94
108
|
|
95
109
|
|
96
110
|
if __name__ == '__main__':
|
ominfra/scripts/manage.py
CHANGED
@@ -2807,6 +2807,28 @@ def install_command_marshaling(
|
|
2807
2807
|
)
|
2808
2808
|
|
2809
2809
|
|
2810
|
+
########################################
|
2811
|
+
# ../deploy/command.py
|
2812
|
+
|
2813
|
+
|
2814
|
+
##
|
2815
|
+
|
2816
|
+
|
2817
|
+
@dc.dataclass(frozen=True)
|
2818
|
+
class DeployCommand(Command['DeployCommand.Output']):
|
2819
|
+
@dc.dataclass(frozen=True)
|
2820
|
+
class Output(Command.Output):
|
2821
|
+
pass
|
2822
|
+
|
2823
|
+
|
2824
|
+
##
|
2825
|
+
|
2826
|
+
|
2827
|
+
class DeployCommandExecutor(CommandExecutor[DeployCommand, DeployCommand.Output]):
|
2828
|
+
def execute(self, cmd: DeployCommand) -> DeployCommand.Output:
|
2829
|
+
return DeployCommand.Output()
|
2830
|
+
|
2831
|
+
|
2810
2832
|
########################################
|
2811
2833
|
# ../marshal.py
|
2812
2834
|
|
@@ -3423,6 +3445,19 @@ class RemoteExecution:
|
|
3423
3445
|
yield RemoteCommandExecutor(chan)
|
3424
3446
|
|
3425
3447
|
|
3448
|
+
########################################
|
3449
|
+
# ../deploy/inject.py
|
3450
|
+
|
3451
|
+
|
3452
|
+
def bind_deploy(
|
3453
|
+
) -> InjectorBindings:
|
3454
|
+
lst: ta.List[InjectorBindingOrBindings] = [
|
3455
|
+
bind_command(DeployCommand, DeployCommandExecutor),
|
3456
|
+
]
|
3457
|
+
|
3458
|
+
return inj.as_bindings(*lst)
|
3459
|
+
|
3460
|
+
|
3426
3461
|
########################################
|
3427
3462
|
# ../remote/inject.py
|
3428
3463
|
|
@@ -3467,6 +3502,8 @@ def bind_main(
|
|
3467
3502
|
bind_remote(
|
3468
3503
|
remote_config=remote_config,
|
3469
3504
|
),
|
3505
|
+
|
3506
|
+
bind_deploy(),
|
3470
3507
|
]
|
3471
3508
|
|
3472
3509
|
#
|
@@ -3530,6 +3567,8 @@ def _main() -> None:
|
|
3530
3567
|
|
3531
3568
|
parser.add_argument('--debug', action='store_true')
|
3532
3569
|
|
3570
|
+
parser.add_argument('--local', action='store_true')
|
3571
|
+
|
3533
3572
|
parser.add_argument('command', nargs='+')
|
3534
3573
|
|
3535
3574
|
args = parser.parse_args()
|
@@ -3560,28 +3599,34 @@ def _main() -> None:
|
|
3560
3599
|
|
3561
3600
|
#
|
3562
3601
|
|
3563
|
-
cmds = [
|
3564
|
-
|
3565
|
-
|
3566
|
-
|
3602
|
+
cmds: ta.List[Command] = []
|
3603
|
+
for c in args.command:
|
3604
|
+
if c == 'deploy':
|
3605
|
+
cmds.append(DeployCommand())
|
3606
|
+
else:
|
3607
|
+
cmds.append(SubprocessCommand([c]))
|
3567
3608
|
|
3568
3609
|
#
|
3569
3610
|
|
3570
|
-
|
3571
|
-
|
3572
|
-
shell_quote=args.shell_quote,
|
3573
|
-
python=args.python,
|
3574
|
-
)
|
3611
|
+
with contextlib.ExitStack() as es:
|
3612
|
+
ce: CommandExecutor
|
3575
3613
|
|
3576
|
-
|
3577
|
-
|
3578
|
-
r = rce.try_execute(cmd)
|
3614
|
+
if args.local:
|
3615
|
+
ce = injector[CommandExecutor]
|
3579
3616
|
|
3580
|
-
|
3617
|
+
else:
|
3618
|
+
tgt = RemoteSpawning.Target(
|
3619
|
+
shell=args.shell,
|
3620
|
+
shell_quote=args.shell_quote,
|
3621
|
+
python=args.python,
|
3622
|
+
)
|
3581
3623
|
|
3582
|
-
|
3624
|
+
ce = es.enter_context(injector[RemoteExecution].connect(tgt, bs)) # noqa
|
3583
3625
|
|
3584
|
-
|
3626
|
+
for cmd in cmds:
|
3627
|
+
r = ce.try_execute(cmd)
|
3628
|
+
|
3629
|
+
print(injector[ObjMarshalerManager].marshal_obj(r, opts=ObjMarshalOptions(raw_bytes=True)))
|
3585
3630
|
|
3586
3631
|
|
3587
3632
|
if __name__ == '__main__':
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: ominfra
|
3
|
-
Version: 0.0.0.
|
3
|
+
Version: 0.0.0.dev144
|
4
4
|
Summary: ominfra
|
5
5
|
Author: wrmsr
|
6
6
|
License: BSD-3-Clause
|
@@ -12,8 +12,8 @@ Classifier: Operating System :: OS Independent
|
|
12
12
|
Classifier: Operating System :: POSIX
|
13
13
|
Requires-Python: >=3.12
|
14
14
|
License-File: LICENSE
|
15
|
-
Requires-Dist: omdev==0.0.0.
|
16
|
-
Requires-Dist: omlish==0.0.0.
|
15
|
+
Requires-Dist: omdev==0.0.0.dev144
|
16
|
+
Requires-Dist: omlish==0.0.0.dev144
|
17
17
|
Provides-Extra: all
|
18
18
|
Requires-Dist: paramiko~=3.5; extra == "all"
|
19
19
|
Requires-Dist: asyncssh~=2.18; extra == "all"
|
@@ -32,8 +32,8 @@ ominfra/manage/__main__.py,sha256=5IeIERm-371fSI5ZvPv8eldAJBwgKwpR0R49pTsILNM,76
|
|
32
32
|
ominfra/manage/bootstrap.py,sha256=puGpmK6b6ZCAX5E_HI9ucUuWlXB4U_4Xwc2x8GAKSVo,240
|
33
33
|
ominfra/manage/bootstrap_.py,sha256=WVry3P5ViPpdEC_-EFBouZTECMxs4CwRbek4Oz_iRbc,517
|
34
34
|
ominfra/manage/config.py,sha256=1y2N_8nXHBZc6YbW6BaRZoDDCTBmiHuWtTOQ7zdr5VE,184
|
35
|
-
ominfra/manage/inject.py,sha256=
|
36
|
-
ominfra/manage/main.py,sha256=
|
35
|
+
ominfra/manage/inject.py,sha256=jGjGqlecpxzpJR3-RqQhEBOmpsix5UwSsvrz5DbayC4,1395
|
36
|
+
ominfra/manage/main.py,sha256=F8XJx8JvDDoDRUGgDyMb22dCuyySUkUvZW-XtGwKHMU,2909
|
37
37
|
ominfra/manage/marshal.py,sha256=WKj7IU9bo4fBMSSzT6ZMm_WFalXIJZ-V7j8oi92fNhk,305
|
38
38
|
ominfra/manage/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
39
39
|
ominfra/manage/commands/base.py,sha256=yhOAh893iJrk0SvgkRZQMLw8cvStEI2IaHKP9Ifg7N0,3966
|
@@ -41,6 +41,9 @@ ominfra/manage/commands/execution.py,sha256=FBkc9tA_QeKfeajijhsgIiIbqwE9LVwI63Qo
|
|
41
41
|
ominfra/manage/commands/inject.py,sha256=00QL4Xui5oHXbUG6F8QvJXeIdh2YKThKzqsusZUmfN4,3439
|
42
42
|
ominfra/manage/commands/marshal.py,sha256=4DSCMPzRiRhufIB_9DPL6LrZkRZOle5ruOWU4MVlcXM,694
|
43
43
|
ominfra/manage/commands/subprocess.py,sha256=3JaOt56uPqW3jYRtpBpHk5zm3ZzOXzCK-feyDBkq8P4,2198
|
44
|
+
ominfra/manage/deploy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
45
|
+
ominfra/manage/deploy/command.py,sha256=mTBjerB7lIBdPrivgyWkoAYDY76cfHexjEFYTzanURY,493
|
46
|
+
ominfra/manage/deploy/inject.py,sha256=j5LYK5y_nZgdaNLde8sV2w_---GvmibgO_ZBT8qzeFM,499
|
44
47
|
ominfra/manage/remote/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
45
48
|
ominfra/manage/remote/channel.py,sha256=l3bsuE6JZ3VD5abxsWys7m-4kFjOr_B-27bEMgz4K4Q,1325
|
46
49
|
ominfra/manage/remote/config.py,sha256=yMJsz8zB5i3ytiS-YaCb6-qXumMKXh18SjmtzPVO44c,280
|
@@ -50,7 +53,7 @@ ominfra/manage/remote/payload.py,sha256=Rn-Yo26POpHEOOfUHX3jWkqcQVEAvkJ_5Bu13jwo
|
|
50
53
|
ominfra/manage/remote/spawning.py,sha256=6JLs_IsMjNQr6i8vROUjHsqmNFno1Ykh3oBXOOHBFYY,2614
|
51
54
|
ominfra/scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
52
55
|
ominfra/scripts/journald2aws.py,sha256=s_ratu1H5K76uM0sx0gMX1Y8pSDO29YqW6x5UrV8jTI,135495
|
53
|
-
ominfra/scripts/manage.py,sha256=
|
56
|
+
ominfra/scripts/manage.py,sha256=sljVPfvf1pvzJU-NZVxKqikMYc-uFbvkeARE3GB5PWY,92967
|
54
57
|
ominfra/scripts/supervisor.py,sha256=OTBihWooI6yRzY-kw20vMBqZmrKMKfZkVUcwd_xZ7ZM,249541
|
55
58
|
ominfra/supervisor/LICENSE.txt,sha256=yvqaMNsDhWxziHa9ien6qCW1SkZv-DQlAg96XjfSee8,1746
|
56
59
|
ominfra/supervisor/__init__.py,sha256=Y3l4WY4JRi2uLG6kgbGp93fuGfkxkKwZDvhsa0Rwgtk,15
|
@@ -93,9 +96,9 @@ ominfra/tailscale/api.py,sha256=C5-t_b6jZXUWcy5k8bXm7CFnk73pSdrlMOgGDeGVrpw,1370
|
|
93
96
|
ominfra/tailscale/cli.py,sha256=DSGp4hn5xwOW-l_u_InKlSF6kIobxtUtVssf_73STs0,3567
|
94
97
|
ominfra/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
95
98
|
ominfra/tools/listresources.py,sha256=4qVg5txsb10EHhvqXXeM6gJ2jx9LbroEnPydDv1uXs0,6176
|
96
|
-
ominfra-0.0.0.
|
97
|
-
ominfra-0.0.0.
|
98
|
-
ominfra-0.0.0.
|
99
|
-
ominfra-0.0.0.
|
100
|
-
ominfra-0.0.0.
|
101
|
-
ominfra-0.0.0.
|
99
|
+
ominfra-0.0.0.dev144.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
|
100
|
+
ominfra-0.0.0.dev144.dist-info/METADATA,sha256=svnd2N9jZtxI9FCLy1qVR8vuz4lD7GbuXvHq1nnC2Ko,731
|
101
|
+
ominfra-0.0.0.dev144.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
102
|
+
ominfra-0.0.0.dev144.dist-info/entry_points.txt,sha256=kgecQ2MgGrM9qK744BoKS3tMesaC3yjLnl9pa5CRczg,37
|
103
|
+
ominfra-0.0.0.dev144.dist-info/top_level.txt,sha256=E-b2OHkk_AOBLXHYZQ2EOFKl-_6uOGd8EjeG-Zy6h_w,8
|
104
|
+
ominfra-0.0.0.dev144.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|