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 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(self, hypervisor: OSHypervisor) -> Hypervisor:
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
@@ -123,6 +123,7 @@ class OpenStackInstanceImporter(InstanceImporter):
123
123
  vcpus=server.flavor["vcpus"],
124
124
  created_at=server.created_at,
125
125
  updated_at=server.updated_at,
126
+ user_id=server.user_id,
126
127
  vgpus=vgpus,
127
128
  vgpu_type=vgpu_type,
128
129
  )
@@ -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"],
@@ -67,6 +67,7 @@ class OpenStackVolumeImporter(VolumeImporter):
67
67
 
68
68
  ret_volume = Volume(
69
69
  volume_id=volume.id,
70
+ volume_name=volume.name,
70
71
  project_id=volume.project_id,
71
72
  status=volume.status,
72
73
  attachments=[att["server_id"] for att in volume.attachments],
osi_dump/model/flavor.py CHANGED
@@ -1,6 +1,6 @@
1
1
  from typing import Optional
2
2
 
3
- from pydantic import BaseModel, ConfigDict, ValidationError
3
+ from pydantic import BaseModel, ConfigDict
4
4
 
5
5
 
6
6
  class Flavor(BaseModel):
@@ -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
@@ -19,5 +19,8 @@ class Instance(BaseModel):
19
19
  vgpus: Optional[int]
20
20
  vgpu_type: Optional[str]
21
21
  hypervisor: Optional[str]
22
+
23
+ user_id: Optional[str]
24
+
22
25
  created_at: str
23
26
  updated_at: str
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
@@ -10,6 +10,8 @@ class Volume(BaseModel):
10
10
 
11
11
  project_id: Optional[str]
12
12
 
13
+ volume_name: Optional[str]
14
+
13
15
  attachments: Optional[list[str]]
14
16
 
15
17
  status: str
@@ -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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: osi-dump
3
- Version: 0.1.3.1
3
+ Version: 0.1.3.1.2
4
4
  Summary: OpenStack information dump tool
5
5
  Author: TVKain
6
6
  License: Apache-2.0
@@ -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=sOFoH89knyuI_gkIxvHfjuZ9mCFzc4zBw8GHN_kb794,1039
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=82lSo5cMdvMQ9snU_eIVNOsHp5cT5v8Sf9xSEGZfBzg,2870
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=o5ld1weNM8X4ibZMQYhfhckTkea5TqVEsG4Zs0q2T90,4049
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=sX5ZMHT-QPIuAD4YBwitxj8l5fMvbOsA-BOQxLL84lU,2392
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=Tte9fX91oxEoRcUZPJd7g6oH6izcWy8WwFCapg_ZY1M,2454
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=-G8FaH_qiVrgtRxAWhdpC1c9FRdXLRroG-WJ03-DRZ4,318
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=pToa-rg7LldKd-h3aNZDJQPy5dhYDIXehq-tr8_xv1I,336
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=z38nK0s5bmZXRMItJVsnZ1rQX6NO6skXR49ZojgSb2Q,548
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=bT533cP50XrzPzwbkXwjdnmm5j5nM8jVEIqmfJ2T8G8,416
99
- osi_dump/model/volume.py,sha256=CPlZ2NUKLZ2QI-WYNcxFrpd2kYEHPITpCztdGRGBHgM,391
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=QduDfMiBh-ZdHmFkSK9XI0kZWVL-8rR1D6iAvI7CO0I,544
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=ZUpqpd-1QxXiRB6EtBSWPt-rik8t1U6Ti_O8kobHjCM,675
112
- osi_dump-0.1.3.1.dist-info/WHEEL,sha256=Mdi9PDNwEZptOjTlUcAth7XJDFtKrHYaQMPulZeBCiQ,91
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,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (73.0.1)
2
+ Generator: setuptools (74.1.2)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5