osi-dump 0.1.3.2.1__tar.gz → 0.1.3.2.3__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 (124) hide show
  1. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/PKG-INFO +1 -1
  2. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/pyproject.toml +1 -1
  3. osi_dump-0.1.3.2.3/src/osi_dump/api/neutron.py +65 -0
  4. osi_dump-0.1.3.2.3/src/osi_dump/api/octavia.py +67 -0
  5. osi_dump-0.1.3.2.3/src/osi_dump/api/placement.py +41 -0
  6. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/load_balancer/excel_load_balancer_exporter.py +3 -2
  7. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/load_balancer/openstack_load_balancer_importer.py +2 -0
  8. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/model/load_balancer.py +3 -0
  9. osi_dump-0.1.3.2.3/src/osi_dump/util/openstack_util.py +48 -0
  10. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump.egg-info/PKG-INFO +1 -1
  11. osi_dump-0.1.3.2.1/src/osi_dump/api/neutron.py +0 -44
  12. osi_dump-0.1.3.2.1/src/osi_dump/api/octavia.py +0 -39
  13. osi_dump-0.1.3.2.1/src/osi_dump/api/placement.py +0 -19
  14. osi_dump-0.1.3.2.1/src/osi_dump/util/openstack_util.py +0 -22
  15. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/README.md +0 -0
  16. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/setup.cfg +0 -0
  17. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/__init__.py +0 -0
  18. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/__main__.py +0 -0
  19. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/api/__init__.py +0 -0
  20. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/batch_handler/__init__.py +0 -0
  21. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/batch_handler/external_port_batch_handler.py +0 -0
  22. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/batch_handler/flavor_batch_handler.py +0 -0
  23. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/batch_handler/floating_ip_batch_handler.py +0 -0
  24. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/batch_handler/hypervisor_batch_handler.py +0 -0
  25. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/batch_handler/image_batch_handler.py +0 -0
  26. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/batch_handler/instance_batch_handler.py +0 -0
  27. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/batch_handler/load_balancer_batch_handler.py +0 -0
  28. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/batch_handler/project_batch_handler.py +0 -0
  29. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/batch_handler/role_assignment_batch_handler.py +0 -0
  30. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/batch_handler/router_batch_handler.py +0 -0
  31. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/batch_handler/volume_batch_handler.py +0 -0
  32. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/cli.py +0 -0
  33. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/__init__.py +0 -0
  34. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/external_port/__init__.py +0 -0
  35. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/external_port/excel_external_port_exporter.py +0 -0
  36. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/external_port/external_port_exporter.py +0 -0
  37. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/flavor/__init__.py +0 -0
  38. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/flavor/excel_flavor_exporter.py +0 -0
  39. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/flavor/flavor_exporter.py +0 -0
  40. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/floating_ip/__init__.py +0 -0
  41. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/floating_ip/excel_floating_ip_exporter.py +0 -0
  42. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/floating_ip/floating_ip_exporter.py +0 -0
  43. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/hypervisor/__init__.py +0 -0
  44. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/hypervisor/excel_hypervisor_exporter.py +0 -0
  45. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/hypervisor/hypervisor_exporter.py +0 -0
  46. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/image/__init__.py +0 -0
  47. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/image/excel_image_exporter.py +0 -0
  48. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/image/image_exporter.py +0 -0
  49. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/instance/__init__.py +0 -0
  50. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/instance/excel_instance_exporter.py +0 -0
  51. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/instance/instance_exporter.py +0 -0
  52. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/load_balancer/__init__.py +0 -0
  53. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/load_balancer/load_balancer_exporter.py +0 -0
  54. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/project/__init__.py +0 -0
  55. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/project/excel_project_exporter.py +0 -0
  56. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/project/project_exporter.py +0 -0
  57. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/role_assignment/__init__.py +0 -0
  58. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/role_assignment/excel_role_assignment_exporter.py +0 -0
  59. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/role_assignment/role_assignment_exporter.py +0 -0
  60. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/router/__init__.py +0 -0
  61. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/router/excel_router_exporter.py +0 -0
  62. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/router/router_exporter.py +0 -0
  63. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/volume/__init__.py +0 -0
  64. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/volume/excel_volume_exporter.py +0 -0
  65. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/volume/volume_exporter.py +0 -0
  66. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/external_port/__init__.py +0 -0
  67. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/external_port/external_port_importer.py +0 -0
  68. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/external_port/openstack_external_port_importer.py +0 -0
  69. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/flavor/__init__.py +0 -0
  70. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/flavor/flavor_importer.py +0 -0
  71. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/flavor/openstack_flavor_importer.py +0 -0
  72. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/floating_ip/__init__.py +0 -0
  73. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/floating_ip/floating_ip_importer.py +0 -0
  74. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/floating_ip/openstack_floating_ip_importer.py +0 -0
  75. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/hypervisor/__init__.py +0 -0
  76. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/hypervisor/hypervisor_importer.py +0 -0
  77. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/hypervisor/openstack_hypervisor_importer.py +0 -0
  78. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/image/__init__.py +0 -0
  79. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/image/image_importer.py +0 -0
  80. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/image/openstack_image_importer.py +0 -0
  81. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/instance/__init__.py +0 -0
  82. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/instance/instance_importer.py +0 -0
  83. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/instance/openstack_instance_importer.py +0 -0
  84. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/load_balancer/__init__.py +0 -0
  85. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/load_balancer/load_balancer_importer.py +0 -0
  86. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/project/__init__.py +0 -0
  87. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/project/openstack_project_importer.py +0 -0
  88. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/project/project_importer.py +0 -0
  89. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/role_assignment/__init__.py +0 -0
  90. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/role_assignment/openstack_role_assignment_importer.py +0 -0
  91. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/role_assignment/role_assignment_importer.py +0 -0
  92. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/router/__init__.py +0 -0
  93. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/router/openstack_router_importer.py +0 -0
  94. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/router/router_importer.py +0 -0
  95. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/volume/__init__.py +0 -0
  96. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/volume/openstack_volume_importer.py +0 -0
  97. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/volume/volume_importer.py +0 -0
  98. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/model/__init__.py +0 -0
  99. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/model/authentication_info.py +0 -0
  100. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/model/external_port.py +0 -0
  101. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/model/flavor.py +0 -0
  102. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/model/floating_ip.py +0 -0
  103. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/model/hypervisor.py +0 -0
  104. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/model/image.py +0 -0
  105. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/model/instance.py +0 -0
  106. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/model/project.py +0 -0
  107. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/model/role_assignment.py +0 -0
  108. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/model/router.py +0 -0
  109. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/model/volume.py +0 -0
  110. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/os_connection/__init__.py +0 -0
  111. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/os_connection/get_connections.py +0 -0
  112. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/util/__init__.py +0 -0
  113. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/util/create_file.py +0 -0
  114. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/util/excel_autosize_column.py +0 -0
  115. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/util/excel_sort_sheet.py +0 -0
  116. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/util/export_data_excel.py +0 -0
  117. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/util/extract_hostname.py +0 -0
  118. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/util/panda_excel.py +0 -0
  119. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/util/validate_dir_path.py +0 -0
  120. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump.egg-info/SOURCES.txt +0 -0
  121. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump.egg-info/dependency_links.txt +0 -0
  122. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump.egg-info/entry_points.txt +0 -0
  123. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump.egg-info/requires.txt +0 -0
  124. {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: osi-dump
3
- Version: 0.1.3.2.1
3
+ Version: 0.1.3.2.3
4
4
  Summary: OpenStack information dump tool
5
5
  Author: TVKain
6
6
  License: Apache-2.0
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "osi-dump"
3
- version = "0.1.3.2.1"
3
+ version = "0.1.3.2.3"
4
4
  description = "OpenStack information dump tool"
5
5
  readme = "README.md"
6
6
  authors = [{ name = "TVKain" }]
@@ -0,0 +1,65 @@
1
+ import logging
2
+
3
+ from openstack.connection import Connection
4
+ from openstack.identity.v3.service import Service
5
+ from openstack.load_balancer.v2.load_balancer import LoadBalancer
6
+
7
+ import osi_dump.util.openstack_util as os_util
8
+
9
+ logger = logging.getLogger(__name__)
10
+
11
+
12
+ def get_floating_ip_project(connection: Connection, floating_ip_id: str):
13
+ # neutron_endpoint = os_util.get_endpoint(
14
+ # connection=connection, service_type="network", interface="public"
15
+ # )
16
+
17
+ neutron_endpoints = os_util.get_endpoints(
18
+ connection=connection, service_type="network", interface="public"
19
+ )
20
+
21
+ response = None
22
+
23
+ for endpoint in neutron_endpoints:
24
+ try:
25
+ url = f"{endpoint}/v2.0/floatingips/{floating_ip_id}?fields=project_id"
26
+ response = connection.session.get(url)
27
+ if response.status_code == 200:
28
+ break
29
+ except Exception as e:
30
+ print(e)
31
+
32
+ if response is None:
33
+ return None
34
+
35
+ return response.json()["floatingip"]["project_id"]
36
+
37
+
38
+ def get_router_project(connection: Connection, router_id: str):
39
+ # neutron_endpoint = os_util.get_endpoint(
40
+ # connection=connection, service_type="network", interface="internal"
41
+ # )
42
+
43
+ neutron_endpoints = os_util.get_endpoints(
44
+ connection=connection, service_type="network", interface="public"
45
+ )
46
+
47
+ response = None
48
+
49
+ for endpoint in neutron_endpoints:
50
+ try:
51
+ url = f"{endpoint}/v2.0/routers/{router_id}?fields=project_id"
52
+
53
+ response = connection.session.get(url)
54
+
55
+ if response.status_code == 200:
56
+ break
57
+ except Exception as e:
58
+ print(e)
59
+
60
+ if response is None:
61
+ return None
62
+
63
+ data = response.json()
64
+
65
+ return data["router"]["project_id"]
@@ -0,0 +1,67 @@
1
+ from openstack.connection import Connection
2
+ from openstack.identity.v3.service import Service
3
+ from openstack.load_balancer.v2.load_balancer import LoadBalancer
4
+
5
+
6
+ import osi_dump.util.openstack_util as os_util
7
+
8
+
9
+ def get_load_balancers(connection: Connection) -> list[LoadBalancer]:
10
+ # octavia_endpoint = os_util.get_endpoint(
11
+ # connection=connection, service_type="load-balancer", interface="public"
12
+ # )
13
+
14
+ octavia_endpoints = os_util.get_endpoints(
15
+ connection=connection, service_type="load-balancer", interface="public"
16
+ )
17
+
18
+ response = None
19
+
20
+ for endpoint in octavia_endpoints:
21
+ try:
22
+ url = f"{endpoint}/v2.0/lbaas/loadbalancers"
23
+ response = connection.session.get(url)
24
+ if response.status_code == 200:
25
+ break
26
+ except Exception as e:
27
+ print(e)
28
+
29
+ if response is None:
30
+ return None
31
+
32
+ data = response.json()
33
+
34
+ return data["loadbalancers"]
35
+
36
+
37
+ def get_amphoraes(connection: Connection, load_balancer_id: str) -> list[dict]:
38
+
39
+ # octavia_endpoint = os_util.get_endpoint(
40
+ # connection=connection, service_type="load-balancer", interface="public"
41
+ # )
42
+
43
+ octavia_endpoints = os_util.get_endpoints(
44
+ connection=connection, service_type="load-balancer", interface="public"
45
+ )
46
+
47
+ response = None
48
+
49
+ for endpoint in octavia_endpoints:
50
+ try:
51
+ url = f"{endpoint}/v2/octavia/amphorae?load_balancer_id={load_balancer_id}&fields=status&fields=compute_id&fields=compute_flavor"
52
+ response = connection.session.get(url)
53
+ if response.status_code == 200:
54
+ break
55
+ except Exception as e:
56
+ print(e)
57
+
58
+ if response is None:
59
+ return None
60
+
61
+ data = response.json()
62
+
63
+ amphoraes = data["amphorae"]
64
+
65
+ amphoraes = [dict(sorted(amphorae.items())) for amphorae in amphoraes]
66
+
67
+ return amphoraes
@@ -0,0 +1,41 @@
1
+ from openstack.connection import Connection
2
+ from openstack.identity.v3.service import Service
3
+
4
+ import osi_dump.util.openstack_util as os_util
5
+
6
+
7
+ def get_usage(connection: Connection, resource_provider_id: str):
8
+
9
+ # placement_endpoint = os_util.get_endpoint(
10
+ # connection=connection, service_type="placement", interface="public"
11
+ # )
12
+
13
+ # url = f"{placement_endpoint}/resource_providers/{resource_provider_id}/usages"
14
+
15
+ # response = connection.session.get(url)
16
+
17
+ # data = response.json()
18
+
19
+ # return data["usages"]
20
+
21
+ placement_endpoints = os_util.get_endpoints(
22
+ connection=connection, service_type="placement", interface="public"
23
+ )
24
+
25
+ response = None
26
+
27
+ for endpoint in placement_endpoints:
28
+ try:
29
+ url = f"{endpoint}/resource_providers/{resource_provider_id}/usages"
30
+ response = connection.session.get(url)
31
+ if response.status_code == 200:
32
+ break
33
+ except Exception as e:
34
+ print(e)
35
+
36
+ if response is None:
37
+ return None
38
+
39
+ data = response.json()
40
+
41
+ return data["usages"]
@@ -23,8 +23,9 @@ class ExcelLoadBalancerExporter(LoadBalancerExporter):
23
23
  df = pd.json_normalize(
24
24
  [load_balancer.model_dump() for load_balancer in load_balancers]
25
25
  )
26
-
27
- df = util.expand_list_column(df, "amphoraes")
26
+
27
+ if "amphoraes" in df.columns:
28
+ df = util.expand_list_column(df, "amphoraes")
28
29
 
29
30
  logger.info(f"Exporting load_balancers for {self.sheet_name}")
30
31
  try:
@@ -72,6 +72,8 @@ class OpenStackLoadBalancerImporter(LoadBalancerImporter):
72
72
  operating_status=load_balancer["operating_status"],
73
73
  project_id=load_balancer["project_id"],
74
74
  provisioning_status=load_balancer["provisioning_status"],
75
+ created_at=load_balancer["created_at"],
76
+ updated_at=load_balancer["updated_at"],
75
77
  amphoraes=amphoraes,
76
78
  )
77
79
 
@@ -17,3 +17,6 @@ class LoadBalancer(BaseModel):
17
17
  amphoraes: list[dict]
18
18
 
19
19
  project_id: Optional[str]
20
+
21
+ created_at: Optional[str]
22
+ updated_at: Optional[str]
@@ -0,0 +1,48 @@
1
+ import urllib
2
+ import urllib.parse
3
+
4
+ from openstack.connection import Connection
5
+
6
+
7
+ def get_endpoint(connection: Connection, service_type: str, interface: str) -> str:
8
+ endpoint = connection.endpoint_for(service_type=service_type, interface=interface)
9
+
10
+ parsed_endpoint = urllib.parse.urlparse(endpoint)
11
+
12
+ new_hostname = urllib.parse.urlparse(connection.auth["auth_url"]).hostname
13
+
14
+ port = parsed_endpoint.port
15
+
16
+ ret = urllib.parse.urlunparse(
17
+ parsed_endpoint._replace(netloc=f"{new_hostname}:{port}")._replace(
18
+ scheme="https"
19
+ )
20
+ )
21
+
22
+ return ret
23
+
24
+
25
+ def get_endpoints(
26
+ connection: Connection, service_type: str, interface: str
27
+ ) -> list[str]:
28
+ endpoint = connection.endpoint_for(service_type=service_type, interface=interface)
29
+
30
+ parsed_endpoint = urllib.parse.urlparse(endpoint)
31
+
32
+ new_hostname = urllib.parse.urlparse(connection.auth["auth_url"]).hostname
33
+
34
+ port = parsed_endpoint.port
35
+
36
+ http_ret = urllib.parse.urlunparse(
37
+ parsed_endpoint._replace(netloc=f"{new_hostname}:{port}")._replace(
38
+ scheme="http"
39
+ )
40
+ )
41
+
42
+ https_ret = urllib.parse.urlunparse(
43
+ parsed_endpoint._replace(netloc=f"{new_hostname}:{port}")._replace(
44
+ scheme="https"
45
+ )
46
+ )
47
+
48
+ return [http_ret, https_ret]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: osi-dump
3
- Version: 0.1.3.2.1
3
+ Version: 0.1.3.2.3
4
4
  Summary: OpenStack information dump tool
5
5
  Author: TVKain
6
6
  License: Apache-2.0
@@ -1,44 +0,0 @@
1
- import logging
2
-
3
- from openstack.connection import Connection
4
- from openstack.identity.v3.service import Service
5
- from openstack.load_balancer.v2.load_balancer import LoadBalancer
6
-
7
- import osi_dump.util.openstack_util as os_util
8
-
9
- logger = logging.getLogger(__name__)
10
-
11
-
12
- def get_floating_ip_project(connection: Connection, floating_ip_id: str):
13
- neutron_endpoint = os_util.get_endpoint(
14
- connection=connection, service_type="network", interface="public"
15
- )
16
-
17
- try:
18
- url = f"{neutron_endpoint}/v2.0/floatingips/{floating_ip_id}?fields=project_id"
19
- response = connection.session.get(url)
20
-
21
- except Exception as e:
22
- print(e)
23
-
24
- data = response.json()
25
-
26
- return data["floatingip"]["project_id"]
27
-
28
-
29
- def get_router_project(connection: Connection, router_id: str):
30
- neutron_endpoint = os_util.get_endpoint(
31
- connection=connection, service_type="network", interface="internal"
32
- )
33
-
34
- try:
35
- url = f"{neutron_endpoint}/v2.0/routers/{router_id}?fields=project_id"
36
-
37
- response = connection.session.get(url)
38
-
39
- except Exception as e:
40
- print(e)
41
-
42
- data = response.json()
43
-
44
- return data["router"]["project_id"]
@@ -1,39 +0,0 @@
1
- from openstack.connection import Connection
2
- from openstack.identity.v3.service import Service
3
- from openstack.load_balancer.v2.load_balancer import LoadBalancer
4
-
5
-
6
- import osi_dump.util.openstack_util as os_util
7
-
8
-
9
- def get_load_balancers(connection: Connection) -> list[LoadBalancer]:
10
- octavia_endpoint = os_util.get_endpoint(
11
- connection=connection, service_type="load-balancer", interface="public"
12
- )
13
-
14
- url = f"{octavia_endpoint}/v2.0/lbaas/loadbalancers"
15
-
16
- response = connection.session.get(url)
17
-
18
- data = response.json()
19
-
20
- return data["loadbalancers"]
21
-
22
-
23
- def get_amphoraes(connection: Connection, load_balancer_id: str) -> list[dict]:
24
-
25
- octavia_endpoint = os_util.get_endpoint(
26
- connection=connection, service_type="load-balancer", interface="public"
27
- )
28
-
29
- url = f"{octavia_endpoint}/v2/octavia/amphorae?load_balancer_id={load_balancer_id}&fields=status&fields=compute_id&fields=compute_flavor"
30
-
31
- response = connection.session.get(url)
32
-
33
- data = response.json()
34
-
35
- amphoraes = data["amphorae"]
36
-
37
- amphoraes = [dict(sorted(amphorae.items())) for amphorae in amphoraes]
38
-
39
- return amphoraes
@@ -1,19 +0,0 @@
1
- from openstack.connection import Connection
2
- from openstack.identity.v3.service import Service
3
-
4
- import osi_dump.util.openstack_util as os_util
5
-
6
-
7
- def get_usage(connection: Connection, resource_provider_id: str):
8
-
9
- placement_endpoint = os_util.get_endpoint(
10
- connection=connection, service_type="placement", interface="public"
11
- )
12
-
13
- url = f"{placement_endpoint}/resource_providers/{resource_provider_id}/usages"
14
-
15
- response = connection.session.get(url)
16
-
17
- data = response.json()
18
-
19
- return data["usages"]
@@ -1,22 +0,0 @@
1
- import urllib
2
- import urllib.parse
3
-
4
- from openstack.connection import Connection
5
-
6
-
7
- def get_endpoint(connection: Connection, service_type: str, interface: str) -> str:
8
- endpoint = connection.endpoint_for(service_type=service_type, interface=interface)
9
-
10
- parsed_endpoint = urllib.parse.urlparse(endpoint)
11
-
12
- new_hostname = urllib.parse.urlparse(connection.auth["auth_url"]).hostname
13
-
14
- port = parsed_endpoint.port
15
-
16
- ret = urllib.parse.urlunparse(
17
- parsed_endpoint._replace(netloc=f"{new_hostname}:{port}")._replace(
18
- scheme="https"
19
- )
20
- )
21
-
22
- return ret
File without changes
File without changes