golem-vm-provider 0.1.18__tar.gz → 0.1.19__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 (26) hide show
  1. {golem_vm_provider-0.1.18 → golem_vm_provider-0.1.19}/PKG-INFO +1 -1
  2. {golem_vm_provider-0.1.18 → golem_vm_provider-0.1.19}/provider/main.py +6 -2
  3. {golem_vm_provider-0.1.18 → golem_vm_provider-0.1.19}/provider/vm/proxy_manager.py +19 -6
  4. {golem_vm_provider-0.1.18 → golem_vm_provider-0.1.19}/pyproject.toml +1 -1
  5. {golem_vm_provider-0.1.18 → golem_vm_provider-0.1.19}/README.md +0 -0
  6. {golem_vm_provider-0.1.18 → golem_vm_provider-0.1.19}/provider/__init__.py +0 -0
  7. {golem_vm_provider-0.1.18 → golem_vm_provider-0.1.19}/provider/api/__init__.py +0 -0
  8. {golem_vm_provider-0.1.18 → golem_vm_provider-0.1.19}/provider/api/models.py +0 -0
  9. {golem_vm_provider-0.1.18 → golem_vm_provider-0.1.19}/provider/api/routes.py +0 -0
  10. {golem_vm_provider-0.1.18 → golem_vm_provider-0.1.19}/provider/config.py +0 -0
  11. {golem_vm_provider-0.1.18 → golem_vm_provider-0.1.19}/provider/discovery/__init__.py +0 -0
  12. {golem_vm_provider-0.1.18 → golem_vm_provider-0.1.19}/provider/discovery/advertiser.py +0 -0
  13. {golem_vm_provider-0.1.18 → golem_vm_provider-0.1.19}/provider/discovery/resource_tracker.py +0 -0
  14. {golem_vm_provider-0.1.18 → golem_vm_provider-0.1.19}/provider/network/port_verifier.py +0 -0
  15. {golem_vm_provider-0.1.18 → golem_vm_provider-0.1.19}/provider/security/ethereum.py +0 -0
  16. {golem_vm_provider-0.1.18 → golem_vm_provider-0.1.19}/provider/utils/ascii_art.py +0 -0
  17. {golem_vm_provider-0.1.18 → golem_vm_provider-0.1.19}/provider/utils/logging.py +0 -0
  18. {golem_vm_provider-0.1.18 → golem_vm_provider-0.1.19}/provider/utils/port_display.py +0 -0
  19. {golem_vm_provider-0.1.18 → golem_vm_provider-0.1.19}/provider/utils/retry.py +0 -0
  20. {golem_vm_provider-0.1.18 → golem_vm_provider-0.1.19}/provider/utils/setup.py +0 -0
  21. {golem_vm_provider-0.1.18 → golem_vm_provider-0.1.19}/provider/vm/__init__.py +0 -0
  22. {golem_vm_provider-0.1.18 → golem_vm_provider-0.1.19}/provider/vm/cloud_init.py +0 -0
  23. {golem_vm_provider-0.1.18 → golem_vm_provider-0.1.19}/provider/vm/models.py +0 -0
  24. {golem_vm_provider-0.1.18 → golem_vm_provider-0.1.19}/provider/vm/multipass.py +0 -0
  25. {golem_vm_provider-0.1.18 → golem_vm_provider-0.1.19}/provider/vm/name_mapper.py +0 -0
  26. {golem_vm_provider-0.1.18 → golem_vm_provider-0.1.19}/provider/vm/port_manager.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: golem-vm-provider
3
- Version: 0.1.18
3
+ Version: 0.1.19
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
@@ -31,11 +31,15 @@ async def setup_provider() -> None:
31
31
  provider = MultipassProvider(resource_tracker, port_manager=port_manager)
32
32
  try:
33
33
  await asyncio.wait_for(provider.initialize(), timeout=30)
34
- app.state.provider = provider
35
34
 
36
- # Store proxy manager reference for cleanup
35
+ # Store provider and proxy manager references
36
+ app.state.provider = provider
37
37
  app.state.proxy_manager = provider.proxy_manager
38
38
 
39
+ # Restore proxy configurations
40
+ logger.process("🔄 Restoring proxy configurations...")
41
+ await app.state.proxy_manager._load_state()
42
+
39
43
  except asyncio.TimeoutError:
40
44
  logger.error("Provider initialization timed out")
41
45
  raise
@@ -158,18 +158,31 @@ class PythonProxyManager:
158
158
  self.port_manager = port_manager
159
159
  self.state_file = state_file or os.path.expanduser("~/.golem/provider/proxy_state.json")
160
160
  self._proxies: Dict[str, ProxyServer] = {} # vm_id -> ProxyServer
161
- self._load_state()
161
+ # Note: _load_state is now async and will be called explicitly during provider setup
162
162
 
163
- def _load_state(self) -> None:
164
- """Load proxy state from file."""
163
+ async def _load_state(self) -> None:
164
+ """Load and restore proxy state from file."""
165
165
  try:
166
166
  state_path = Path(self.state_file)
167
167
  if state_path.exists():
168
168
  with open(state_path, 'r') as f:
169
169
  state = json.load(f)
170
- # We only need to restore port allocations
171
- # Actual proxy servers will be recreated as needed
172
- logger.info(f"Loaded proxy state for {len(state)} VMs")
170
+ # Restore proxy servers from saved state
171
+ restore_tasks = []
172
+ for vm_id, proxy_info in state.items():
173
+ # Create task to restore proxy
174
+ task = self.add_vm(
175
+ vm_id=vm_id,
176
+ vm_ip=proxy_info['target'],
177
+ port=proxy_info['port']
178
+ )
179
+ restore_tasks.append(task)
180
+
181
+ # Wait for all proxies to be restored
182
+ if restore_tasks:
183
+ results = await asyncio.gather(*restore_tasks, return_exceptions=True)
184
+ successful = sum(1 for r in results if r is True)
185
+ logger.info(f"Restored {successful}/{len(state)} proxy configurations")
173
186
  except Exception as e:
174
187
  logger.error(f"Failed to load proxy state: {e}")
175
188
 
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "golem-vm-provider"
3
- version = "0.1.18"
3
+ version = "0.1.19"
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"