ominfra 0.0.0.dev147__py3-none-any.whl → 0.0.0.dev148__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/configs.py +30 -5
- ominfra/manage/commands/base.py +5 -5
- ominfra/manage/commands/execution.py +2 -2
- ominfra/manage/commands/inject.py +1 -1
- ominfra/manage/commands/interp.py +2 -2
- ominfra/manage/commands/subprocess.py +22 -14
- ominfra/manage/deploy/command.py +1 -1
- ominfra/manage/main.py +48 -32
- ominfra/manage/remote/_main.py +172 -0
- ominfra/manage/remote/channel.py +41 -16
- ominfra/manage/remote/config.py +10 -0
- ominfra/manage/remote/connection.py +106 -0
- ominfra/manage/remote/execution.py +244 -155
- ominfra/manage/remote/inject.py +7 -3
- ominfra/manage/remote/spawning.py +51 -33
- ominfra/pyremote.py +28 -3
- ominfra/scripts/journald2aws.py +127 -28
- ominfra/scripts/manage.py +1360 -485
- ominfra/scripts/supervisor.py +59 -10
- {ominfra-0.0.0.dev147.dist-info → ominfra-0.0.0.dev148.dist-info}/METADATA +3 -3
- {ominfra-0.0.0.dev147.dist-info → ominfra-0.0.0.dev148.dist-info}/RECORD +25 -23
- {ominfra-0.0.0.dev147.dist-info → ominfra-0.0.0.dev148.dist-info}/LICENSE +0 -0
- {ominfra-0.0.0.dev147.dist-info → ominfra-0.0.0.dev148.dist-info}/WHEEL +0 -0
- {ominfra-0.0.0.dev147.dist-info → ominfra-0.0.0.dev148.dist-info}/entry_points.txt +0 -0
- {ominfra-0.0.0.dev147.dist-info → ominfra-0.0.0.dev148.dist-info}/top_level.txt +0 -0
ominfra/scripts/supervisor.py
CHANGED
@@ -1434,7 +1434,10 @@ def parse_octal(arg: ta.Union[str, int]) -> int:
|
|
1434
1434
|
# ../../../omlish/lite/cached.py
|
1435
1435
|
|
1436
1436
|
|
1437
|
-
|
1437
|
+
##
|
1438
|
+
|
1439
|
+
|
1440
|
+
class _AbstractCachedNullary:
|
1438
1441
|
def __init__(self, fn):
|
1439
1442
|
super().__init__()
|
1440
1443
|
self._fn = fn
|
@@ -1442,17 +1445,25 @@ class _cached_nullary: # noqa
|
|
1442
1445
|
functools.update_wrapper(self, fn)
|
1443
1446
|
|
1444
1447
|
def __call__(self, *args, **kwargs): # noqa
|
1445
|
-
|
1446
|
-
self._value = self._fn()
|
1447
|
-
return self._value
|
1448
|
+
raise TypeError
|
1448
1449
|
|
1449
1450
|
def __get__(self, instance, owner): # noqa
|
1450
1451
|
bound = instance.__dict__[self._fn.__name__] = self.__class__(self._fn.__get__(instance, owner))
|
1451
1452
|
return bound
|
1452
1453
|
|
1453
1454
|
|
1455
|
+
##
|
1456
|
+
|
1457
|
+
|
1458
|
+
class _CachedNullary(_AbstractCachedNullary):
|
1459
|
+
def __call__(self, *args, **kwargs): # noqa
|
1460
|
+
if self._value is self._missing:
|
1461
|
+
self._value = self._fn()
|
1462
|
+
return self._value
|
1463
|
+
|
1464
|
+
|
1454
1465
|
def cached_nullary(fn): # ta.Callable[..., T]) -> ta.Callable[..., T]:
|
1455
|
-
return
|
1466
|
+
return _CachedNullary(fn)
|
1456
1467
|
|
1457
1468
|
|
1458
1469
|
def static_init(fn: CallableT) -> CallableT:
|
@@ -1461,6 +1472,20 @@ def static_init(fn: CallableT) -> CallableT:
|
|
1461
1472
|
return fn
|
1462
1473
|
|
1463
1474
|
|
1475
|
+
##
|
1476
|
+
|
1477
|
+
|
1478
|
+
class _AsyncCachedNullary(_AbstractCachedNullary):
|
1479
|
+
async def __call__(self, *args, **kwargs):
|
1480
|
+
if self._value is self._missing:
|
1481
|
+
self._value = await self._fn()
|
1482
|
+
return self._value
|
1483
|
+
|
1484
|
+
|
1485
|
+
def async_cached_nullary(fn): # ta.Callable[..., T]) -> ta.Callable[..., T]:
|
1486
|
+
return _AsyncCachedNullary(fn)
|
1487
|
+
|
1488
|
+
|
1464
1489
|
########################################
|
1465
1490
|
# ../../../omlish/lite/check.py
|
1466
1491
|
|
@@ -5183,6 +5208,33 @@ def check_runtime_version() -> None:
|
|
5183
5208
|
# ../../configs.py
|
5184
5209
|
|
5185
5210
|
|
5211
|
+
def parse_config_file(
|
5212
|
+
name: str,
|
5213
|
+
f: ta.TextIO,
|
5214
|
+
) -> ConfigMapping:
|
5215
|
+
if name.endswith('.toml'):
|
5216
|
+
return toml_loads(f.read())
|
5217
|
+
|
5218
|
+
elif any(name.endswith(e) for e in ('.yml', '.yaml')):
|
5219
|
+
yaml = __import__('yaml')
|
5220
|
+
return yaml.safe_load(f)
|
5221
|
+
|
5222
|
+
elif name.endswith('.ini'):
|
5223
|
+
import configparser
|
5224
|
+
cp = configparser.ConfigParser()
|
5225
|
+
cp.read_file(f)
|
5226
|
+
config_dct: ta.Dict[str, ta.Any] = {}
|
5227
|
+
for sec in cp.sections():
|
5228
|
+
cd = config_dct
|
5229
|
+
for k in sec.split('.'):
|
5230
|
+
cd = cd.setdefault(k, {})
|
5231
|
+
cd.update(cp.items(sec))
|
5232
|
+
return config_dct
|
5233
|
+
|
5234
|
+
else:
|
5235
|
+
return json.loads(f.read())
|
5236
|
+
|
5237
|
+
|
5186
5238
|
def read_config_file(
|
5187
5239
|
path: str,
|
5188
5240
|
cls: ta.Type[T],
|
@@ -5190,13 +5242,10 @@ def read_config_file(
|
|
5190
5242
|
prepare: ta.Optional[ta.Callable[[ConfigMapping], ConfigMapping]] = None,
|
5191
5243
|
) -> T:
|
5192
5244
|
with open(path) as cf:
|
5193
|
-
|
5194
|
-
config_dct = toml_loads(cf.read())
|
5195
|
-
else:
|
5196
|
-
config_dct = json.loads(cf.read())
|
5245
|
+
config_dct = parse_config_file(os.path.basename(path), cf)
|
5197
5246
|
|
5198
5247
|
if prepare is not None:
|
5199
|
-
config_dct = prepare(config_dct)
|
5248
|
+
config_dct = prepare(config_dct)
|
5200
5249
|
|
5201
5250
|
return unmarshal_obj(config_dct, cls)
|
5202
5251
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: ominfra
|
3
|
-
Version: 0.0.0.
|
3
|
+
Version: 0.0.0.dev148
|
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.dev148
|
16
|
+
Requires-Dist: omlish==0.0.0.dev148
|
17
17
|
Provides-Extra: all
|
18
18
|
Requires-Dist: paramiko~=3.5; extra == "all"
|
19
19
|
Requires-Dist: asyncssh~=2.18; extra == "all"
|
@@ -2,8 +2,8 @@ ominfra/.manifests.json,sha256=8KREXxMAlsilZOktXPYru1ND3V5hFI22vnrp6hT3bio,589
|
|
2
2
|
ominfra/__about__.py,sha256=6i1AoruFYQCd-PyhhbDQDWY2d1tiQu9nkwWr-fXAqfY,705
|
3
3
|
ominfra/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
4
4
|
ominfra/cmds.py,sha256=E0AfnvEmnKntXWvmLW5L05_NeDpBET1VBXn7vV6EwBQ,2083
|
5
|
-
ominfra/configs.py,sha256=
|
6
|
-
ominfra/pyremote.py,sha256=
|
5
|
+
ominfra/configs.py,sha256=5FTps4LfMld229N6um_jxPGQuzktjXIY9ebJ3zOWbXE,2353
|
6
|
+
ominfra/pyremote.py,sha256=Q40eRMfJc5MVscI0grfeNAf1hj4R_8V3ceKQZhKKEII,15025
|
7
7
|
ominfra/ssh.py,sha256=jQpc4WvkMckIfk4vILda8zFaeharRqc_6wxW50b0OjQ,5431
|
8
8
|
ominfra/threadworkers.py,sha256=oX4ubZn7h932saXpRIJu2MNhBExgGGMuGhdXarZxLJw,4948
|
9
9
|
ominfra/clouds/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -33,30 +33,32 @@ ominfra/manage/bootstrap.py,sha256=puGpmK6b6ZCAX5E_HI9ucUuWlXB4U_4Xwc2x8GAKSVo,2
|
|
33
33
|
ominfra/manage/bootstrap_.py,sha256=WVry3P5ViPpdEC_-EFBouZTECMxs4CwRbek4Oz_iRbc,517
|
34
34
|
ominfra/manage/config.py,sha256=1y2N_8nXHBZc6YbW6BaRZoDDCTBmiHuWtTOQ7zdr5VE,184
|
35
35
|
ominfra/manage/inject.py,sha256=jGjGqlecpxzpJR3-RqQhEBOmpsix5UwSsvrz5DbayC4,1395
|
36
|
-
ominfra/manage/main.py,sha256=
|
36
|
+
ominfra/manage/main.py,sha256=hTsyeukcCrLkdpduGlBN7rogdKoCddKRlWRh2V64Ixo,3502
|
37
37
|
ominfra/manage/marshal.py,sha256=WKj7IU9bo4fBMSSzT6ZMm_WFalXIJZ-V7j8oi92fNhk,305
|
38
38
|
ominfra/manage/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
39
|
-
ominfra/manage/commands/base.py,sha256=
|
40
|
-
ominfra/manage/commands/execution.py,sha256=
|
41
|
-
ominfra/manage/commands/inject.py,sha256=
|
42
|
-
ominfra/manage/commands/interp.py,sha256=
|
39
|
+
ominfra/manage/commands/base.py,sha256=54OP5snMusLGSd5_8qsqNgyfmfPdq23HAV93xRsEJ_4,4004
|
40
|
+
ominfra/manage/commands/execution.py,sha256=BJyAIOJx7dG8x4T75vIMpE_hEJCPPnfIkebXpQulSNE,618
|
41
|
+
ominfra/manage/commands/inject.py,sha256=yyIR0qQaXw_BXEnl8vZZiVkfilZNyyHHbJ44AHTMUi4,3553
|
42
|
+
ominfra/manage/commands/interp.py,sha256=iZLGueK3CRdvdDEQua34SmroEJ3OavU8QCIDqpEo5Y0,1043
|
43
43
|
ominfra/manage/commands/marshal.py,sha256=4DSCMPzRiRhufIB_9DPL6LrZkRZOle5ruOWU4MVlcXM,694
|
44
|
-
ominfra/manage/commands/subprocess.py,sha256=
|
44
|
+
ominfra/manage/commands/subprocess.py,sha256=8-TU5Vuy0ZwymKV0yDgbeLy87ceI3JTK9-2zUK8w15s,2594
|
45
45
|
ominfra/manage/deploy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
46
|
-
ominfra/manage/deploy/command.py,sha256=
|
46
|
+
ominfra/manage/deploy/command.py,sha256=CBzsw31u86wxkY9Ms-Es70ijD_3naZLAcj3Gb6OfGeQ,565
|
47
47
|
ominfra/manage/deploy/inject.py,sha256=j5LYK5y_nZgdaNLde8sV2w_---GvmibgO_ZBT8qzeFM,499
|
48
48
|
ominfra/manage/deploy/paths.py,sha256=3oQEDrdv92WjgH6DQNqTTm9udyvh614aVDGS_9Ter_Q,3848
|
49
49
|
ominfra/manage/remote/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
50
|
-
ominfra/manage/remote/
|
51
|
-
ominfra/manage/remote/
|
52
|
-
ominfra/manage/remote/
|
53
|
-
ominfra/manage/remote/
|
50
|
+
ominfra/manage/remote/_main.py,sha256=Cg312nrFOsqNBXmrwxNl07SRyqr1ZsSHYyZBITJzFrU,4408
|
51
|
+
ominfra/manage/remote/channel.py,sha256=36xR9Ti9ZA8TUBtxmY0u7_3Lv7E6wzQTxlZl7gLR5GE,2224
|
52
|
+
ominfra/manage/remote/config.py,sha256=zRIC7Yhh3FMfoIgyqlbDTwpL_jS23lhQXjGB2_YG4Eg,473
|
53
|
+
ominfra/manage/remote/connection.py,sha256=5h-JrMK07Ulqgol3ZXmcTpSUr6iMu1oZd-wCjnRqe_Y,2821
|
54
|
+
ominfra/manage/remote/execution.py,sha256=jMaWVlA2_zFs8lWPjXWB5-C-oQ1Wk-QH2POXgjIdXx4,9513
|
55
|
+
ominfra/manage/remote/inject.py,sha256=euI9YmLTmNw7tdkQq_5PtFg6n9pYz3mGukOOApdYwfg,1076
|
54
56
|
ominfra/manage/remote/payload.py,sha256=Rn-Yo26POpHEOOfUHX3jWkqcQVEAvkJ_5Bu13jwoob4,944
|
55
|
-
ominfra/manage/remote/spawning.py,sha256=
|
57
|
+
ominfra/manage/remote/spawning.py,sha256=xE-as45fCtu3W1q-X6ktYesksdY_uGSQo7gGHX3DxCQ,3214
|
56
58
|
ominfra/scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
57
|
-
ominfra/scripts/journald2aws.py,sha256=
|
58
|
-
ominfra/scripts/manage.py,sha256
|
59
|
-
ominfra/scripts/supervisor.py,sha256=
|
59
|
+
ominfra/scripts/journald2aws.py,sha256=B4U4gjE-1TGB3zpizBQEQdu8vvxyId0Psqt_x3GmHhQ,138342
|
60
|
+
ominfra/scripts/manage.py,sha256=6_DqMbL3YQl5iTCGypwnDOF87bG5v5LKlaNv97VBVHI,176130
|
61
|
+
ominfra/scripts/supervisor.py,sha256=eG6PxnhyGv-R0OCKpb1k36SS0zoepDtlE_4hYUqlHJA,251153
|
60
62
|
ominfra/supervisor/LICENSE.txt,sha256=yvqaMNsDhWxziHa9ien6qCW1SkZv-DQlAg96XjfSee8,1746
|
61
63
|
ominfra/supervisor/__init__.py,sha256=Y3l4WY4JRi2uLG6kgbGp93fuGfkxkKwZDvhsa0Rwgtk,15
|
62
64
|
ominfra/supervisor/__main__.py,sha256=I0yFw-C08OOiZ3BF6lF1Oiv789EQXu-_j6whDhQUTEA,66
|
@@ -98,9 +100,9 @@ ominfra/tailscale/api.py,sha256=C5-t_b6jZXUWcy5k8bXm7CFnk73pSdrlMOgGDeGVrpw,1370
|
|
98
100
|
ominfra/tailscale/cli.py,sha256=DSGp4hn5xwOW-l_u_InKlSF6kIobxtUtVssf_73STs0,3567
|
99
101
|
ominfra/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
100
102
|
ominfra/tools/listresources.py,sha256=4qVg5txsb10EHhvqXXeM6gJ2jx9LbroEnPydDv1uXs0,6176
|
101
|
-
ominfra-0.0.0.
|
102
|
-
ominfra-0.0.0.
|
103
|
-
ominfra-0.0.0.
|
104
|
-
ominfra-0.0.0.
|
105
|
-
ominfra-0.0.0.
|
106
|
-
ominfra-0.0.0.
|
103
|
+
ominfra-0.0.0.dev148.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
|
104
|
+
ominfra-0.0.0.dev148.dist-info/METADATA,sha256=1Fq_9kyyKu_ruQylicwWg_zl1wKlwFUwbqW-NpNpfs8,731
|
105
|
+
ominfra-0.0.0.dev148.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
106
|
+
ominfra-0.0.0.dev148.dist-info/entry_points.txt,sha256=kgecQ2MgGrM9qK744BoKS3tMesaC3yjLnl9pa5CRczg,37
|
107
|
+
ominfra-0.0.0.dev148.dist-info/top_level.txt,sha256=E-b2OHkk_AOBLXHYZQ2EOFKl-_6uOGd8EjeG-Zy6h_w,8
|
108
|
+
ominfra-0.0.0.dev148.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|