osi-dump 0.1.3.1__py3-none-any.whl → 0.1.3.1.2__py3-none-any.whl
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.
- osi_dump/api/octavia.py +1 -1
- osi_dump/importer/hypervisor/openstack_hypervisor_importer.py +28 -2
- osi_dump/importer/instance/openstack_instance_importer.py +1 -0
- osi_dump/importer/load_balancer/openstack_load_balancer_importer.py +5 -0
- osi_dump/importer/volume/openstack_volume_importer.py +1 -0
- osi_dump/model/flavor.py +1 -1
- osi_dump/model/hypervisor.py +5 -0
- osi_dump/model/instance.py +3 -0
- osi_dump/model/router.py +2 -1
- osi_dump/model/volume.py +2 -0
- osi_dump/util/openstack_util.py +3 -1
- {osi_dump-0.1.3.1.dist-info → osi_dump-0.1.3.1.2.dist-info}/METADATA +1 -1
- {osi_dump-0.1.3.1.dist-info → osi_dump-0.1.3.1.2.dist-info}/RECORD +16 -16
- {osi_dump-0.1.3.1.dist-info → osi_dump-0.1.3.1.2.dist-info}/WHEEL +1 -1
- {osi_dump-0.1.3.1.dist-info → osi_dump-0.1.3.1.2.dist-info}/entry_points.txt +0 -0
- {osi_dump-0.1.3.1.dist-info → osi_dump-0.1.3.1.2.dist-info}/top_level.txt +0 -0
osi_dump/api/octavia.py
CHANGED
@@ -26,7 +26,7 @@ def get_amphoraes(connection: Connection, load_balancer_id: str) -> list[dict]:
|
|
26
26
|
connection=connection, service_type="load-balancer", interface="public"
|
27
27
|
)
|
28
28
|
|
29
|
-
url = f"{octavia_endpoint}/v2/octavia/amphorae?load_balancer_id={load_balancer_id}&fields=status&fields=compute_id"
|
29
|
+
url = f"{octavia_endpoint}/v2/octavia/amphorae?load_balancer_id={load_balancer_id}&fields=status&fields=compute_id&fields=compute_flavor"
|
30
30
|
|
31
31
|
response = connection.session.get(url)
|
32
32
|
|
@@ -4,6 +4,7 @@ import concurrent
|
|
4
4
|
|
5
5
|
from openstack.connection import Connection
|
6
6
|
from openstack.compute.v2.hypervisor import Hypervisor as OSHypervisor
|
7
|
+
from openstack.compute.v2.aggregate import Aggregate as OSAggregate
|
7
8
|
|
8
9
|
from openstack.placement.v1._proxy import Proxy as PlacementProxy
|
9
10
|
from openstack.placement.v1.resource_provider_inventory import ResourceProviderInventory
|
@@ -29,6 +30,7 @@ class OpenStackHypervisorImporter(HypervisorImporter):
|
|
29
30
|
Returns:
|
30
31
|
list[Hypervisor]: _description_
|
31
32
|
"""
|
33
|
+
aggregates = list(self.connection.list_aggregates())
|
32
34
|
|
33
35
|
try:
|
34
36
|
oshypervisors: list[OSHypervisor] = list(
|
@@ -44,7 +46,7 @@ class OpenStackHypervisorImporter(HypervisorImporter):
|
|
44
46
|
|
45
47
|
with concurrent.futures.ThreadPoolExecutor() as executor:
|
46
48
|
futures = [
|
47
|
-
executor.submit(self._get_hypervisor_info, hypervisor)
|
49
|
+
executor.submit(self._get_hypervisor_info, hypervisor, aggregates)
|
48
50
|
for hypervisor in oshypervisors
|
49
51
|
]
|
50
52
|
for future in concurrent.futures.as_completed(futures):
|
@@ -54,7 +56,19 @@ class OpenStackHypervisorImporter(HypervisorImporter):
|
|
54
56
|
|
55
57
|
return hypervisors
|
56
58
|
|
57
|
-
def _get_hypervisor_info(
|
59
|
+
def _get_hypervisor_info(
|
60
|
+
self, hypervisor: OSHypervisor, aggregates: list[OSAggregate]
|
61
|
+
) -> Hypervisor:
|
62
|
+
aggregate = self._get_aggregate(hypervisor=hypervisor)
|
63
|
+
|
64
|
+
aggregate_id = None
|
65
|
+
aggregate_name = None
|
66
|
+
availability_zone = None
|
67
|
+
|
68
|
+
if aggregate:
|
69
|
+
aggregate_id = aggregate.id
|
70
|
+
aggregate_name = aggregate.name
|
71
|
+
availability_zone = aggregate.availability_zone
|
58
72
|
|
59
73
|
placement_proxy: PlacementProxy = self.connection.placement
|
60
74
|
|
@@ -83,6 +97,18 @@ class OpenStackHypervisorImporter(HypervisorImporter):
|
|
83
97
|
memory_usage=usage_data["MEMORY_MB"],
|
84
98
|
local_disk_usage=usage_data["DISK_GB"],
|
85
99
|
vm_count=len(hypervisor.servers),
|
100
|
+
aggregate_id=aggregate_id,
|
101
|
+
aggregate_name=aggregate_name,
|
102
|
+
availability_zone=availability_zone,
|
86
103
|
)
|
87
104
|
|
88
105
|
return ret_hypervisor
|
106
|
+
|
107
|
+
def _get_aggregate(self, hypervisor: OSHypervisor) -> OSAggregate:
|
108
|
+
aggregates = list(self.connection.list_aggregates())
|
109
|
+
|
110
|
+
for aggregate in aggregates:
|
111
|
+
if hypervisor.name in aggregate.hosts:
|
112
|
+
return aggregate
|
113
|
+
|
114
|
+
return None
|
@@ -61,6 +61,11 @@ class OpenStackLoadBalancerImporter(LoadBalancerImporter):
|
|
61
61
|
connection=self.connection, load_balancer_id=load_balancer["id"]
|
62
62
|
)
|
63
63
|
|
64
|
+
for amphorae in amphoraes:
|
65
|
+
flavor = self.connection.get_flavor_by_id(amphorae["compute_flavor"])
|
66
|
+
amphorae["ram"] = flavor.ram
|
67
|
+
amphorae["vcpus"] = flavor.vcpus
|
68
|
+
|
64
69
|
load_balancer_ret = LoadBalancer(
|
65
70
|
id=load_balancer["id"],
|
66
71
|
load_balancer_name=load_balancer["name"],
|
osi_dump/model/flavor.py
CHANGED
osi_dump/model/hypervisor.py
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
from typing import Optional
|
1
2
|
from pydantic import BaseModel, ConfigDict, ValidationError
|
2
3
|
|
3
4
|
|
@@ -17,4 +18,8 @@ class Hypervisor(BaseModel):
|
|
17
18
|
local_disk_usage: int
|
18
19
|
local_disk_size: int
|
19
20
|
|
21
|
+
availability_zone: Optional[str]
|
22
|
+
aggregate_name: Optional[str]
|
23
|
+
aggregate_id: Optional[str]
|
24
|
+
|
20
25
|
vm_count: int
|
osi_dump/model/instance.py
CHANGED
osi_dump/model/router.py
CHANGED
@@ -6,6 +6,8 @@ from pydantic import BaseModel, ConfigDict, ValidationError
|
|
6
6
|
class Router(BaseModel):
|
7
7
|
model_config = ConfigDict(strict=True)
|
8
8
|
|
9
|
+
project_id: Optional[str]
|
10
|
+
|
9
11
|
router_id: str
|
10
12
|
|
11
13
|
name: Optional[str]
|
@@ -16,7 +18,6 @@ class Router(BaseModel):
|
|
16
18
|
admin_state: Optional[bool]
|
17
19
|
|
18
20
|
status: str
|
19
|
-
project_id: Optional[str]
|
20
21
|
|
21
22
|
created_at: Optional[str]
|
22
23
|
updated_at: Optional[str]
|
osi_dump/model/volume.py
CHANGED
osi_dump/util/openstack_util.py
CHANGED
@@ -14,7 +14,9 @@ def get_endpoint(connection: Connection, service_type: str, interface: str) -> s
|
|
14
14
|
port = parsed_endpoint.port
|
15
15
|
|
16
16
|
ret = urllib.parse.urlunparse(
|
17
|
-
parsed_endpoint._replace(netloc=f"{new_hostname}:{port}")
|
17
|
+
parsed_endpoint._replace(netloc=f"{new_hostname}:{port}")._replace(
|
18
|
+
scheme="https"
|
19
|
+
)
|
18
20
|
)
|
19
21
|
|
20
22
|
return ret
|
@@ -3,7 +3,7 @@ osi_dump/__main__.py,sha256=fCVTLFipB-P0872_4j7iOJNNosOMBj3YdHr8TH_fhRY,71
|
|
3
3
|
osi_dump/cli.py,sha256=vLijmcrWieCVK4cSLN2sK9ltWlercw9Zg6yBEvZtPkg,6379
|
4
4
|
osi_dump/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
5
5
|
osi_dump/api/neutron.py,sha256=xRhNkEBDzOoUQHSWmkoI_Tdbcs8kvdS0UpPNkzxQv3g,1170
|
6
|
-
osi_dump/api/octavia.py,sha256
|
6
|
+
osi_dump/api/octavia.py,sha256=-8EK16bA93yqvo4YPdP5gh1DjL-pn6CtbO9aBmVPhlc,1061
|
7
7
|
osi_dump/api/placement.py,sha256=UvIGwAvowmCLobVARut8WnLVV-IdCDniyW9y16l2B_I,523
|
8
8
|
osi_dump/batch_handler/__init__.py,sha256=wsiE42GCjbKgXBzpiahWEDF_-IXCKzr6PyrLn0oEKSc,288
|
9
9
|
osi_dump/batch_handler/external_port_batch_handler.py,sha256=iGm0htGbLkpTX5RFPcrvXrVVn0eeTpavN3u4s58Z_pE,1783
|
@@ -62,16 +62,16 @@ osi_dump/importer/floating_ip/floating_ip_importer.py,sha256=2_lCZYF-r2dgdL4Yzws
|
|
62
62
|
osi_dump/importer/floating_ip/openstack_floating_ip_importer.py,sha256=xuALHyiyb4LdRgFN0hZvOx0pImKpGsLUtPWW_1q52gc,2286
|
63
63
|
osi_dump/importer/hypervisor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
64
64
|
osi_dump/importer/hypervisor/hypervisor_importer.py,sha256=JuoJBltqFYhH-Ql9TLUPHX2YurS0JFV7Augrc6bDJ5Q,206
|
65
|
-
osi_dump/importer/hypervisor/openstack_hypervisor_importer.py,sha256=
|
65
|
+
osi_dump/importer/hypervisor/openstack_hypervisor_importer.py,sha256=SZr1m2P--FYPmTBQ9dXzLgxTfJgpmURWevV9aokjGyI,3785
|
66
66
|
osi_dump/importer/image/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
67
67
|
osi_dump/importer/image/image_importer.py,sha256=6zwAMnS58S2HGwARwebqf4VE9IBQBv5Ot6nmcn9H4fY,181
|
68
68
|
osi_dump/importer/image/openstack_image_importer.py,sha256=ffc13qnIGu07OXnIPaKiVxGdufep82RfQoKqLb1bwHc,2455
|
69
69
|
osi_dump/importer/instance/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
70
70
|
osi_dump/importer/instance/instance_importer.py,sha256=TaaPgEFVVMRT3mSXrzQkSaSIBPBwwANpEaWCgRsgImc,196
|
71
|
-
osi_dump/importer/instance/openstack_instance_importer.py,sha256=
|
71
|
+
osi_dump/importer/instance/openstack_instance_importer.py,sha256=bvDZdwkxBZl40shIHAQ0QOkRcZEkWaeksROF7DZ5syA,4085
|
72
72
|
osi_dump/importer/load_balancer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
73
73
|
osi_dump/importer/load_balancer/load_balancer_importer.py,sha256=fzInBlkscqlbhCATeQYXvufc-WHq2pbofTJJifN0zaY,218
|
74
|
-
osi_dump/importer/load_balancer/openstack_load_balancer_importer.py,sha256=
|
74
|
+
osi_dump/importer/load_balancer/openstack_load_balancer_importer.py,sha256=9yj60y4MEIHV10e9tStR2B7S0LAOR-jzd4BSshLbG-8,2596
|
75
75
|
osi_dump/importer/project/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
76
76
|
osi_dump/importer/project/openstack_project_importer.py,sha256=K8Si2uaC88L2CxXi68A4ML9mlWKwnZp1ABDiufFUZ8g,2988
|
77
77
|
osi_dump/importer/project/project_importer.py,sha256=jwEvxteFbSwyWMV8hKAtf5Lo2bZysWkQ1L_NVUE8XOQ,191
|
@@ -82,21 +82,21 @@ osi_dump/importer/router/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZ
|
|
82
82
|
osi_dump/importer/router/openstack_router_importer.py,sha256=T_Wr45nJrCcp2OOdRawmdQkNBDzczA-3DPx9dlewd4g,2781
|
83
83
|
osi_dump/importer/router/router_importer.py,sha256=L2i0Fnh3iZEsP_PFtx1j0yWTpkmgHsc6Pobii8lDRCo,186
|
84
84
|
osi_dump/importer/volume/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
85
|
-
osi_dump/importer/volume/openstack_volume_importer.py,sha256=
|
85
|
+
osi_dump/importer/volume/openstack_volume_importer.py,sha256=XmTa0FP8VUmnOofVEkaHQEAQUNfa7ODO4kV9SfKPui4,2491
|
86
86
|
osi_dump/importer/volume/volume_importer.py,sha256=tmDTE9L9vtl75GR79blSxa_MVsRU6LDCbR0yJk0xKwo,186
|
87
87
|
osi_dump/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
88
88
|
osi_dump/model/authentication_info.py,sha256=02kXxtILfjh8t45_-bPM8rtyRk2cQcJK6l2d1bPih7k,257
|
89
89
|
osi_dump/model/external_port.py,sha256=4FlyG8ZmQO7nNdavmRBhK8ZMsNogmhMqEBa03okvqXM,477
|
90
|
-
osi_dump/model/flavor.py,sha256
|
90
|
+
osi_dump/model/flavor.py,sha256=bV1DAL0fMN-bZ0Is7Cd-LLuEdL1ihVPeGcLvbhOcB-I,301
|
91
91
|
osi_dump/model/floating_ip.py,sha256=CRJufC5ZaxxcbGvdot7Af-sO8uyKbyQK9zHljfBnyFA,427
|
92
|
-
osi_dump/model/hypervisor.py,sha256=
|
92
|
+
osi_dump/model/hypervisor.py,sha256=NNvOl-msUhPSEJ3kpV4h7XNsdBybaHOqvJEMy17FNWg,468
|
93
93
|
osi_dump/model/image.py,sha256=JUr90XQgA6d3EyoZyV-Cyz4Y1GkEBIDhALsf-_eoR-Y,524
|
94
|
-
osi_dump/model/instance.py,sha256=
|
94
|
+
osi_dump/model/instance.py,sha256=ixJUGMsNAsWIRSXXHZ2fHA9Wr1wPYZONyEhS75wfQp8,577
|
95
95
|
osi_dump/model/load_balancer.py,sha256=T5RU6gm36ePYCh3KQ_OYO44FHMfxTcSNaiuKP5E_9CY,352
|
96
96
|
osi_dump/model/project.py,sha256=3fNsDcWxuRVBS96W98C_Fia82qt14InjUM7n7rBCX6E,679
|
97
97
|
osi_dump/model/role_assignment.py,sha256=fNt05y4aFF6b71Yps_EHzWavv8wF-jYx7gd3WAhqy6Y,310
|
98
|
-
osi_dump/model/router.py,sha256=
|
99
|
-
osi_dump/model/volume.py,sha256=
|
98
|
+
osi_dump/model/router.py,sha256=K8B6w97DYcFNRPmXN6CAZatm_0XSo2qIFVTvgdMfufY,417
|
99
|
+
osi_dump/model/volume.py,sha256=C1WdZ_GwlL-iaBqrFpgPMfIQZj3ST2KQHzwXceYxRZg,423
|
100
100
|
osi_dump/os_connection/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
101
101
|
osi_dump/os_connection/get_connections.py,sha256=1zeir4cEtzJOUOn53zUmlD9lWMvYXhuRr0IhI5U1DAw,1753
|
102
102
|
osi_dump/util/__init__.py,sha256=obJLcem8iWbVC3NIk4GHBMwwAsW-FcrwRdfzphuDjpY,330
|
@@ -105,11 +105,11 @@ osi_dump/util/excel_autosize_column.py,sha256=zzQ6uXkQhHAqVn9fUAgNjoCH_HiNEC9Dcj
|
|
105
105
|
osi_dump/util/excel_sort_sheet.py,sha256=o4jXtP1ZFYtAGzkAP5S8Tym4h-SEoFBAI3j24y-24UM,1047
|
106
106
|
osi_dump/util/export_data_excel.py,sha256=VYSxDBZ7dgSbTj3n_8RRPqe183tILNh6wJW-UnFvJUU,882
|
107
107
|
osi_dump/util/extract_hostname.py,sha256=IpdklGHevmtRu67xeSRE_5n2mvWGI1sDsnJwExo_AR0,111
|
108
|
-
osi_dump/util/openstack_util.py,sha256=
|
108
|
+
osi_dump/util/openstack_util.py,sha256=mPWLoVdSg4mukqtX87fN0Q9aDcRicJIqIsIOIIu1PnY,591
|
109
109
|
osi_dump/util/panda_excel.py,sha256=GHHLguKLMm1sq4FHTPHABTjx7IqpOcGF_3OJT-cJORE,1011
|
110
110
|
osi_dump/util/validate_dir_path.py,sha256=pL_OrY8JnNwk3vj6Zp6bsZtgHXhszSGRoqIt-1G5S90,507
|
111
|
-
osi_dump-0.1.3.1.dist-info/METADATA,sha256=
|
112
|
-
osi_dump-0.1.3.1.dist-info/WHEEL,sha256=
|
113
|
-
osi_dump-0.1.3.1.dist-info/entry_points.txt,sha256=ozm5sIBtXzLv6_FiUe26v1BgA3_xUReGLPhKQKZ56wQ,46
|
114
|
-
osi_dump-0.1.3.1.dist-info/top_level.txt,sha256=OtAAwmJfcoPvlw_Cemo_H1aXIGV_7w0O2941KQt6faQ,9
|
115
|
-
osi_dump-0.1.3.1.dist-info/RECORD,,
|
111
|
+
osi_dump-0.1.3.1.2.dist-info/METADATA,sha256=pLbq5ExaJuIo9Y0dQm6MKjvedPTSFz43N5bOoKrIZD0,677
|
112
|
+
osi_dump-0.1.3.1.2.dist-info/WHEEL,sha256=cVxcB9AmuTcXqmwrtPhNK88dr7IR_b6qagTj0UvIEbY,91
|
113
|
+
osi_dump-0.1.3.1.2.dist-info/entry_points.txt,sha256=ozm5sIBtXzLv6_FiUe26v1BgA3_xUReGLPhKQKZ56wQ,46
|
114
|
+
osi_dump-0.1.3.1.2.dist-info/top_level.txt,sha256=OtAAwmJfcoPvlw_Cemo_H1aXIGV_7w0O2941KQt6faQ,9
|
115
|
+
osi_dump-0.1.3.1.2.dist-info/RECORD,,
|
File without changes
|
File without changes
|