ominfra 0.0.0.dev178__py3-none-any.whl → 0.0.0.dev180__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- ominfra/clouds/aws/cli.py +1 -1
- ominfra/manage/deploy/driver.py +7 -16
- ominfra/manage/deploy/inject.py +53 -19
- ominfra/manage/deploy/interp.py +2 -2
- ominfra/manage/deploy/venvs.py +2 -2
- ominfra/manage/main.py +2 -2
- ominfra/manage/remote/spawning.py +1 -1
- ominfra/scripts/manage.py +1001 -866
- ominfra/scripts/supervisor.py +111 -104
- ominfra/supervisor/http.py +1 -1
- ominfra/systemd.py +18 -0
- ominfra/tailscale/cli.py +4 -4
- {ominfra-0.0.0.dev178.dist-info → ominfra-0.0.0.dev180.dist-info}/METADATA +3 -3
- {ominfra-0.0.0.dev178.dist-info → ominfra-0.0.0.dev180.dist-info}/RECORD +18 -17
- {ominfra-0.0.0.dev178.dist-info → ominfra-0.0.0.dev180.dist-info}/LICENSE +0 -0
- {ominfra-0.0.0.dev178.dist-info → ominfra-0.0.0.dev180.dist-info}/WHEEL +0 -0
- {ominfra-0.0.0.dev178.dist-info → ominfra-0.0.0.dev180.dist-info}/entry_points.txt +0 -0
- {ominfra-0.0.0.dev178.dist-info → ominfra-0.0.0.dev180.dist-info}/top_level.txt +0 -0
ominfra/scripts/supervisor.py
CHANGED
@@ -113,15 +113,14 @@ CheckOnRaiseFn = ta.Callable[[Exception], None] # ta.TypeAlias
|
|
113
113
|
CheckExceptionFactory = ta.Callable[..., Exception] # ta.TypeAlias
|
114
114
|
CheckArgsRenderer = ta.Callable[..., ta.Optional[str]] # ta.TypeAlias
|
115
115
|
|
116
|
-
# ../../omlish/lite/socket.py
|
117
|
-
SocketAddress = ta.Any
|
118
|
-
SocketHandlerFactory = ta.Callable[[SocketAddress, ta.BinaryIO, ta.BinaryIO], 'SocketHandler']
|
119
|
-
|
120
116
|
# ../../omlish/lite/typing.py
|
121
117
|
A0 = ta.TypeVar('A0')
|
122
118
|
A1 = ta.TypeVar('A1')
|
123
119
|
A2 = ta.TypeVar('A2')
|
124
120
|
|
121
|
+
# ../../omlish/sockets/addresses.py
|
122
|
+
SocketAddress = ta.Any
|
123
|
+
|
125
124
|
# events.py
|
126
125
|
EventCallback = ta.Callable[['Event'], None]
|
127
126
|
ProcessOutputChannel = ta.Literal['stdout', 'stderr'] # ta.TypeAlias
|
@@ -139,6 +138,9 @@ InjectorProviderFn = ta.Callable[['Injector'], ta.Any]
|
|
139
138
|
InjectorProviderFnMap = ta.Mapping['InjectorKey', 'InjectorProviderFn']
|
140
139
|
InjectorBindingOrBindings = ta.Union['InjectorBinding', 'InjectorBindings']
|
141
140
|
|
141
|
+
# ../../omlish/sockets/handlers.py
|
142
|
+
SocketHandlerFactory = ta.Callable[[SocketAddress, ta.BinaryIO, ta.BinaryIO], 'SocketHandler']
|
143
|
+
|
142
144
|
# ../configs.py
|
143
145
|
ConfigMapping = ta.Mapping[str, ta.Any]
|
144
146
|
|
@@ -2344,76 +2346,6 @@ def deep_subclasses(cls: ta.Type[T]) -> ta.Iterator[ta.Type[T]]:
|
|
2344
2346
|
todo.extend(reversed(cur.__subclasses__()))
|
2345
2347
|
|
2346
2348
|
|
2347
|
-
########################################
|
2348
|
-
# ../../../omlish/lite/socket.py
|
2349
|
-
"""
|
2350
|
-
TODO:
|
2351
|
-
- SocketClientAddress family / tuple pairs
|
2352
|
-
+ codification of https://docs.python.org/3/library/socket.html#socket-families
|
2353
|
-
"""
|
2354
|
-
|
2355
|
-
|
2356
|
-
##
|
2357
|
-
|
2358
|
-
|
2359
|
-
@dc.dataclass(frozen=True)
|
2360
|
-
class SocketAddressInfoArgs:
|
2361
|
-
host: ta.Optional[str]
|
2362
|
-
port: ta.Union[str, int, None]
|
2363
|
-
family: socket.AddressFamily = socket.AddressFamily.AF_UNSPEC
|
2364
|
-
type: int = 0
|
2365
|
-
proto: int = 0
|
2366
|
-
flags: socket.AddressInfo = socket.AddressInfo(0)
|
2367
|
-
|
2368
|
-
|
2369
|
-
@dc.dataclass(frozen=True)
|
2370
|
-
class SocketAddressInfo:
|
2371
|
-
family: socket.AddressFamily
|
2372
|
-
type: int
|
2373
|
-
proto: int
|
2374
|
-
canonname: ta.Optional[str]
|
2375
|
-
sockaddr: SocketAddress
|
2376
|
-
|
2377
|
-
|
2378
|
-
def get_best_socket_family(
|
2379
|
-
host: ta.Optional[str],
|
2380
|
-
port: ta.Union[str, int, None],
|
2381
|
-
family: ta.Union[int, socket.AddressFamily] = socket.AddressFamily.AF_UNSPEC,
|
2382
|
-
) -> ta.Tuple[socket.AddressFamily, SocketAddress]:
|
2383
|
-
"""https://github.com/python/cpython/commit/f289084c83190cc72db4a70c58f007ec62e75247"""
|
2384
|
-
|
2385
|
-
infos = socket.getaddrinfo(
|
2386
|
-
host,
|
2387
|
-
port,
|
2388
|
-
family,
|
2389
|
-
type=socket.SOCK_STREAM,
|
2390
|
-
flags=socket.AI_PASSIVE,
|
2391
|
-
)
|
2392
|
-
ai = SocketAddressInfo(*next(iter(infos)))
|
2393
|
-
return ai.family, ai.sockaddr
|
2394
|
-
|
2395
|
-
|
2396
|
-
##
|
2397
|
-
|
2398
|
-
|
2399
|
-
class SocketHandler(abc.ABC):
|
2400
|
-
def __init__(
|
2401
|
-
self,
|
2402
|
-
client_address: SocketAddress,
|
2403
|
-
rfile: ta.BinaryIO,
|
2404
|
-
wfile: ta.BinaryIO,
|
2405
|
-
) -> None:
|
2406
|
-
super().__init__()
|
2407
|
-
|
2408
|
-
self._client_address = client_address
|
2409
|
-
self._rfile = rfile
|
2410
|
-
self._wfile = wfile
|
2411
|
-
|
2412
|
-
@abc.abstractmethod
|
2413
|
-
def handle(self) -> None:
|
2414
|
-
raise NotImplementedError
|
2415
|
-
|
2416
|
-
|
2417
2349
|
########################################
|
2418
2350
|
# ../../../omlish/lite/strings.py
|
2419
2351
|
|
@@ -2670,6 +2602,55 @@ class ProxyLogHandler(ProxyLogFilterer, logging.Handler):
|
|
2670
2602
|
self._underlying.handleError(record)
|
2671
2603
|
|
2672
2604
|
|
2605
|
+
########################################
|
2606
|
+
# ../../../omlish/sockets/addresses.py
|
2607
|
+
"""
|
2608
|
+
TODO:
|
2609
|
+
- SocketClientAddress family / tuple pairs
|
2610
|
+
+ codification of https://docs.python.org/3/library/socket.html#socket-families
|
2611
|
+
"""
|
2612
|
+
|
2613
|
+
|
2614
|
+
##
|
2615
|
+
|
2616
|
+
|
2617
|
+
@dc.dataclass(frozen=True)
|
2618
|
+
class SocketAddressInfoArgs:
|
2619
|
+
host: ta.Optional[str]
|
2620
|
+
port: ta.Union[str, int, None]
|
2621
|
+
family: socket.AddressFamily = socket.AddressFamily.AF_UNSPEC
|
2622
|
+
type: int = 0
|
2623
|
+
proto: int = 0
|
2624
|
+
flags: socket.AddressInfo = socket.AddressInfo(0)
|
2625
|
+
|
2626
|
+
|
2627
|
+
@dc.dataclass(frozen=True)
|
2628
|
+
class SocketAddressInfo:
|
2629
|
+
family: socket.AddressFamily
|
2630
|
+
type: int
|
2631
|
+
proto: int
|
2632
|
+
canonname: ta.Optional[str]
|
2633
|
+
sockaddr: SocketAddress
|
2634
|
+
|
2635
|
+
|
2636
|
+
def get_best_socket_family(
|
2637
|
+
host: ta.Optional[str],
|
2638
|
+
port: ta.Union[str, int, None],
|
2639
|
+
family: ta.Union[int, socket.AddressFamily] = socket.AddressFamily.AF_UNSPEC,
|
2640
|
+
) -> ta.Tuple[socket.AddressFamily, SocketAddress]:
|
2641
|
+
"""https://github.com/python/cpython/commit/f289084c83190cc72db4a70c58f007ec62e75247"""
|
2642
|
+
|
2643
|
+
infos = socket.getaddrinfo(
|
2644
|
+
host,
|
2645
|
+
port,
|
2646
|
+
family,
|
2647
|
+
type=socket.SOCK_STREAM,
|
2648
|
+
flags=socket.AI_PASSIVE,
|
2649
|
+
)
|
2650
|
+
ai = SocketAddressInfo(*next(iter(infos)))
|
2651
|
+
return ai.family, ai.sockaddr
|
2652
|
+
|
2653
|
+
|
2673
2654
|
########################################
|
2674
2655
|
# ../events.py
|
2675
2656
|
|
@@ -4291,30 +4272,6 @@ def as_injector_bindings(*args: InjectorBindingOrBindings) -> InjectorBindings:
|
|
4291
4272
|
##
|
4292
4273
|
|
4293
4274
|
|
4294
|
-
@dc.dataclass(frozen=True)
|
4295
|
-
class OverridesInjectorBindings(InjectorBindings):
|
4296
|
-
p: InjectorBindings
|
4297
|
-
m: ta.Mapping[InjectorKey, InjectorBinding]
|
4298
|
-
|
4299
|
-
def bindings(self) -> ta.Iterator[InjectorBinding]:
|
4300
|
-
for b in self.p.bindings():
|
4301
|
-
yield self.m.get(b.key, b)
|
4302
|
-
|
4303
|
-
|
4304
|
-
def injector_override(p: InjectorBindings, *args: InjectorBindingOrBindings) -> InjectorBindings:
|
4305
|
-
m: ta.Dict[InjectorKey, InjectorBinding] = {}
|
4306
|
-
|
4307
|
-
for b in as_injector_bindings(*args).bindings():
|
4308
|
-
if b.key in m:
|
4309
|
-
raise DuplicateInjectorKeyError(b.key)
|
4310
|
-
m[b.key] = b
|
4311
|
-
|
4312
|
-
return OverridesInjectorBindings(p, m)
|
4313
|
-
|
4314
|
-
|
4315
|
-
##
|
4316
|
-
|
4317
|
-
|
4318
4275
|
def build_injector_provider_map(bs: InjectorBindings) -> ta.Mapping[InjectorKey, InjectorProvider]:
|
4319
4276
|
pm: ta.Dict[InjectorKey, InjectorProvider] = {}
|
4320
4277
|
am: ta.Dict[InjectorKey, ta.List[InjectorProvider]] = {}
|
@@ -4338,6 +4295,31 @@ def build_injector_provider_map(bs: InjectorBindings) -> ta.Mapping[InjectorKey,
|
|
4338
4295
|
return pm
|
4339
4296
|
|
4340
4297
|
|
4298
|
+
###
|
4299
|
+
# overrides
|
4300
|
+
|
4301
|
+
|
4302
|
+
@dc.dataclass(frozen=True)
|
4303
|
+
class OverridesInjectorBindings(InjectorBindings):
|
4304
|
+
p: InjectorBindings
|
4305
|
+
m: ta.Mapping[InjectorKey, InjectorBinding]
|
4306
|
+
|
4307
|
+
def bindings(self) -> ta.Iterator[InjectorBinding]:
|
4308
|
+
for b in self.p.bindings():
|
4309
|
+
yield self.m.get(b.key, b)
|
4310
|
+
|
4311
|
+
|
4312
|
+
def injector_override(p: InjectorBindings, *args: InjectorBindingOrBindings) -> InjectorBindings:
|
4313
|
+
m: ta.Dict[InjectorKey, InjectorBinding] = {}
|
4314
|
+
|
4315
|
+
for b in as_injector_bindings(*args).bindings():
|
4316
|
+
if b.key in m:
|
4317
|
+
raise DuplicateInjectorKeyError(b.key)
|
4318
|
+
m[b.key] = b
|
4319
|
+
|
4320
|
+
return OverridesInjectorBindings(p, m)
|
4321
|
+
|
4322
|
+
|
4341
4323
|
###
|
4342
4324
|
# scopes
|
4343
4325
|
|
@@ -4362,7 +4344,7 @@ class InjectorScope(abc.ABC): # noqa
|
|
4362
4344
|
@dc.dataclass(frozen=True)
|
4363
4345
|
class State:
|
4364
4346
|
seeds: ta.Dict[InjectorKey, ta.Any]
|
4365
|
-
|
4347
|
+
provisions: ta.Dict[InjectorKey, ta.Any] = dc.field(default_factory=dict)
|
4366
4348
|
|
4367
4349
|
def new_state(self, vs: ta.Mapping[InjectorKey, ta.Any]) -> State:
|
4368
4350
|
vs = dict(vs)
|
@@ -4442,11 +4424,11 @@ class ScopedInjectorProvider(InjectorProvider):
|
|
4442
4424
|
def pfn(i: Injector) -> ta.Any:
|
4443
4425
|
st = i[self.sc].state()
|
4444
4426
|
try:
|
4445
|
-
return st.
|
4427
|
+
return st.provisions[self.k]
|
4446
4428
|
except KeyError:
|
4447
4429
|
pass
|
4448
4430
|
v = ufn(i)
|
4449
|
-
st.
|
4431
|
+
st.provisions[self.k] = v
|
4450
4432
|
return v
|
4451
4433
|
|
4452
4434
|
ufn = self.p.provider_fn()
|
@@ -4470,9 +4452,7 @@ class _ScopeSeedInjectorProvider(InjectorProvider):
|
|
4470
4452
|
|
4471
4453
|
|
4472
4454
|
def bind_injector_scope(sc: ta.Type[InjectorScope]) -> InjectorBindingOrBindings:
|
4473
|
-
return
|
4474
|
-
InjectorBinder.bind(sc, singleton=True),
|
4475
|
-
)
|
4455
|
+
return InjectorBinder.bind(sc, singleton=True)
|
4476
4456
|
|
4477
4457
|
|
4478
4458
|
#
|
@@ -5012,6 +4992,8 @@ class InjectionApi:
|
|
5012
4992
|
def as_bindings(self, *args: InjectorBindingOrBindings) -> InjectorBindings:
|
5013
4993
|
return as_injector_bindings(*args)
|
5014
4994
|
|
4995
|
+
# overrides
|
4996
|
+
|
5015
4997
|
def override(self, p: InjectorBindings, *args: InjectorBindingOrBindings) -> InjectorBindings:
|
5016
4998
|
return injector_override(p, *args)
|
5017
4999
|
|
@@ -5828,6 +5810,31 @@ def journald_log_handler_factory(
|
|
5828
5810
|
return logging.StreamHandler()
|
5829
5811
|
|
5830
5812
|
|
5813
|
+
########################################
|
5814
|
+
# ../../../omlish/sockets/handlers.py
|
5815
|
+
|
5816
|
+
|
5817
|
+
##
|
5818
|
+
|
5819
|
+
|
5820
|
+
class SocketHandler(abc.ABC):
|
5821
|
+
def __init__(
|
5822
|
+
self,
|
5823
|
+
client_address: SocketAddress,
|
5824
|
+
rfile: ta.BinaryIO,
|
5825
|
+
wfile: ta.BinaryIO,
|
5826
|
+
) -> None:
|
5827
|
+
super().__init__()
|
5828
|
+
|
5829
|
+
self._client_address = client_address
|
5830
|
+
self._rfile = rfile
|
5831
|
+
self._wfile = wfile
|
5832
|
+
|
5833
|
+
@abc.abstractmethod
|
5834
|
+
def handle(self) -> None:
|
5835
|
+
raise NotImplementedError
|
5836
|
+
|
5837
|
+
|
5831
5838
|
########################################
|
5832
5839
|
# ../../configs.py
|
5833
5840
|
|
ominfra/supervisor/http.py
CHANGED
@@ -12,7 +12,7 @@ from omlish.io.fdio.handlers import SocketFdioHandler
|
|
12
12
|
from omlish.lite.check import check
|
13
13
|
from omlish.lite.contextmanagers import defer
|
14
14
|
from omlish.lite.json import JSON_PRETTY_KWARGS
|
15
|
-
from omlish.
|
15
|
+
from omlish.sockets.addresses import SocketAddress
|
16
16
|
|
17
17
|
from .dispatchers import Dispatchers
|
18
18
|
from .groups import ProcessGroupManager
|
ominfra/systemd.py
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
# @omlish-lite
|
2
|
+
import io
|
3
|
+
import typing as ta
|
4
|
+
|
5
|
+
|
6
|
+
def render_systemd_unit(settings_by_section: ta.Mapping[str, ta.Mapping[str, str]]) -> str:
|
7
|
+
out = io.StringIO()
|
8
|
+
|
9
|
+
for i, (section, settings) in enumerate(settings_by_section.items()):
|
10
|
+
if i:
|
11
|
+
out.write('\n')
|
12
|
+
|
13
|
+
out.write(f'[{section}]\n')
|
14
|
+
|
15
|
+
for k, v in settings.items():
|
16
|
+
out.write(f'{k}={v}\n')
|
17
|
+
|
18
|
+
return out.getvalue()
|
ominfra/tailscale/cli.py
CHANGED
@@ -72,7 +72,7 @@ class Cli(ap.Cli):
|
|
72
72
|
else:
|
73
73
|
return 'tailscale'
|
74
74
|
|
75
|
-
@ap.
|
75
|
+
@ap.cmd(name='bin')
|
76
76
|
def bin_cmd(self) -> None:
|
77
77
|
print(self.bin())
|
78
78
|
|
@@ -84,7 +84,7 @@ class Cli(ap.Cli):
|
|
84
84
|
])
|
85
85
|
return msh.unmarshal(json.loads(stdout.decode()), CliStatus)
|
86
86
|
|
87
|
-
@ap.
|
87
|
+
@ap.cmd(
|
88
88
|
ap.arg('name', nargs='?'),
|
89
89
|
name='status',
|
90
90
|
)
|
@@ -97,14 +97,14 @@ class Cli(ap.Cli):
|
|
97
97
|
out = status
|
98
98
|
print(json.dumps_pretty(msh.marshal(out)))
|
99
99
|
|
100
|
-
@ap.
|
100
|
+
@ap.cmd()
|
101
101
|
def ips(self) -> None:
|
102
102
|
print(json.dumps_pretty({
|
103
103
|
hn: node.ipv4s
|
104
104
|
for hn, node in self.status().nodes_by_host_name.items()
|
105
105
|
}))
|
106
106
|
|
107
|
-
@ap.
|
107
|
+
@ap.cmd(
|
108
108
|
ap.arg('name', nargs='?'),
|
109
109
|
)
|
110
110
|
def ip(self) -> None:
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: ominfra
|
3
|
-
Version: 0.0.0.
|
3
|
+
Version: 0.0.0.dev180
|
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.dev180
|
16
|
+
Requires-Dist: omlish==0.0.0.dev180
|
17
17
|
Provides-Extra: all
|
18
18
|
Requires-Dist: paramiko~=3.5; extra == "all"
|
19
19
|
Requires-Dist: asyncssh~=2.18; extra == "all"
|
@@ -5,12 +5,13 @@ ominfra/cmds.py,sha256=E0AfnvEmnKntXWvmLW5L05_NeDpBET1VBXn7vV6EwBQ,2083
|
|
5
5
|
ominfra/configs.py,sha256=gY49bZgAQU1IP3lfLbJxOlEuQcL1tlX3TjyJd-XYHt4,2413
|
6
6
|
ominfra/pyremote.py,sha256=HLfAZl3Xw5CpxLS5PS380zqCyE7n3vKVksIYT2Fbdc8,15197
|
7
7
|
ominfra/ssh.py,sha256=jQpc4WvkMckIfk4vILda8zFaeharRqc_6wxW50b0OjQ,5431
|
8
|
+
ominfra/systemd.py,sha256=sepFytuiRjoWHJbiFH8Ti9zm1gvWBaUXNyvSRiVLi-k,419
|
8
9
|
ominfra/threadworkers.py,sha256=oX4ubZn7h932saXpRIJu2MNhBExgGGMuGhdXarZxLJw,4948
|
9
10
|
ominfra/clouds/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
10
11
|
ominfra/clouds/aws/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
11
12
|
ominfra/clouds/aws/__main__.py,sha256=HXMoxEl9KHhv6zOOPQxiJAftfR2SjBqeVTYw-og9aFw,163
|
12
13
|
ominfra/clouds/aws/auth.py,sha256=lEVAvJLRW9kHw12fIUbIvZNJxbOPtN1piJMGxE3tJr4,6097
|
13
|
-
ominfra/clouds/aws/cli.py,sha256=
|
14
|
+
ominfra/clouds/aws/cli.py,sha256=BjJFYFUrv9LNoARkv9i8u4X69udikPlJ83_-t1c2ypQ,510
|
14
15
|
ominfra/clouds/aws/dataclasses.py,sha256=rKhtJKJ0JhMssU9n9CABX_JaUiokIboEATJ9TZgZQ6A,3868
|
15
16
|
ominfra/clouds/aws/logs.py,sha256=SvOMv5FeRFhxneIyMXCeieyLFpi6byHUsHwOAhFvT0U,5414
|
16
17
|
ominfra/clouds/aws/metadata.py,sha256=XR1BuMdQheyeFjjA3MN8GCNWVAp5ahoPdbWXEmViutQ,2767
|
@@ -33,7 +34,7 @@ ominfra/manage/bootstrap.py,sha256=1RIRhVkUZjxZcZerHMg8U6xgWhhemGgPN5cDye8dQ68,4
|
|
33
34
|
ominfra/manage/bootstrap_.py,sha256=B9UfR9J7mS3J54PFaSe1MQS5lCnKgxt5dDRJ9mnHYwg,656
|
34
35
|
ominfra/manage/config.py,sha256=1y2N_8nXHBZc6YbW6BaRZoDDCTBmiHuWtTOQ7zdr5VE,184
|
35
36
|
ominfra/manage/inject.py,sha256=_FVaMZUBKi-oObv14H77luWYCodxNJJD1t4pNQzckFE,2030
|
36
|
-
ominfra/manage/main.py,sha256=
|
37
|
+
ominfra/manage/main.py,sha256=t4qilhICLxDCgLXaU6PJ56kINx0YwenWd8SXSSBWKVU,4381
|
37
38
|
ominfra/manage/marshal.py,sha256=WKj7IU9bo4fBMSSzT6ZMm_WFalXIJZ-V7j8oi92fNhk,305
|
38
39
|
ominfra/manage/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
39
40
|
ominfra/manage/commands/base.py,sha256=LtaI0AgnplttQK7gNncNItq8yuTZQimJTaprVpZktI8,3993
|
@@ -49,15 +50,15 @@ ominfra/manage/deploy/commands.py,sha256=U74HYQ4nhvH7znAKyXGOmZfdnll2gMWxKWVW4Gz
|
|
49
50
|
ominfra/manage/deploy/conf.py,sha256=fNfFlIb-bB3KAzaYZcjrbqaqKSiSq0Lpk0mIF6WgXiw,5410
|
50
51
|
ominfra/manage/deploy/config.py,sha256=kPpl8TRisz295cM4oj-RHA6oh5jdcJ_N9pVpkl_doO8,114
|
51
52
|
ominfra/manage/deploy/deploy.py,sha256=vyBTbBm51HhRE-MQNvxEt39F8uOYsB4ToqZ3zmVkpqU,819
|
52
|
-
ominfra/manage/deploy/driver.py,sha256=
|
53
|
+
ominfra/manage/deploy/driver.py,sha256=kSriXFC8L_EpOcHFGxNZDBGyxV_fZAAF95y-czisnwE,1352
|
53
54
|
ominfra/manage/deploy/git.py,sha256=g4wzUuSu9HwWSDhdVX-7BvA2htMwtWbRcHaoDy-xOJ4,3960
|
54
|
-
ominfra/manage/deploy/inject.py,sha256=
|
55
|
-
ominfra/manage/deploy/interp.py,sha256=
|
55
|
+
ominfra/manage/deploy/inject.py,sha256=eTQC8Kyk8S8ogTJqti2lTwD2j7ha5qQG6KxqeIpLoxU,3610
|
56
|
+
ominfra/manage/deploy/interp.py,sha256=_5fuHrY5ZA0eGbnNcOqAhAMSWI1UNvbm0l29eDjE5fI,1037
|
56
57
|
ominfra/manage/deploy/specs.py,sha256=usi5AmTlv8OGFcwhVHnu8Qrz1Criu5QP6_ScNMi9ehM,3748
|
57
58
|
ominfra/manage/deploy/tags.py,sha256=NVEJhHKMwoDuCFd8lInH_jIe99FQILBX3wrulh3GiDg,5166
|
58
59
|
ominfra/manage/deploy/tmp.py,sha256=FqXoVpIpVe8-KWNu7kXt37A4jKdK_y7h_YFvtrUoOG8,729
|
59
60
|
ominfra/manage/deploy/types.py,sha256=ZcIoheZ3zW7n0IZiqTRW_Uo3JyWWeWg5nyKGryvGc2I,112
|
60
|
-
ominfra/manage/deploy/venvs.py,sha256=
|
61
|
+
ominfra/manage/deploy/venvs.py,sha256=1Ic3yKap9bTduqHorz1MpmSiQPh9x-vxhLLxgpVpRdc,1592
|
61
62
|
ominfra/manage/deploy/paths/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
62
63
|
ominfra/manage/deploy/paths/inject.py,sha256=X81C-Qhef1LQ7tILWvkomBwFTvgooLVmWRnKL7TeVoI,596
|
63
64
|
ominfra/manage/deploy/paths/manager.py,sha256=Dnl8euyZQYDGwDzkMvgPAwOssseducr5kP6T0qzVXQk,929
|
@@ -72,7 +73,7 @@ ominfra/manage/remote/connection.py,sha256=T4fL-GXXAfnbCbkZ3_28t8LAwwki4Td3j41eY
|
|
72
73
|
ominfra/manage/remote/execution.py,sha256=_bygZi_0Uel615uIg43S14CTdmv1unEIu9TPz2mVRJ4,11738
|
73
74
|
ominfra/manage/remote/inject.py,sha256=nSNP_VInCCZOWVrUIRHBvLmnM45geFoYmMh-zqc__as,1080
|
74
75
|
ominfra/manage/remote/payload.py,sha256=Rn-Yo26POpHEOOfUHX3jWkqcQVEAvkJ_5Bu13jwoob4,944
|
75
|
-
ominfra/manage/remote/spawning.py,sha256=
|
76
|
+
ominfra/manage/remote/spawning.py,sha256=H4NqyfPr-58V3e495NwlVGRmUfs5sDjNWSKLW7H-mcg,3296
|
76
77
|
ominfra/manage/system/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
77
78
|
ominfra/manage/system/commands.py,sha256=XrYvsxiwTJh17buIWmoFGH8zTUIXmrXvYkLy1INtmkU,1173
|
78
79
|
ominfra/manage/system/config.py,sha256=mEVBL1cy4twO6F0bdnCI01Sm0xuLe1Z5eiAzCvbmoAc,196
|
@@ -87,8 +88,8 @@ ominfra/manage/targets/inject.py,sha256=P4597xWM-V3I_gCt2O71OLhYQkkXtuJvkYRsIbhh
|
|
87
88
|
ominfra/manage/targets/targets.py,sha256=7GP6UAZyJFEhpkJN6UQdpr_WN3p7C76v-s445y-WB6U,1885
|
88
89
|
ominfra/scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
89
90
|
ominfra/scripts/journald2aws.py,sha256=yEnBAd0Q_3lBkVoTvlJ_uCcUxz7Ckn2qoSWZVhMihvQ,157696
|
90
|
-
ominfra/scripts/manage.py,sha256=
|
91
|
-
ominfra/scripts/supervisor.py,sha256=
|
91
|
+
ominfra/scripts/manage.py,sha256=r0lrDUnP_YCf-L9dg06kpAzNXURBNSty_uaqnvl8Z2o,327238
|
92
|
+
ominfra/scripts/supervisor.py,sha256=aEngsVXbK7DNEtILJ_eMMlUu113kfT2uFJ-bdbcPTro,281984
|
92
93
|
ominfra/supervisor/LICENSE.txt,sha256=yvqaMNsDhWxziHa9ien6qCW1SkZv-DQlAg96XjfSee8,1746
|
93
94
|
ominfra/supervisor/__init__.py,sha256=Y3l4WY4JRi2uLG6kgbGp93fuGfkxkKwZDvhsa0Rwgtk,15
|
94
95
|
ominfra/supervisor/__main__.py,sha256=I0yFw-C08OOiZ3BF6lF1Oiv789EQXu-_j6whDhQUTEA,66
|
@@ -99,7 +100,7 @@ ominfra/supervisor/events.py,sha256=XGrtzHr1xm0dwjz329fn9eR0_Ap-LQL6Sk8LJ8eVDEo,
|
|
99
100
|
ominfra/supervisor/exceptions.py,sha256=Qbu211H3CLlSmi9LsSikOwrcL5HgJP9ugvcKWlGTAoI,750
|
100
101
|
ominfra/supervisor/groups.py,sha256=MBbsbt8Zh_WEYkGOr1KXa82gnPVw9wPB2lAnqhugXSc,2457
|
101
102
|
ominfra/supervisor/groupsimpl.py,sha256=PCDyc_Wc-pnvIj56_aEyiA5exCpK6n9iErqnJzO2rZk,2281
|
102
|
-
ominfra/supervisor/http.py,sha256=
|
103
|
+
ominfra/supervisor/http.py,sha256=_5wiB0DpLzqsPTHn9DkWqhrNSVQSbbIiwsCuSEtosoM,3449
|
103
104
|
ominfra/supervisor/inject.py,sha256=6nBEnpE8VLjtYK12z5DGRP7WzgbwLAz5yf__1KnJl6g,4693
|
104
105
|
ominfra/supervisor/io.py,sha256=moaGNaPuYXEAUzLg8Qjo05DEIcOUNYUj8SSr8eT0d24,3198
|
105
106
|
ominfra/supervisor/main.py,sha256=7YrreFNntdRCp6MplCclfnRcgrRIb_UCeohJkDC9Few,4251
|
@@ -127,12 +128,12 @@ ominfra/supervisor/utils/strings.py,sha256=gZOYiFI3ZQEMrXq6VlK2WadK12JPO6zYjPenq
|
|
127
128
|
ominfra/supervisor/utils/users.py,sha256=PRUhWy74WQCxix4BLNYcWW1i2mF1IyAxj1RzElnP4iM,1345
|
128
129
|
ominfra/tailscale/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
129
130
|
ominfra/tailscale/api.py,sha256=C5-t_b6jZXUWcy5k8bXm7CFnk73pSdrlMOgGDeGVrpw,1370
|
130
|
-
ominfra/tailscale/cli.py,sha256=
|
131
|
+
ominfra/tailscale/cli.py,sha256=3FnJbgpLw6gInTfhERd1mDy9ijjMUGxkdYVo43Tnxx4,3555
|
131
132
|
ominfra/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
132
133
|
ominfra/tools/listresources.py,sha256=4qVg5txsb10EHhvqXXeM6gJ2jx9LbroEnPydDv1uXs0,6176
|
133
|
-
ominfra-0.0.0.
|
134
|
-
ominfra-0.0.0.
|
135
|
-
ominfra-0.0.0.
|
136
|
-
ominfra-0.0.0.
|
137
|
-
ominfra-0.0.0.
|
138
|
-
ominfra-0.0.0.
|
134
|
+
ominfra-0.0.0.dev180.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
|
135
|
+
ominfra-0.0.0.dev180.dist-info/METADATA,sha256=734lpaoe3ooojHKovGR1Rf6CjQl69ZlvZvCaYr9wLog,731
|
136
|
+
ominfra-0.0.0.dev180.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
137
|
+
ominfra-0.0.0.dev180.dist-info/entry_points.txt,sha256=kgecQ2MgGrM9qK744BoKS3tMesaC3yjLnl9pa5CRczg,37
|
138
|
+
ominfra-0.0.0.dev180.dist-info/top_level.txt,sha256=E-b2OHkk_AOBLXHYZQ2EOFKl-_6uOGd8EjeG-Zy6h_w,8
|
139
|
+
ominfra-0.0.0.dev180.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|