golem-vm-provider 0.1.47__tar.gz → 0.1.49__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.
Files changed (43) hide show
  1. {golem_vm_provider-0.1.47 → golem_vm_provider-0.1.49}/PKG-INFO +5 -5
  2. {golem_vm_provider-0.1.47 → golem_vm_provider-0.1.49}/README.md +3 -3
  3. {golem_vm_provider-0.1.47 → golem_vm_provider-0.1.49}/provider/config.py +3 -3
  4. {golem_vm_provider-0.1.47 → golem_vm_provider-0.1.49}/provider/main.py +4 -14
  5. {golem_vm_provider-0.1.47 → golem_vm_provider-0.1.49}/provider/payments/monitor.py +4 -0
  6. {golem_vm_provider-0.1.47 → golem_vm_provider-0.1.49}/pyproject.toml +2 -2
  7. {golem_vm_provider-0.1.47 → golem_vm_provider-0.1.49}/provider/__init__.py +0 -0
  8. {golem_vm_provider-0.1.47 → golem_vm_provider-0.1.49}/provider/api/__init__.py +0 -0
  9. {golem_vm_provider-0.1.47 → golem_vm_provider-0.1.49}/provider/api/models.py +0 -0
  10. {golem_vm_provider-0.1.47 → golem_vm_provider-0.1.49}/provider/api/routes.py +0 -0
  11. {golem_vm_provider-0.1.47 → golem_vm_provider-0.1.49}/provider/container.py +0 -0
  12. {golem_vm_provider-0.1.47 → golem_vm_provider-0.1.49}/provider/data/deployments/l2.json +0 -0
  13. {golem_vm_provider-0.1.47 → golem_vm_provider-0.1.49}/provider/discovery/__init__.py +0 -0
  14. {golem_vm_provider-0.1.47 → golem_vm_provider-0.1.49}/provider/discovery/advertiser.py +0 -0
  15. {golem_vm_provider-0.1.47 → golem_vm_provider-0.1.49}/provider/discovery/golem_base_advertiser.py +0 -0
  16. {golem_vm_provider-0.1.47 → golem_vm_provider-0.1.49}/provider/discovery/golem_base_utils.py +0 -0
  17. {golem_vm_provider-0.1.47 → golem_vm_provider-0.1.49}/provider/discovery/multi_advertiser.py +0 -0
  18. {golem_vm_provider-0.1.47 → golem_vm_provider-0.1.49}/provider/discovery/resource_monitor.py +0 -0
  19. {golem_vm_provider-0.1.47 → golem_vm_provider-0.1.49}/provider/discovery/resource_tracker.py +0 -0
  20. {golem_vm_provider-0.1.47 → golem_vm_provider-0.1.49}/provider/discovery/service.py +0 -0
  21. {golem_vm_provider-0.1.47 → golem_vm_provider-0.1.49}/provider/network/port_verifier.py +0 -0
  22. {golem_vm_provider-0.1.47 → golem_vm_provider-0.1.49}/provider/payments/blockchain_service.py +0 -0
  23. {golem_vm_provider-0.1.47 → golem_vm_provider-0.1.49}/provider/payments/stream_map.py +0 -0
  24. {golem_vm_provider-0.1.47 → golem_vm_provider-0.1.49}/provider/security/ethereum.py +0 -0
  25. {golem_vm_provider-0.1.47 → golem_vm_provider-0.1.49}/provider/security/faucet.py +0 -0
  26. {golem_vm_provider-0.1.47 → golem_vm_provider-0.1.49}/provider/service.py +0 -0
  27. {golem_vm_provider-0.1.47 → golem_vm_provider-0.1.49}/provider/utils/__init__.py +0 -0
  28. {golem_vm_provider-0.1.47 → golem_vm_provider-0.1.49}/provider/utils/ascii_art.py +0 -0
  29. {golem_vm_provider-0.1.47 → golem_vm_provider-0.1.49}/provider/utils/logging.py +0 -0
  30. {golem_vm_provider-0.1.47 → golem_vm_provider-0.1.49}/provider/utils/port_display.py +0 -0
  31. {golem_vm_provider-0.1.47 → golem_vm_provider-0.1.49}/provider/utils/pricing.py +0 -0
  32. {golem_vm_provider-0.1.47 → golem_vm_provider-0.1.49}/provider/utils/retry.py +0 -0
  33. {golem_vm_provider-0.1.47 → golem_vm_provider-0.1.49}/provider/utils/setup.py +0 -0
  34. {golem_vm_provider-0.1.47 → golem_vm_provider-0.1.49}/provider/vm/__init__.py +0 -0
  35. {golem_vm_provider-0.1.47 → golem_vm_provider-0.1.49}/provider/vm/cloud_init.py +0 -0
  36. {golem_vm_provider-0.1.47 → golem_vm_provider-0.1.49}/provider/vm/models.py +0 -0
  37. {golem_vm_provider-0.1.47 → golem_vm_provider-0.1.49}/provider/vm/multipass.py +0 -0
  38. {golem_vm_provider-0.1.47 → golem_vm_provider-0.1.49}/provider/vm/multipass_adapter.py +0 -0
  39. {golem_vm_provider-0.1.47 → golem_vm_provider-0.1.49}/provider/vm/name_mapper.py +0 -0
  40. {golem_vm_provider-0.1.47 → golem_vm_provider-0.1.49}/provider/vm/port_manager.py +0 -0
  41. {golem_vm_provider-0.1.47 → golem_vm_provider-0.1.49}/provider/vm/provider.py +0 -0
  42. {golem_vm_provider-0.1.47 → golem_vm_provider-0.1.49}/provider/vm/proxy_manager.py +0 -0
  43. {golem_vm_provider-0.1.47 → golem_vm_provider-0.1.49}/provider/vm/service.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: golem-vm-provider
3
- Version: 0.1.47
3
+ Version: 0.1.49
4
4
  Summary: VM on Golem Provider Node - Run your own provider node to offer VMs on the Golem Network
5
5
  Keywords: golem,vm,provider,cloud,decentralized
6
6
  Author: Phillip Jensen
@@ -36,7 +36,7 @@ Requires-Dist: pyyaml (>=6.0.1,<7.0.0)
36
36
  Requires-Dist: requests (>=2.31.0,<3.0.0)
37
37
  Requires-Dist: rich (>=13.7.0,<14.0.0)
38
38
  Requires-Dist: setuptools (>=69.0.3,<70.0.0)
39
- Requires-Dist: typer (>=0.4.0,<0.5.0)
39
+ Requires-Dist: typer (>=0.9.0,<1.0.0)
40
40
  Requires-Dist: uvicorn (>=0.15.0,<0.16.0)
41
41
  Requires-Dist: web3 (==7.13.0)
42
42
  Project-URL: Homepage, https://github.com/cryptobench/vm-on-golem
@@ -247,9 +247,9 @@ Enable on‑chain stream‑gated rentals funded in native ETH. By default, the p
247
247
 
248
248
  Optional background automation (all disabled by default):
249
249
 
250
- - `STREAM_MIN_REMAINING_SECONDS` — minimum remaining runway to keep a VM running (default 3600)
251
- - `STREAM_MONITOR_ENABLED` — stop VMs when remaining runway < threshold (default false)
252
- - `STREAM_MONITOR_INTERVAL_SECONDS` — how frequently to check runway (default 60)
250
+ - `STREAM_MIN_REMAINING_SECONDS` — minimum remaining runway to keep a VM running (default 0)
251
+ - `STREAM_MONITOR_ENABLED` — stop VMs when remaining runway < threshold (default true)
252
+ - `STREAM_MONITOR_INTERVAL_SECONDS` — how frequently to check runway (default 30)
253
253
  - `STREAM_WITHDRAW_ENABLED` — periodically withdraw vested funds (default false)
254
254
  - `STREAM_WITHDRAW_INTERVAL_SECONDS` — how often to attempt withdrawals (default 1800)
255
255
  - `STREAM_MIN_WITHDRAW_WEI` — only withdraw when >= this amount (gas‑aware)
@@ -202,9 +202,9 @@ Enable on‑chain stream‑gated rentals funded in native ETH. By default, the p
202
202
 
203
203
  Optional background automation (all disabled by default):
204
204
 
205
- - `STREAM_MIN_REMAINING_SECONDS` — minimum remaining runway to keep a VM running (default 3600)
206
- - `STREAM_MONITOR_ENABLED` — stop VMs when remaining runway < threshold (default false)
207
- - `STREAM_MONITOR_INTERVAL_SECONDS` — how frequently to check runway (default 60)
205
+ - `STREAM_MIN_REMAINING_SECONDS` — minimum remaining runway to keep a VM running (default 0)
206
+ - `STREAM_MONITOR_ENABLED` — stop VMs when remaining runway < threshold (default true)
207
+ - `STREAM_MONITOR_INTERVAL_SECONDS` — how frequently to check runway (default 30)
208
208
  - `STREAM_WITHDRAW_ENABLED` — periodically withdraw vested funds (default false)
209
209
  - `STREAM_WITHDRAW_INTERVAL_SECONDS` — how often to attempt withdrawals (default 1800)
210
210
  - `STREAM_MIN_WITHDRAW_WEI` — only withdraw when >= this amount (gas‑aware)
@@ -150,11 +150,11 @@ class Settings(BaseSettings):
150
150
  description="Token address (0x0 means native ETH). Defaults from l2.json"
151
151
  )
152
152
  STREAM_MIN_REMAINING_SECONDS: int = Field(
153
- default=3600,
153
+ default=0,
154
154
  description="Minimum remaining seconds required to keep a VM running"
155
155
  )
156
156
  STREAM_MONITOR_ENABLED: bool = Field(
157
- default=False,
157
+ default=True,
158
158
  description="Enable background monitor to stop VMs when runway < threshold"
159
159
  )
160
160
  STREAM_WITHDRAW_ENABLED: bool = Field(
@@ -162,7 +162,7 @@ class Settings(BaseSettings):
162
162
  description="Enable background withdrawals for active streams"
163
163
  )
164
164
  STREAM_MONITOR_INTERVAL_SECONDS: int = Field(
165
- default=60,
165
+ default=30,
166
166
  description="How frequently to check stream runway"
167
167
  )
168
168
  STREAM_WITHDRAW_INTERVAL_SECONDS: int = Field(
@@ -133,22 +133,12 @@ cli.add_typer(pricing_app, name="pricing")
133
133
  cli.add_typer(wallet_app, name="wallet")
134
134
  cli.add_typer(streams_app, name="streams")
135
135
 
136
- def print_version(ctx: typer.Context, value: bool):
137
- if not value:
138
- return
139
- try:
140
- version = metadata.version('golem-vm-provider')
141
- except metadata.PackageNotFoundError:
142
- version = 'unknown'
143
- print(f'Provider VM on Golem CLI version {version}')
144
- raise typer.Exit()
145
-
146
136
  @cli.callback()
147
- def main(
148
- version: bool = typer.Option(None, "--version", callback=print_version, is_eager=True, help="Show the version and exit.")
149
- ):
137
+ def main():
138
+ """VM on Golem Provider CLI"""
150
139
  ensure_config()
151
- pass
140
+ # No-op callback to initialize config; avoid custom --version flag to keep help stable
141
+ return
152
142
 
153
143
 
154
144
  @wallet_app.command("faucet-l2")
@@ -57,6 +57,10 @@ class StreamMonitor:
57
57
  await self.vm_service.stop_vm(vm_id)
58
58
  except Exception as e:
59
59
  logger.warning(f"stop_vm failed for {vm_id}: {e}")
60
+ else:
61
+ logger.debug(
62
+ f"VM {vm_id} stream {stream_id} healthy (remaining={remaining}s, threshold={self.settings.STREAM_MIN_REMAINING_SECONDS}s)"
63
+ )
60
64
  # Withdraw if enough vested and configured
61
65
  if self.settings.STREAM_WITHDRAW_ENABLED and self.client:
62
66
  vested = max(min(now, s["stopTime"]) - s["startTime"], 0) * s["ratePerSecond"]
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "golem-vm-provider"
3
- version = "0.1.47"
3
+ version = "0.1.49"
4
4
  description = "VM on Golem Provider Node - Run your own provider node to offer VMs on the Golem Network"
5
5
  authors = ["Phillip Jensen <phillip+vm-on-golem@golemgrid.com>"]
6
6
  readme = "README.md"
@@ -46,7 +46,7 @@ setuptools = "^69.0.3"
46
46
  colorlog = "^6.8.0"
47
47
  rich = "^13.7.0"
48
48
  httpx = "^0.23.0"
49
- typer = "^0.4.0"
49
+ typer = ">=0.9.0,<1.0.0"
50
50
  web3 = "==7.13.0"
51
51
  golem-base-sdk = "==0.1.0"
52
52
  dependency-injector = "^4.41.0"