golem-vm-provider 0.1.34__tar.gz → 0.1.35__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.
- {golem_vm_provider-0.1.34 → golem_vm_provider-0.1.35}/PKG-INFO +5 -4
- {golem_vm_provider-0.1.34 → golem_vm_provider-0.1.35}/README.md +4 -3
- {golem_vm_provider-0.1.34 → golem_vm_provider-0.1.35}/provider/api/routes.py +23 -0
- {golem_vm_provider-0.1.34 → golem_vm_provider-0.1.35}/provider/vm/service.py +7 -0
- {golem_vm_provider-0.1.34 → golem_vm_provider-0.1.35}/pyproject.toml +1 -1
- {golem_vm_provider-0.1.34 → golem_vm_provider-0.1.35}/provider/__init__.py +0 -0
- {golem_vm_provider-0.1.34 → golem_vm_provider-0.1.35}/provider/api/__init__.py +0 -0
- {golem_vm_provider-0.1.34 → golem_vm_provider-0.1.35}/provider/api/models.py +0 -0
- {golem_vm_provider-0.1.34 → golem_vm_provider-0.1.35}/provider/config.py +0 -0
- {golem_vm_provider-0.1.34 → golem_vm_provider-0.1.35}/provider/container.py +0 -0
- {golem_vm_provider-0.1.34 → golem_vm_provider-0.1.35}/provider/discovery/__init__.py +0 -0
- {golem_vm_provider-0.1.34 → golem_vm_provider-0.1.35}/provider/discovery/advertiser.py +0 -0
- {golem_vm_provider-0.1.34 → golem_vm_provider-0.1.35}/provider/discovery/golem_base_advertiser.py +0 -0
- {golem_vm_provider-0.1.34 → golem_vm_provider-0.1.35}/provider/discovery/golem_base_utils.py +0 -0
- {golem_vm_provider-0.1.34 → golem_vm_provider-0.1.35}/provider/discovery/resource_monitor.py +0 -0
- {golem_vm_provider-0.1.34 → golem_vm_provider-0.1.35}/provider/discovery/resource_tracker.py +0 -0
- {golem_vm_provider-0.1.34 → golem_vm_provider-0.1.35}/provider/discovery/service.py +0 -0
- {golem_vm_provider-0.1.34 → golem_vm_provider-0.1.35}/provider/main.py +0 -0
- {golem_vm_provider-0.1.34 → golem_vm_provider-0.1.35}/provider/network/port_verifier.py +0 -0
- {golem_vm_provider-0.1.34 → golem_vm_provider-0.1.35}/provider/security/ethereum.py +0 -0
- {golem_vm_provider-0.1.34 → golem_vm_provider-0.1.35}/provider/security/faucet.py +0 -0
- {golem_vm_provider-0.1.34 → golem_vm_provider-0.1.35}/provider/service.py +0 -0
- {golem_vm_provider-0.1.34 → golem_vm_provider-0.1.35}/provider/utils/__init__.py +0 -0
- {golem_vm_provider-0.1.34 → golem_vm_provider-0.1.35}/provider/utils/ascii_art.py +0 -0
- {golem_vm_provider-0.1.34 → golem_vm_provider-0.1.35}/provider/utils/logging.py +0 -0
- {golem_vm_provider-0.1.34 → golem_vm_provider-0.1.35}/provider/utils/port_display.py +0 -0
- {golem_vm_provider-0.1.34 → golem_vm_provider-0.1.35}/provider/utils/retry.py +0 -0
- {golem_vm_provider-0.1.34 → golem_vm_provider-0.1.35}/provider/utils/setup.py +0 -0
- {golem_vm_provider-0.1.34 → golem_vm_provider-0.1.35}/provider/vm/__init__.py +0 -0
- {golem_vm_provider-0.1.34 → golem_vm_provider-0.1.35}/provider/vm/cloud_init.py +0 -0
- {golem_vm_provider-0.1.34 → golem_vm_provider-0.1.35}/provider/vm/models.py +0 -0
- {golem_vm_provider-0.1.34 → golem_vm_provider-0.1.35}/provider/vm/multipass.py +0 -0
- {golem_vm_provider-0.1.34 → golem_vm_provider-0.1.35}/provider/vm/multipass_adapter.py +0 -0
- {golem_vm_provider-0.1.34 → golem_vm_provider-0.1.35}/provider/vm/name_mapper.py +0 -0
- {golem_vm_provider-0.1.34 → golem_vm_provider-0.1.35}/provider/vm/port_manager.py +0 -0
- {golem_vm_provider-0.1.34 → golem_vm_provider-0.1.35}/provider/vm/provider.py +0 -0
- {golem_vm_provider-0.1.34 → golem_vm_provider-0.1.35}/provider/vm/proxy_manager.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: golem-vm-provider
|
3
|
-
Version: 0.1.
|
3
|
+
Version: 0.1.35
|
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
|
@@ -271,10 +271,11 @@ Response:
|
|
271
271
|
- List VMs: `GET /api/v1/vms`
|
272
272
|
- Get VM Status: `GET /api/v1/vms/{vm_id}`
|
273
273
|
- Delete VM: `DELETE /api/v1/vms/{vm_id}`
|
274
|
+
- Stop VM: `POST /api/v1/vms/{vm_id}/stop`
|
274
275
|
- Get Access Info: `GET /api/v1/vms/{vm_id}/access`
|
275
|
-
|
276
|
-
## Operations
|
277
|
-
|
276
|
+
|
277
|
+
## Operations
|
278
|
+
|
278
279
|
### Starting the Provider
|
279
280
|
|
280
281
|
```bash
|
@@ -228,10 +228,11 @@ Response:
|
|
228
228
|
- List VMs: `GET /api/v1/vms`
|
229
229
|
- Get VM Status: `GET /api/v1/vms/{vm_id}`
|
230
230
|
- Delete VM: `DELETE /api/v1/vms/{vm_id}`
|
231
|
+
- Stop VM: `POST /api/v1/vms/{vm_id}/stop`
|
231
232
|
- Get Access Info: `GET /api/v1/vms/{vm_id}/access`
|
232
|
-
|
233
|
-
## Operations
|
234
|
-
|
233
|
+
|
234
|
+
## Operations
|
235
|
+
|
235
236
|
### Starting the Provider
|
236
237
|
|
237
238
|
```bash
|
@@ -122,6 +122,29 @@ async def get_vm_access(
|
|
122
122
|
raise HTTPException(status_code=500, detail="An unexpected error occurred")
|
123
123
|
|
124
124
|
|
125
|
+
@router.post("/vms/{requestor_name}/stop")
|
126
|
+
@inject
|
127
|
+
async def stop_vm(
|
128
|
+
requestor_name: str,
|
129
|
+
vm_service: VMService = Depends(Provide[Container.vm_service]),
|
130
|
+
) -> None:
|
131
|
+
"""Stop a VM."""
|
132
|
+
try:
|
133
|
+
logger.process(f"🛑 Stopping VM '{requestor_name}'")
|
134
|
+
await vm_service.stop_vm(requestor_name)
|
135
|
+
vm_status_change(requestor_name, "STOPPED", "VM stopped")
|
136
|
+
logger.success(f"✨ Successfully stopped VM '{requestor_name}'")
|
137
|
+
except VMNotFoundError as e:
|
138
|
+
logger.error(f"VM not found: {e}")
|
139
|
+
raise HTTPException(status_code=404, detail=str(e))
|
140
|
+
except MultipassError as e:
|
141
|
+
logger.error(f"Failed to stop VM: {e}")
|
142
|
+
raise HTTPException(status_code=500, detail=str(e))
|
143
|
+
except Exception as e:
|
144
|
+
logger.error(f"An unexpected error occurred: {e}")
|
145
|
+
raise HTTPException(status_code=500, detail="An unexpected error occurred")
|
146
|
+
|
147
|
+
|
125
148
|
@router.delete("/vms/{requestor_name}")
|
126
149
|
@inject
|
127
150
|
async def delete_vm(
|
@@ -69,6 +69,13 @@ class VMService:
|
|
69
69
|
finally:
|
70
70
|
await self.name_mapper.remove_mapping(vm_id)
|
71
71
|
|
72
|
+
async def stop_vm(self, vm_id: str) -> None:
|
73
|
+
"""Stop a VM."""
|
74
|
+
multipass_name = await self.name_mapper.get_multipass_name(vm_id)
|
75
|
+
if not multipass_name:
|
76
|
+
raise VMNotFoundError(f"VM {vm_id} not found")
|
77
|
+
await self.provider.stop_vm(multipass_name)
|
78
|
+
|
72
79
|
async def list_vms(self) -> List[VMInfo]:
|
73
80
|
"""List all VMs."""
|
74
81
|
return await self.provider.list_vms()
|
@@ -1,6 +1,6 @@
|
|
1
1
|
[tool.poetry]
|
2
2
|
name = "golem-vm-provider"
|
3
|
-
version = "0.1.
|
3
|
+
version = "0.1.35"
|
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"
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{golem_vm_provider-0.1.34 → golem_vm_provider-0.1.35}/provider/discovery/golem_base_advertiser.py
RENAMED
File without changes
|
{golem_vm_provider-0.1.34 → golem_vm_provider-0.1.35}/provider/discovery/golem_base_utils.py
RENAMED
File without changes
|
{golem_vm_provider-0.1.34 → golem_vm_provider-0.1.35}/provider/discovery/resource_monitor.py
RENAMED
File without changes
|
{golem_vm_provider-0.1.34 → golem_vm_provider-0.1.35}/provider/discovery/resource_tracker.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|