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.
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/PKG-INFO +1 -1
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/pyproject.toml +1 -1
- osi_dump-0.1.3.2.3/src/osi_dump/api/neutron.py +65 -0
- osi_dump-0.1.3.2.3/src/osi_dump/api/octavia.py +67 -0
- osi_dump-0.1.3.2.3/src/osi_dump/api/placement.py +41 -0
- {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
- {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
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/model/load_balancer.py +3 -0
- osi_dump-0.1.3.2.3/src/osi_dump/util/openstack_util.py +48 -0
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump.egg-info/PKG-INFO +1 -1
- osi_dump-0.1.3.2.1/src/osi_dump/api/neutron.py +0 -44
- osi_dump-0.1.3.2.1/src/osi_dump/api/octavia.py +0 -39
- osi_dump-0.1.3.2.1/src/osi_dump/api/placement.py +0 -19
- osi_dump-0.1.3.2.1/src/osi_dump/util/openstack_util.py +0 -22
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/README.md +0 -0
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/setup.cfg +0 -0
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/__init__.py +0 -0
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/__main__.py +0 -0
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/api/__init__.py +0 -0
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/batch_handler/__init__.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/cli.py +0 -0
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/__init__.py +0 -0
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/external_port/__init__.py +0 -0
- {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
- {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
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/flavor/__init__.py +0 -0
- {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
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/flavor/flavor_exporter.py +0 -0
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/floating_ip/__init__.py +0 -0
- {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
- {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
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/hypervisor/__init__.py +0 -0
- {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
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/hypervisor/hypervisor_exporter.py +0 -0
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/image/__init__.py +0 -0
- {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
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/image/image_exporter.py +0 -0
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/instance/__init__.py +0 -0
- {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
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/instance/instance_exporter.py +0 -0
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/load_balancer/__init__.py +0 -0
- {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
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/project/__init__.py +0 -0
- {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
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/project/project_exporter.py +0 -0
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/role_assignment/__init__.py +0 -0
- {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
- {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
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/router/__init__.py +0 -0
- {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
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/router/router_exporter.py +0 -0
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/volume/__init__.py +0 -0
- {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
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/volume/volume_exporter.py +0 -0
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/external_port/__init__.py +0 -0
- {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
- {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
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/flavor/__init__.py +0 -0
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/flavor/flavor_importer.py +0 -0
- {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
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/floating_ip/__init__.py +0 -0
- {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
- {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
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/hypervisor/__init__.py +0 -0
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/hypervisor/hypervisor_importer.py +0 -0
- {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
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/image/__init__.py +0 -0
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/image/image_importer.py +0 -0
- {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
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/instance/__init__.py +0 -0
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/instance/instance_importer.py +0 -0
- {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
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/load_balancer/__init__.py +0 -0
- {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
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/project/__init__.py +0 -0
- {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
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/project/project_importer.py +0 -0
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/role_assignment/__init__.py +0 -0
- {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
- {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
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/router/__init__.py +0 -0
- {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
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/router/router_importer.py +0 -0
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/volume/__init__.py +0 -0
- {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
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/volume/volume_importer.py +0 -0
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/model/__init__.py +0 -0
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/model/authentication_info.py +0 -0
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/model/external_port.py +0 -0
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/model/flavor.py +0 -0
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/model/floating_ip.py +0 -0
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/model/hypervisor.py +0 -0
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/model/image.py +0 -0
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/model/instance.py +0 -0
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/model/project.py +0 -0
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/model/role_assignment.py +0 -0
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/model/router.py +0 -0
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/model/volume.py +0 -0
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/os_connection/__init__.py +0 -0
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/os_connection/get_connections.py +0 -0
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/util/__init__.py +0 -0
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/util/create_file.py +0 -0
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/util/excel_autosize_column.py +0 -0
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/util/excel_sort_sheet.py +0 -0
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/util/export_data_excel.py +0 -0
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/util/extract_hostname.py +0 -0
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/util/panda_excel.py +0 -0
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/util/validate_dir_path.py +0 -0
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump.egg-info/SOURCES.txt +0 -0
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump.egg-info/dependency_links.txt +0 -0
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump.egg-info/entry_points.txt +0 -0
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump.egg-info/requires.txt +0 -0
- {osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump.egg-info/top_level.txt +0 -0
@@ -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
|
-
|
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
|
|
@@ -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,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
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/batch_handler/external_port_batch_handler.py
RENAMED
File without changes
|
{osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/batch_handler/flavor_batch_handler.py
RENAMED
File without changes
|
{osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/batch_handler/floating_ip_batch_handler.py
RENAMED
File without changes
|
{osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/batch_handler/hypervisor_batch_handler.py
RENAMED
File without changes
|
File without changes
|
{osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/batch_handler/instance_batch_handler.py
RENAMED
File without changes
|
{osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/batch_handler/load_balancer_batch_handler.py
RENAMED
File without changes
|
{osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/batch_handler/project_batch_handler.py
RENAMED
File without changes
|
File without changes
|
{osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/batch_handler/router_batch_handler.py
RENAMED
File without changes
|
{osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/batch_handler/volume_batch_handler.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/flavor/excel_flavor_exporter.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/floating_ip/floating_ip_exporter.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/hypervisor/hypervisor_exporter.py
RENAMED
File without changes
|
File without changes
|
{osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/image/excel_image_exporter.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/instance/excel_instance_exporter.py
RENAMED
File without changes
|
{osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/instance/instance_exporter.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/project/excel_project_exporter.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/router/excel_router_exporter.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/exporter/volume/excel_volume_exporter.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/flavor/openstack_flavor_importer.py
RENAMED
File without changes
|
File without changes
|
{osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/floating_ip/floating_ip_importer.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/hypervisor/hypervisor_importer.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/image/openstack_image_importer.py
RENAMED
File without changes
|
File without changes
|
{osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/instance/instance_importer.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
|
{osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/router/openstack_router_importer.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{osi_dump-0.1.3.2.1 → osi_dump-0.1.3.2.3}/src/osi_dump/importer/volume/openstack_volume_importer.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
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|