osi-dump 0.1.2.8__tar.gz → 0.1.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 (119) hide show
  1. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/PKG-INFO +1 -1
  2. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/pyproject.toml +1 -1
  3. osi_dump-0.1.3/src/osi_dump/api/neutron.py +42 -0
  4. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/importer/external_port/openstack_external_port_importer.py +10 -4
  5. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/importer/instance/openstack_instance_importer.py +26 -0
  6. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/model/image.py +1 -1
  7. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/model/instance.py +2 -0
  8. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump.egg-info/PKG-INFO +1 -1
  9. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump.egg-info/SOURCES.txt +1 -0
  10. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/README.md +0 -0
  11. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/setup.cfg +0 -0
  12. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/__init__.py +0 -0
  13. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/__main__.py +0 -0
  14. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/api/__init__.py +0 -0
  15. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/api/octavia.py +0 -0
  16. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/api/placement.py +0 -0
  17. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/batch_handler/__init__.py +0 -0
  18. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/batch_handler/external_port_batch_handler.py +0 -0
  19. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/batch_handler/flavor_batch_handler.py +0 -0
  20. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/batch_handler/floating_ip_batch_handler.py +0 -0
  21. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/batch_handler/hypervisor_batch_handler.py +0 -0
  22. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/batch_handler/image_batch_handler.py +0 -0
  23. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/batch_handler/instance_batch_handler.py +0 -0
  24. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/batch_handler/load_balancer_batch_handler.py +0 -0
  25. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/batch_handler/project_batch_handler.py +0 -0
  26. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/batch_handler/role_assignment_batch_handler.py +0 -0
  27. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/batch_handler/router_batch_handler.py +0 -0
  28. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/batch_handler/volume_batch_handler.py +0 -0
  29. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/cli.py +0 -0
  30. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/exporter/__init__.py +0 -0
  31. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/exporter/external_port/__init__.py +0 -0
  32. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/exporter/external_port/excel_external_port_exporter.py +0 -0
  33. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/exporter/external_port/external_port_exporter.py +0 -0
  34. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/exporter/flavor/__init__.py +0 -0
  35. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/exporter/flavor/excel_flavor_exporter.py +0 -0
  36. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/exporter/flavor/flavor_exporter.py +0 -0
  37. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/exporter/floating_ip/__init__.py +0 -0
  38. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/exporter/floating_ip/excel_floating_ip_exporter.py +0 -0
  39. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/exporter/floating_ip/floating_ip_exporter.py +0 -0
  40. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/exporter/hypervisor/__init__.py +0 -0
  41. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/exporter/hypervisor/excel_hypervisor_exporter.py +0 -0
  42. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/exporter/hypervisor/hypervisor_exporter.py +0 -0
  43. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/exporter/image/__init__.py +0 -0
  44. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/exporter/image/excel_image_exporter.py +0 -0
  45. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/exporter/image/image_exporter.py +0 -0
  46. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/exporter/instance/__init__.py +0 -0
  47. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/exporter/instance/excel_instance_exporter.py +0 -0
  48. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/exporter/instance/instance_exporter.py +0 -0
  49. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/exporter/load_balancer/__init__.py +0 -0
  50. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/exporter/load_balancer/excel_load_balancer_exporter.py +0 -0
  51. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/exporter/load_balancer/load_balancer_exporter.py +0 -0
  52. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/exporter/project/__init__.py +0 -0
  53. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/exporter/project/excel_project_exporter.py +0 -0
  54. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/exporter/project/project_exporter.py +0 -0
  55. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/exporter/role_assignment/__init__.py +0 -0
  56. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/exporter/role_assignment/excel_role_assignment_exporter.py +0 -0
  57. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/exporter/role_assignment/role_assignment_exporter.py +0 -0
  58. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/exporter/router/__init__.py +0 -0
  59. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/exporter/router/excel_router_exporter.py +0 -0
  60. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/exporter/router/router_exporter.py +0 -0
  61. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/exporter/volume/__init__.py +0 -0
  62. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/exporter/volume/excel_volume_exporter.py +0 -0
  63. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/exporter/volume/volume_exporter.py +0 -0
  64. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/importer/external_port/__init__.py +0 -0
  65. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/importer/external_port/external_port_importer.py +0 -0
  66. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/importer/flavor/__init__.py +0 -0
  67. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/importer/flavor/flavor_importer.py +0 -0
  68. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/importer/flavor/openstack_flavor_importer.py +0 -0
  69. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/importer/floating_ip/__init__.py +0 -0
  70. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/importer/floating_ip/floating_ip_importer.py +0 -0
  71. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/importer/floating_ip/openstack_floating_ip_importer.py +0 -0
  72. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/importer/hypervisor/__init__.py +0 -0
  73. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/importer/hypervisor/hypervisor_importer.py +0 -0
  74. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/importer/hypervisor/openstack_hypervisor_importer.py +0 -0
  75. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/importer/image/__init__.py +0 -0
  76. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/importer/image/image_importer.py +0 -0
  77. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/importer/image/openstack_image_importer.py +0 -0
  78. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/importer/instance/__init__.py +0 -0
  79. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/importer/instance/instance_importer.py +0 -0
  80. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/importer/load_balancer/__init__.py +0 -0
  81. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/importer/load_balancer/load_balancer_importer.py +0 -0
  82. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/importer/load_balancer/openstack_load_balancer_importer.py +0 -0
  83. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/importer/project/__init__.py +0 -0
  84. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/importer/project/openstack_project_importer.py +0 -0
  85. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/importer/project/project_importer.py +0 -0
  86. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/importer/role_assignment/__init__.py +0 -0
  87. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/importer/role_assignment/openstack_role_assignment_importer.py +0 -0
  88. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/importer/role_assignment/role_assignment_importer.py +0 -0
  89. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/importer/router/__init__.py +0 -0
  90. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/importer/router/openstack_router_importer.py +0 -0
  91. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/importer/router/router_importer.py +0 -0
  92. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/importer/volume/__init__.py +0 -0
  93. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/importer/volume/openstack_volume_importer.py +0 -0
  94. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/importer/volume/volume_importer.py +0 -0
  95. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/model/__init__.py +0 -0
  96. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/model/authentication_info.py +0 -0
  97. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/model/external_port.py +0 -0
  98. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/model/flavor.py +0 -0
  99. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/model/floating_ip.py +0 -0
  100. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/model/hypervisor.py +0 -0
  101. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/model/load_balancer.py +0 -0
  102. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/model/project.py +0 -0
  103. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/model/role_assignment.py +0 -0
  104. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/model/router.py +0 -0
  105. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/model/volume.py +0 -0
  106. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/os_connection/__init__.py +0 -0
  107. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/os_connection/get_connections.py +0 -0
  108. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/util/__init__.py +0 -0
  109. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/util/create_file.py +0 -0
  110. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/util/excel_autosize_column.py +0 -0
  111. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/util/excel_sort_sheet.py +0 -0
  112. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/util/export_data_excel.py +0 -0
  113. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/util/extract_hostname.py +0 -0
  114. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/util/panda_excel.py +0 -0
  115. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump/util/validate_dir_path.py +0 -0
  116. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump.egg-info/dependency_links.txt +0 -0
  117. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump.egg-info/entry_points.txt +0 -0
  118. {osi_dump-0.1.2.8 → osi_dump-0.1.3}/src/osi_dump.egg-info/requires.txt +0 -0
  119. {osi_dump-0.1.2.8 → osi_dump-0.1.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.2.8
3
+ Version: 0.1.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.2.8"
3
+ version = "0.1.3"
4
4
  description = "OpenStack information dump tool"
5
5
  readme = "README.md"
6
6
  authors = [{ name = "TVKain" }]
@@ -0,0 +1,42 @@
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
+ logger = logging.getLogger(__name__)
8
+
9
+
10
+ def get_floating_ip_project(connection: Connection, floating_ip_id: str):
11
+ neutron_endpoint = connection.endpoint_for(
12
+ service_type="network", interface="public"
13
+ )
14
+
15
+ try:
16
+ url = f"{neutron_endpoint}/v2.0/floatingips/{floating_ip_id}?fields=project_id"
17
+ response = connection.session.get(url)
18
+
19
+ except Exception as e:
20
+ print(e)
21
+
22
+ data = response.json()
23
+
24
+ return data["floatingip"]["project_id"]
25
+
26
+
27
+ def get_router_project(connection: Connection, router_id: str):
28
+ octavia_endpoint = connection.endpoint_for(
29
+ service_type="network", interface="internal"
30
+ )
31
+
32
+ try:
33
+ url = f"{octavia_endpoint}/v2.0/routers/{router_id}?fields=project_id"
34
+
35
+ response = connection.session.get(url)
36
+
37
+ except Exception as e:
38
+ print(e)
39
+
40
+ data = response.json()
41
+
42
+ return data["router"]["project_id"]
@@ -15,6 +15,8 @@ from openstack.network.v2.router import Router as OSRouter
15
15
  from osi_dump.importer.external_port.external_port_importer import ExternalPortImporter
16
16
  from osi_dump.model.external_port import ExternalPort
17
17
 
18
+ import osi_dump.api.neutron as osi_neutron
19
+
18
20
  logger = logging.getLogger(__name__)
19
21
 
20
22
 
@@ -146,11 +148,15 @@ class OpenStackExternalPortImporter(ExternalPortImporter):
146
148
  return ""
147
149
 
148
150
  def _map_project_id_router(self, device_id: str) -> str:
149
- router: OSRouter = self.connection.get_router(name_or_id=device_id)
151
+ project_id = osi_neutron.get_router_project(
152
+ self.connection, router_id=device_id
153
+ )
150
154
 
151
- return router.project_id
155
+ return project_id
152
156
 
153
157
  def _map_project_id_floating(self, device_id: str) -> str:
154
- floating_ip: OSFloatingIP = self.connection.get_floating_ip(id=device_id)
158
+ project_id = osi_neutron.get_floating_ip_project(
159
+ self.connection, floating_ip_id=device_id
160
+ )
155
161
 
156
- return floating_ip.project_id
162
+ return project_id
@@ -5,6 +5,8 @@ import concurrent
5
5
  from openstack.connection import Connection
6
6
  from openstack.compute.v2.server import Server
7
7
 
8
+ from openstack.compute.v2.flavor import Flavor as OSFlavor
9
+
8
10
  from osi_dump.importer.instance.instance_importer import InstanceImporter
9
11
  from osi_dump.model.instance import Instance
10
12
 
@@ -87,6 +89,28 @@ class OpenStackInstanceImporter(InstanceImporter):
87
89
  f"Unable to obtain IP address information for instance {server.name}: {e}"
88
90
  )
89
91
 
92
+ vgpus = None
93
+ vgpu_type = None
94
+
95
+ vgpu_metadata_property = "pci_passthrough:alias"
96
+
97
+ try:
98
+ flavor: OSFlavor = self.connection.get_flavor(
99
+ name_or_id=server.flavor["id"]
100
+ )
101
+
102
+ vgpu_prop: str = flavor.extra_specs[vgpu_metadata_property]
103
+
104
+ vgpu_props = vgpu_prop.split(":")
105
+
106
+ vgpu_type = vgpu_props[0]
107
+ vgpus = int(vgpu_props[1])
108
+
109
+ except Exception as e:
110
+ logger.warning(
111
+ f"Unable to obtain GPU information for instance {server.name}: {e}"
112
+ )
113
+
90
114
  instance = Instance(
91
115
  instance_id=server.id,
92
116
  instance_name=server.name,
@@ -101,6 +125,8 @@ class OpenStackInstanceImporter(InstanceImporter):
101
125
  vcpus=server.flavor["vcpus"],
102
126
  created_at=server.created_at,
103
127
  updated_at=server.updated_at,
128
+ vgpus=vgpus,
129
+ vgpu_type=vgpu_type,
104
130
  )
105
131
 
106
132
  return instance
@@ -12,7 +12,7 @@ class Image(BaseModel):
12
12
  min_disk: int
13
13
  min_ram: int
14
14
  image_name: Optional[str]
15
- owner: str
15
+ owner: Optional[str]
16
16
 
17
17
  os_distro: Optional[str]
18
18
  properties: Optional[dict]
@@ -16,6 +16,8 @@ class Instance(BaseModel):
16
16
  status: str
17
17
  ram: int
18
18
  vcpus: int
19
+ vgpus: Optional[int]
20
+ vgpu_type: Optional[str]
19
21
  hypervisor: Optional[str]
20
22
  created_at: str
21
23
  updated_at: str
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: osi-dump
3
- Version: 0.1.2.8
3
+ Version: 0.1.3
4
4
  Summary: OpenStack information dump tool
5
5
  Author: TVKain
6
6
  License: Apache-2.0
@@ -10,6 +10,7 @@ src/osi_dump.egg-info/entry_points.txt
10
10
  src/osi_dump.egg-info/requires.txt
11
11
  src/osi_dump.egg-info/top_level.txt
12
12
  src/osi_dump/api/__init__.py
13
+ src/osi_dump/api/neutron.py
13
14
  src/osi_dump/api/octavia.py
14
15
  src/osi_dump/api/placement.py
15
16
  src/osi_dump/batch_handler/__init__.py
File without changes
File without changes
File without changes