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.
@@ -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
- prvs: ta.Dict[InjectorKey, ta.Any] = dc.field(default_factory=dict)
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.prvs[self.k]
4427
+ return st.provisions[self.k]
4446
4428
  except KeyError:
4447
4429
  pass
4448
4430
  v = ufn(i)
4449
- st.prvs[self.k] = v
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 as_injector_bindings(
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
 
@@ -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.lite.socket import SocketAddress
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.command(name='bin')
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.command(
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.command()
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.command(
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.dev178
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.dev178
16
- Requires-Dist: omlish==0.0.0.dev178
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=I2iumILzIt6VJ1hjDcTKJjVtOdzrZIv4w1EmCp_DoXM,514
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=6KulKJqgKHl_wdWEOdY9btoI-pq11tDFqugsUtOpW8A,4389
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=ccLiVoZz_GnhQ3FRPFCu9hzsU6wsOWTOmHeYNBRIZkg,1576
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=JHQexbf-789mWL8GTSxyd4SnTbDB0nqwSyiJp-3QvAM,2834
55
- ominfra/manage/deploy/interp.py,sha256=OKkenH8YKEW_mEDR6X7_ZLxK9a1Ox6KHSwFPTHT6OzA,1029
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=h_9Bb4NpvXqO2Hb5t_5qbWs3zfMDPfmKZvMACJ4CY5M,1584
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=CWeHBl4dzHLFLwJyFrt5hiAmhL0FaQzIYZ8j8EhI6VE,3301
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=XDt86ZEFjcShexhLQjmse1N6f_dk7AVVtozzETsNUdY,324293
91
- ominfra/scripts/supervisor.py,sha256=6RMBLbB4pMNaJlnOBwhdpuhMqv6NDrjTup9SYzKsEjo,281844
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=P8lgeSU1clMDI2oS0sVZvCc0q3OecmUfeJWzQ0PoZKg,3443
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=h6akQJMl0KuWLHS7Ur6WcBZ2JwF0DJQhsPTnFBdGyNk,3571
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.dev178.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
134
- ominfra-0.0.0.dev178.dist-info/METADATA,sha256=Kfw95dyWOXq2P3oSLxG3ObbDVl139_CQAnrZy5k6QtE,731
135
- ominfra-0.0.0.dev178.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
136
- ominfra-0.0.0.dev178.dist-info/entry_points.txt,sha256=kgecQ2MgGrM9qK744BoKS3tMesaC3yjLnl9pa5CRczg,37
137
- ominfra-0.0.0.dev178.dist-info/top_level.txt,sha256=E-b2OHkk_AOBLXHYZQ2EOFKl-_6uOGd8EjeG-Zy6h_w,8
138
- ominfra-0.0.0.dev178.dist-info/RECORD,,
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,,