osi-dump 0.1.3.3.3.4__py3-none-any.whl → 0.1.3.3.3.6__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.
@@ -71,6 +71,8 @@ class OpenStackLoadBalancerImporter(LoadBalancerImporter):
71
71
  flavor = self.connection.get_flavor_by_id(amphorae["compute_flavor"])
72
72
  amphorae["ram"] = flavor.ram
73
73
  amphorae["vcpus"] = flavor.vcpus
74
+ amphorae["flavor_name"] = flavor.name
75
+ amphorae["flavor_description"] = flavor.description
74
76
 
75
77
  load_balancer_ret = LoadBalancer(
76
78
  id=load_balancer["id"],
@@ -4,10 +4,11 @@ import concurrent
4
4
 
5
5
  from openstack.connection import Connection
6
6
  from openstack.identity.v3.project import Project as OSProject
7
+ from openstack.load_balancer.v2.load_balancer import LoadBalancer as OSLoadBalancer
7
8
 
8
9
  from osi_dump.importer.project.project_importer import ProjectImporter
9
10
  from osi_dump.model.project import Project
10
-
11
+ import osi_dump.api.octavia as octavia_api
11
12
  logger = logging.getLogger(__name__)
12
13
 
13
14
 
@@ -26,6 +27,22 @@ class OpenStackProjectImporter(ProjectImporter):
26
27
  """
27
28
 
28
29
  logger.info(f"Importing projects for {self.connection.auth['auth_url']}")
30
+ try:
31
+ osload_balancers: list[OSLoadBalancer] = octavia_api.get_load_balancers(
32
+ connection=self.connection
33
+ )
34
+ except Exception as e:
35
+ raise Exception(
36
+ f"Can not fetch load_balancers for {self.connection.auth['auth_url']} {e}"
37
+ ) from e
38
+
39
+ project_lb_dict = {}
40
+
41
+ for osload_balancer in osload_balancers:
42
+ if project_lb_dict.get(osload_balancer["project_id"]):
43
+ project_lb_dict[osload_balancer["project_id"]] += 1
44
+ else:
45
+ project_lb_dict[osload_balancer["project_id"]] = 1
29
46
 
30
47
  try:
31
48
  osprojects: list[OSProject] = list(self.connection.identity.projects())
@@ -38,7 +55,7 @@ class OpenStackProjectImporter(ProjectImporter):
38
55
 
39
56
  with concurrent.futures.ThreadPoolExecutor() as executor:
40
57
  futures = [
41
- executor.submit(self._get_project_info, project)
58
+ executor.submit(self._get_project_info, project, project_lb_dict)
42
59
  for project in osprojects
43
60
  ]
44
61
  for future in concurrent.futures.as_completed(futures):
@@ -48,7 +65,7 @@ class OpenStackProjectImporter(ProjectImporter):
48
65
 
49
66
  return projects
50
67
 
51
- def _get_project_info(self, project: OSProject) -> Project:
68
+ def _get_project_info(self, project: OSProject, project_lb_dict: dict) -> Project:
52
69
 
53
70
  usage_instance=None
54
71
  quota_instance=None
@@ -81,12 +98,12 @@ class OpenStackProjectImporter(ProjectImporter):
81
98
  storage_quotas = self.connection.block_storage.get_quota_set(
82
99
  project.id, usage=True
83
100
  )
84
- usage_volume=storage_quotas.usage["volumes"],
85
- quota_volume=storage_quotas.volumes,
86
- usage_snapshot=storage_quotas.usage["snapshots"],
87
- quota_snapshot=storage_quotas.snapshots,
88
- usage_storage=storage_quotas.usage["gigabytes"],
89
- quota_storage=storage_quotas.gigabytes,
101
+ usage_volume=storage_quotas.usage["volumes"]
102
+ quota_volume=storage_quotas.volumes
103
+ usage_snapshot=storage_quotas.usage["snapshots"]
104
+ quota_snapshot=storage_quotas.snapshots
105
+ usage_storage=storage_quotas.usage["gigabytes"]
106
+ quota_storage=storage_quotas.gigabytes
90
107
  except Exception as e:
91
108
  logger.warning(f"Get storage quotas failed for {project.id} error: {e}")
92
109
 
@@ -97,6 +114,8 @@ class OpenStackProjectImporter(ProjectImporter):
97
114
  except Exception as e:
98
115
  logger.warning(f"Get domain failed for {project.domain_id} error: {e}")
99
116
 
117
+ lb_count = project_lb_dict.get(project.id)
118
+
100
119
  project_ret = Project(
101
120
  project_id=project.id,
102
121
  project_name=project.name,
@@ -115,7 +134,8 @@ class OpenStackProjectImporter(ProjectImporter):
115
134
  usage_snapshot=usage_snapshot,
116
135
  quota_snapshot=quota_snapshot,
117
136
  usage_storage=usage_storage,
118
- quota_storage=quota_storage
137
+ quota_storage=quota_storage,
138
+ load_balancer_count=lb_count
119
139
  )
120
140
 
121
141
  return project_ret
@@ -14,7 +14,7 @@ class LoadBalancer(BaseModel):
14
14
 
15
15
  operating_status: Optional[str]
16
16
 
17
- amphoraes: list[dict]
17
+ amphoraes: list[dict] # compute_id, compute_flavor_id, flavor_name, flavor_description
18
18
  vip: Optional[str]
19
19
 
20
20
  project_id: Optional[str]
osi_dump/model/project.py CHANGED
@@ -30,3 +30,5 @@ class Project(BaseModel):
30
30
 
31
31
  usage_storage: Optional[int]
32
32
  quota_storage: Optional[int]
33
+
34
+ load_balancer_count: Optional[int]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: osi-dump
3
- Version: 0.1.3.3.3.4
3
+ Version: 0.1.3.3.3.6
4
4
  Summary: OpenStack information dump tool
5
5
  Author: TVKain
6
6
  License: Apache-2.0
@@ -8,7 +8,7 @@ Classifier: License :: OSI Approved :: Apache Software License
8
8
  Requires-Python: >=3.10
9
9
  Description-Content-Type: text/markdown
10
10
  Requires-Dist: typer
11
- Requires-Dist: openstacksdk
11
+ Requires-Dist: openstacksdk==3.3.0
12
12
  Requires-Dist: pydantic
13
13
  Requires-Dist: pandas
14
14
  Requires-Dist: openpyxl
@@ -72,9 +72,9 @@ osi_dump/importer/instance/instance_importer.py,sha256=TaaPgEFVVMRT3mSXrzQkSaSIB
72
72
  osi_dump/importer/instance/openstack_instance_importer.py,sha256=HvA1hYLAneY0KtDTk7nz6TWXNGO5s6EOp7Hrm7-FxHI,4249
73
73
  osi_dump/importer/load_balancer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
74
74
  osi_dump/importer/load_balancer/load_balancer_importer.py,sha256=fzInBlkscqlbhCATeQYXvufc-WHq2pbofTJJifN0zaY,218
75
- osi_dump/importer/load_balancer/openstack_load_balancer_importer.py,sha256=tTcZAWEMstRvDAWrmFlRYI1mIc27egaEAeNLsh-htRM,3205
75
+ osi_dump/importer/load_balancer/openstack_load_balancer_importer.py,sha256=1BUIoE5K3KHKaoGDa5Spnx8K2exxV_0grYzZ9esk41w,3328
76
76
  osi_dump/importer/project/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
77
- osi_dump/importer/project/openstack_project_importer.py,sha256=0Idzf-bgQEdgSlM85iNwSRZdknibeWXScRJKBdoIuqg,4080
77
+ osi_dump/importer/project/openstack_project_importer.py,sha256=nQRInUb0vtm57dQNLxSoUFnGrNbAytK2Zl0FaUMPqBc,4964
78
78
  osi_dump/importer/project/project_importer.py,sha256=jwEvxteFbSwyWMV8hKAtf5Lo2bZysWkQ1L_NVUE8XOQ,191
79
79
  osi_dump/importer/role_assignment/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
80
80
  osi_dump/importer/role_assignment/openstack_role_assignment_importer.py,sha256=p7Ocn27Esh-QipqNyQCviO6xt4TTWuIbqiNQ8oAPVpY,3557
@@ -93,8 +93,8 @@ osi_dump/model/floating_ip.py,sha256=CRJufC5ZaxxcbGvdot7Af-sO8uyKbyQK9zHljfBnyFA
93
93
  osi_dump/model/hypervisor.py,sha256=6dWEMVrrjOQolX936FqY994S7RAXpMPATpsLPVNeCyk,455
94
94
  osi_dump/model/image.py,sha256=JUr90XQgA6d3EyoZyV-Cyz4Y1GkEBIDhALsf-_eoR-Y,524
95
95
  osi_dump/model/instance.py,sha256=8puhIKWWfoAaTURXb7XUpjG0lQ4nb0UwrsrTQdDaFbs,639
96
- osi_dump/model/load_balancer.py,sha256=cInZ_JH8kzZpnJsxejI-nze4nACtK3Yk20pfyl28lLo,436
97
- osi_dump/model/project.py,sha256=_mMaKKM9RQYiorh6zWMrC_WJ3x9RxhZxn4lLa_B3niY,710
96
+ osi_dump/model/load_balancer.py,sha256=3FT8FCPW3gHWbupfqAzHE0lN7Wp3YCvTAmgmRoVWIKc,501
97
+ osi_dump/model/project.py,sha256=S5BtjeMoxZfiJ7z7G_5jYfp5mMTzlPi7DWT5fuBGCTw,749
98
98
  osi_dump/model/role_assignment.py,sha256=fNt05y4aFF6b71Yps_EHzWavv8wF-jYx7gd3WAhqy6Y,310
99
99
  osi_dump/model/router.py,sha256=K8B6w97DYcFNRPmXN6CAZatm_0XSo2qIFVTvgdMfufY,417
100
100
  osi_dump/model/volume.py,sha256=C1WdZ_GwlL-iaBqrFpgPMfIQZj3ST2KQHzwXceYxRZg,423
@@ -109,8 +109,8 @@ osi_dump/util/extract_hostname.py,sha256=IpdklGHevmtRu67xeSRE_5n2mvWGI1sDsnJwExo
109
109
  osi_dump/util/openstack_util.py,sha256=_o8LiRmQKtxQ8hU3rbrMNwIAxt0-aWD2rjq-NvVdK9E,1299
110
110
  osi_dump/util/panda_excel.py,sha256=owr8AffIxqN3yY8kIv55Ox4j2dRz7kXZvSZFZeft8dw,734
111
111
  osi_dump/util/validate_dir_path.py,sha256=pL_OrY8JnNwk3vj6Zp6bsZtgHXhszSGRoqIt-1G5S90,507
112
- osi_dump-0.1.3.3.3.4.dist-info/METADATA,sha256=aDqD7WalTunfBVE43PF9AUMtJg2Qxhhgp_snbor7VQs,678
113
- osi_dump-0.1.3.3.3.4.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
114
- osi_dump-0.1.3.3.3.4.dist-info/entry_points.txt,sha256=ozm5sIBtXzLv6_FiUe26v1BgA3_xUReGLPhKQKZ56wQ,46
115
- osi_dump-0.1.3.3.3.4.dist-info/top_level.txt,sha256=OtAAwmJfcoPvlw_Cemo_H1aXIGV_7w0O2941KQt6faQ,9
116
- osi_dump-0.1.3.3.3.4.dist-info/RECORD,,
112
+ osi_dump-0.1.3.3.3.6.dist-info/METADATA,sha256=DtKEqD2WRDbHuLQPjkuQA92GVwafa7zWaWuBz3Ea-uQ,685
113
+ osi_dump-0.1.3.3.3.6.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
114
+ osi_dump-0.1.3.3.3.6.dist-info/entry_points.txt,sha256=ozm5sIBtXzLv6_FiUe26v1BgA3_xUReGLPhKQKZ56wQ,46
115
+ osi_dump-0.1.3.3.3.6.dist-info/top_level.txt,sha256=OtAAwmJfcoPvlw_Cemo_H1aXIGV_7w0O2941KQt6faQ,9
116
+ osi_dump-0.1.3.3.3.6.dist-info/RECORD,,