osi-dump 0.1.3.3.3.9__py3-none-any.whl → 0.1.3.3.4.1__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/keystone.py +23 -0
- osi_dump/batch_handler/network_batch_handler.py +51 -0
- osi_dump/cli.py +22 -10
- osi_dump/exporter/flavor/excel_flavor_exporter.py +1 -1
- osi_dump/exporter/network/__init__.py +0 -0
- osi_dump/exporter/network/excel_network_exporter.py +32 -0
- osi_dump/exporter/network/network_exporter.py +7 -0
- osi_dump/importer/hypervisor/openstack_hypervisor_importer.py +17 -0
- osi_dump/importer/network/__init__.py +0 -0
- osi_dump/importer/network/network_importer.py +9 -0
- osi_dump/importer/network/openstack_network_importer.py +94 -0
- osi_dump/importer/role_assignment/openstack_role_assignment_importer.py +24 -6
- osi_dump/model/network.py +26 -0
- osi_dump/model/role_assignment.py +4 -0
- {osi_dump-0.1.3.3.3.9.dist-info → osi_dump-0.1.3.3.4.1.dist-info}/METADATA +2 -2
- {osi_dump-0.1.3.3.3.9.dist-info → osi_dump-0.1.3.3.4.1.dist-info}/RECORD +19 -11
- {osi_dump-0.1.3.3.3.9.dist-info → osi_dump-0.1.3.3.4.1.dist-info}/WHEEL +1 -1
- {osi_dump-0.1.3.3.3.9.dist-info → osi_dump-0.1.3.3.4.1.dist-info}/entry_points.txt +0 -0
- {osi_dump-0.1.3.3.3.9.dist-info → osi_dump-0.1.3.3.4.1.dist-info}/top_level.txt +0 -0
osi_dump/api/keystone.py
CHANGED
@@ -9,6 +9,29 @@ import osi_dump.util.openstack_util as os_util
|
|
9
9
|
logger = logging.getLogger(__name__)
|
10
10
|
|
11
11
|
|
12
|
+
def get_users(connection: Connection):
|
13
|
+
|
14
|
+
keystone_endpoints = os_util.get_endpoints(connection=connection, service_type="identity", interface="public")
|
15
|
+
|
16
|
+
for keystone_endpoint in keystone_endpoints:
|
17
|
+
try:
|
18
|
+
if "v3" not in keystone_endpoint:
|
19
|
+
url = f"{keystone_endpoint}/v3/users"
|
20
|
+
else:
|
21
|
+
url = f"{keystone_endpoint}/users"
|
22
|
+
|
23
|
+
response = connection.session.get(url)
|
24
|
+
if response.status_code == 200:
|
25
|
+
break
|
26
|
+
except Exception as e:
|
27
|
+
logger.info(e)
|
28
|
+
|
29
|
+
|
30
|
+
if response is None:
|
31
|
+
return []
|
32
|
+
|
33
|
+
return response.json()["users"]
|
34
|
+
|
12
35
|
def get_role_assignments(connection: Connection):
|
13
36
|
keystone_endpoint = connection.endpoint_for(service_type="identity", interface="public")
|
14
37
|
|
@@ -0,0 +1,51 @@
|
|
1
|
+
import logging
|
2
|
+
|
3
|
+
from openstack.connection import Connection
|
4
|
+
|
5
|
+
from osi_dump.exporter.network.network_exporter import NetworkExporter
|
6
|
+
from osi_dump.exporter.network.excel_network_exporter import (
|
7
|
+
ExcelNetworkExporter,
|
8
|
+
)
|
9
|
+
|
10
|
+
from osi_dump.importer.network.network_importer import NetworkImporter
|
11
|
+
from osi_dump.importer.network.openstack_network_importer import (
|
12
|
+
OpenStackNetworkImporter,
|
13
|
+
)
|
14
|
+
|
15
|
+
|
16
|
+
from osi_dump import util
|
17
|
+
|
18
|
+
logger = logging.getLogger(__name__)
|
19
|
+
|
20
|
+
|
21
|
+
class NetworkBatchHandler:
|
22
|
+
def __init__(self):
|
23
|
+
self._importer_exporter_list: list[tuple[NetworkImporter, NetworkExporter]] = []
|
24
|
+
|
25
|
+
def add_importer_exporter_from_openstack_connections(
|
26
|
+
self, connections: list[Connection], output_file: str
|
27
|
+
):
|
28
|
+
for connection in connections:
|
29
|
+
importer = OpenStackNetworkImporter(connection)
|
30
|
+
|
31
|
+
sheet_name = f"{util.extract_hostname(connection.auth['auth_url'])}-network"
|
32
|
+
exporter = ExcelNetworkExporter(
|
33
|
+
sheet_name=sheet_name, output_file=output_file
|
34
|
+
)
|
35
|
+
|
36
|
+
self.add_importer_exporter(importer=importer, exporter=exporter)
|
37
|
+
|
38
|
+
def add_importer_exporter(self, importer: NetworkImporter, exporter: NetworkExporter):
|
39
|
+
self._importer_exporter_list.append((importer, exporter))
|
40
|
+
|
41
|
+
def process(self):
|
42
|
+
|
43
|
+
for importer, exporter in self._importer_exporter_list:
|
44
|
+
try:
|
45
|
+
|
46
|
+
networks = importer.import_networks()
|
47
|
+
|
48
|
+
exporter.export_networks(networks=networks)
|
49
|
+
except Exception as e:
|
50
|
+
logger.warning(e)
|
51
|
+
logger.warning("Skipping...")
|
osi_dump/cli.py
CHANGED
@@ -19,6 +19,8 @@ app = typer.Typer()
|
|
19
19
|
|
20
20
|
|
21
21
|
from osi_dump.batch_handler.flavor_batch_handler import FlavorBatchHandler
|
22
|
+
from osi_dump.batch_handler.network_batch_handler import NetworkBatchHandler
|
23
|
+
|
22
24
|
from osi_dump.batch_handler.image_batch_handler import ImageBatchHandler
|
23
25
|
from osi_dump.batch_handler.volume_batch_handler import VolumeBatchHandler
|
24
26
|
from osi_dump.os_connection.get_connections import get_connections
|
@@ -149,6 +151,14 @@ def _external_port(connections, output_path: str):
|
|
149
151
|
|
150
152
|
_external_batch_handler.process()
|
151
153
|
|
154
|
+
def _network(connections, output_path: str):
|
155
|
+
_network_batch_handler = NetworkBatchHandler()
|
156
|
+
|
157
|
+
_network_batch_handler.add_importer_exporter_from_openstack_connections(
|
158
|
+
connections, output_file=output_path
|
159
|
+
)
|
160
|
+
|
161
|
+
_network_batch_handler.process()
|
152
162
|
|
153
163
|
def inner_main(file_path: str, output_path: str):
|
154
164
|
|
@@ -156,27 +166,29 @@ def inner_main(file_path: str, output_path: str):
|
|
156
166
|
|
157
167
|
connections = get_connections(file_path=file_path)
|
158
168
|
|
159
|
-
_instance(connections=connections, output_path=output_path)
|
169
|
+
#_instance(connections=connections, output_path=output_path)
|
160
170
|
|
161
|
-
_floating_ip(connections=connections, output_path=output_path)
|
171
|
+
#_floating_ip(connections=connections, output_path=output_path)
|
162
172
|
|
163
|
-
_volume(connections=connections, output_path=output_path)
|
173
|
+
#_volume(connections=connections, output_path=output_path)
|
164
174
|
|
165
|
-
_hypervisor(connections=connections, output_path=output_path)
|
175
|
+
#_hypervisor(connections=connections, output_path=output_path)
|
166
176
|
|
167
|
-
_project(connections=connections, output_path=output_path)
|
177
|
+
#_project(connections=connections, output_path=output_path)
|
168
178
|
|
169
|
-
_image(connections=connections, output_path=output_path)
|
179
|
+
#_image(connections=connections, output_path=output_path)
|
170
180
|
|
171
|
-
_flavor(connections=connections, output_path=output_path)
|
181
|
+
#_flavor(connections=connections, output_path=output_path)
|
172
182
|
|
173
183
|
_role_assignment(connections=connections, output_path=output_path)
|
174
184
|
|
175
|
-
_load_balancer(connections=connections, output_path=output_path)
|
185
|
+
#_load_balancer(connections=connections, output_path=output_path)
|
186
|
+
|
187
|
+
#_router(connections=connections, output_path=output_path)
|
176
188
|
|
177
|
-
|
189
|
+
#_external_port(connections=connections, output_path=output_path)
|
178
190
|
|
179
|
-
|
191
|
+
#_network(connections=connections, output_path=output_path)
|
180
192
|
|
181
193
|
util.excel_autosize_column(output_path)
|
182
194
|
|
@@ -27,4 +27,4 @@ class ExcelFlavorExporter(FlavorExporter):
|
|
27
27
|
|
28
28
|
logger.info(f"Exported flavors for {self.sheet_name}")
|
29
29
|
except Exception as e:
|
30
|
-
logger.warning(f"Exporting
|
30
|
+
logger.warning(f"Exporting flavors for {self.sheet_name} error: {e}")
|
File without changes
|
@@ -0,0 +1,32 @@
|
|
1
|
+
import logging
|
2
|
+
|
3
|
+
|
4
|
+
import pandas as pd
|
5
|
+
|
6
|
+
|
7
|
+
from osi_dump.exporter.network.network_exporter import NetworkExporter
|
8
|
+
|
9
|
+
from osi_dump.model.network import Network
|
10
|
+
|
11
|
+
from osi_dump import util
|
12
|
+
|
13
|
+
logger = logging.getLogger(__name__)
|
14
|
+
|
15
|
+
|
16
|
+
class ExcelNetworkExporter(NetworkExporter):
|
17
|
+
def __init__(self, sheet_name: str, output_file: str):
|
18
|
+
self.sheet_name = sheet_name
|
19
|
+
self.output_file = output_file
|
20
|
+
|
21
|
+
def export_networks(self, networks: list[Network]):
|
22
|
+
df = pd.json_normalize([network.model_dump() for network in networks])
|
23
|
+
|
24
|
+
df = util.expand_list_column(df, "subnets")
|
25
|
+
|
26
|
+
logger.info(f"Exporting networks for {self.sheet_name}")
|
27
|
+
try:
|
28
|
+
util.export_data_excel(self.output_file, sheet_name=self.sheet_name, df=df)
|
29
|
+
|
30
|
+
logger.info(f"Exported networks for {self.sheet_name}")
|
31
|
+
except Exception as e:
|
32
|
+
logger.warning(f"Exporting networks for {self.sheet_name} error: {e}")
|
@@ -56,6 +56,23 @@ class OpenStackHypervisorImporter(HypervisorImporter):
|
|
56
56
|
|
57
57
|
return hypervisors
|
58
58
|
|
59
|
+
|
60
|
+
def _normalize_hypervisor_aggregate(self, hypervisors: list[Hypervisor]):
|
61
|
+
|
62
|
+
aggregate_id_map = {
|
63
|
+
|
64
|
+
}
|
65
|
+
|
66
|
+
aggregates: list[list[dict]] = [
|
67
|
+
|
68
|
+
]
|
69
|
+
|
70
|
+
for hypervisor in hypervisors:
|
71
|
+
aggregates.append(hypervisor.aggregates)
|
72
|
+
|
73
|
+
def _swap_element(array, i, j):
|
74
|
+
array[i], array[j] = array[j], array[i]
|
75
|
+
|
59
76
|
def _get_hypervisor_info(
|
60
77
|
self, hypervisor: OSHypervisor, aggregates: list[OSAggregate]
|
61
78
|
) -> Hypervisor:
|
File without changes
|
@@ -0,0 +1,94 @@
|
|
1
|
+
import logging
|
2
|
+
|
3
|
+
import concurrent
|
4
|
+
|
5
|
+
from openstack.network.v2.network import Network as OSNetwork
|
6
|
+
from openstack.network.v2.subnet import Subnet as OSSubnet
|
7
|
+
|
8
|
+
from openstack.connection import Connection
|
9
|
+
|
10
|
+
from osi_dump.importer.network.network_importer import NetworkImporter
|
11
|
+
from osi_dump.model.network import Network
|
12
|
+
|
13
|
+
|
14
|
+
logger = logging.getLogger(__name__)
|
15
|
+
|
16
|
+
|
17
|
+
class OpenStackNetworkImporter(NetworkImporter):
|
18
|
+
def __init__(self, connection: Connection):
|
19
|
+
self.connection = connection
|
20
|
+
|
21
|
+
def import_networks(self) -> list[Network]:
|
22
|
+
"""Import networks information from Openstack
|
23
|
+
|
24
|
+
Raises:
|
25
|
+
Exception: Raises exception if fetching networks failed
|
26
|
+
|
27
|
+
Returns:
|
28
|
+
list[Network]: _description_
|
29
|
+
"""
|
30
|
+
|
31
|
+
try:
|
32
|
+
os_networks: list[OSNetwork] = list(self.connection.list_networks())
|
33
|
+
except Exception as e:
|
34
|
+
raise Exception(
|
35
|
+
f"Can not fetch hypervisor for {self.connection.auth['auth_url']}"
|
36
|
+
) from e
|
37
|
+
|
38
|
+
networks: list[Network] = []
|
39
|
+
|
40
|
+
with concurrent.futures.ThreadPoolExecutor() as executor:
|
41
|
+
futures = [
|
42
|
+
executor.submit(self._get_network_info, network)
|
43
|
+
for network in os_networks
|
44
|
+
]
|
45
|
+
for future in concurrent.futures.as_completed(futures):
|
46
|
+
networks.append(future.result())
|
47
|
+
|
48
|
+
logger.info(f"Imported networks for {self.connection.auth['auth_url']}")
|
49
|
+
|
50
|
+
return networks
|
51
|
+
|
52
|
+
|
53
|
+
def _get_network_info(
|
54
|
+
self, network: OSNetwork,
|
55
|
+
) -> Network:
|
56
|
+
|
57
|
+
subnets = self._get_subnets_info(subnet_ids=network.subnet_ids)
|
58
|
+
|
59
|
+
return Network(
|
60
|
+
network_id=network.id,
|
61
|
+
project_id=network.project_id,
|
62
|
+
name=network.name,
|
63
|
+
mtu=network.mtu,
|
64
|
+
port_security_enabled=network.is_port_security_enabled,
|
65
|
+
network_type=network.provider_network_type,
|
66
|
+
physical_network=network.provider_physical_network,
|
67
|
+
segmentation_id=network.provider_segmentation_id,
|
68
|
+
status=network.status,
|
69
|
+
shared=network.is_shared,
|
70
|
+
created_at=network.created_at,
|
71
|
+
updated_at=network.updated_at,
|
72
|
+
subnets=subnets
|
73
|
+
)
|
74
|
+
|
75
|
+
|
76
|
+
def _get_subnets_info(self, subnet_ids: list[str]) -> list[dict]:
|
77
|
+
subnets = []
|
78
|
+
|
79
|
+
for subnet_id in subnet_ids:
|
80
|
+
os_subnet: OSSubnet = self.connection.get_subnet(name_or_id=subnet_id)
|
81
|
+
|
82
|
+
if not os_subnet:
|
83
|
+
continue
|
84
|
+
|
85
|
+
subnets.append({
|
86
|
+
"id": os_subnet.id,
|
87
|
+
"cidr": os_subnet.cidr
|
88
|
+
})
|
89
|
+
|
90
|
+
return subnets
|
91
|
+
|
92
|
+
|
93
|
+
|
94
|
+
|
@@ -4,13 +4,15 @@ import concurrent
|
|
4
4
|
|
5
5
|
from openstack.connection import Connection
|
6
6
|
from openstack.identity.v3.role_assignment import RoleAssignment as OSRoleAssignment
|
7
|
+
from openstack.identity.v3.user import User as OSUser
|
8
|
+
|
7
9
|
|
8
10
|
from osi_dump.importer.role_assignment.role_assignment_importer import (
|
9
11
|
RoleAssignmentImporter,
|
10
12
|
)
|
11
13
|
from osi_dump.model.role_assignment import RoleAssignment
|
12
14
|
|
13
|
-
from osi_dump.api.keystone import get_role_assignments
|
15
|
+
from osi_dump.api.keystone import get_role_assignments, get_users
|
14
16
|
|
15
17
|
logger = logging.getLogger(__name__)
|
16
18
|
|
@@ -19,14 +21,14 @@ class OpenStackRoleAssignmentImporter(RoleAssignmentImporter):
|
|
19
21
|
def __init__(self, connection: Connection):
|
20
22
|
self.connection = connection
|
21
23
|
|
22
|
-
self.users = {}
|
24
|
+
self.users: dict[str, dict] = {}
|
23
25
|
self.roles = {}
|
24
26
|
|
25
27
|
def _get_users(self):
|
26
|
-
os_users = self.connection
|
28
|
+
os_users = get_users(self.connection)
|
27
29
|
|
28
30
|
for os_user in os_users:
|
29
|
-
self.users[os_user
|
31
|
+
self.users[os_user["id"]] = os_user
|
30
32
|
|
31
33
|
def _get_roles(self):
|
32
34
|
os_roles = self.connection.identity.roles()
|
@@ -90,7 +92,7 @@ class OpenStackRoleAssignmentImporter(RoleAssignmentImporter):
|
|
90
92
|
role_id = None
|
91
93
|
|
92
94
|
try:
|
93
|
-
user_id = role_assignment["user"]["id"]
|
95
|
+
user_id: str = role_assignment["user"]["id"]
|
94
96
|
except Exception as e:
|
95
97
|
logger.warning(f"Can not get user id: {e}")
|
96
98
|
|
@@ -102,8 +104,11 @@ class OpenStackRoleAssignmentImporter(RoleAssignmentImporter):
|
|
102
104
|
user_name = None
|
103
105
|
role_name = None
|
104
106
|
|
107
|
+
password_expires_at = None
|
108
|
+
options = None
|
109
|
+
|
105
110
|
try:
|
106
|
-
user_name = self.users[user_id]
|
111
|
+
user_name = self.users[user_id]["name"]
|
107
112
|
except Exception as e:
|
108
113
|
logger.warning(f"Can not get user name: {e}")
|
109
114
|
|
@@ -112,12 +117,25 @@ class OpenStackRoleAssignmentImporter(RoleAssignmentImporter):
|
|
112
117
|
except Exception as e:
|
113
118
|
logger.warning(f"Can not get role name: {e}")
|
114
119
|
|
120
|
+
try:
|
121
|
+
password_expires_at = self.users[user_id]["password_expires_at"]
|
122
|
+
except Exception as e:
|
123
|
+
logger.warning(f"Can not get password expires at: {e}")
|
124
|
+
|
125
|
+
|
126
|
+
try:
|
127
|
+
options = self.users[user_id]["options"]
|
128
|
+
except Exception as e:
|
129
|
+
logger.warning(f"Can not get option")
|
130
|
+
|
115
131
|
role_assignment_ret = RoleAssignment(
|
116
132
|
user_id=user_id,
|
117
133
|
user_name=user_name,
|
118
134
|
role_id=role_id,
|
119
135
|
role_name=role_name,
|
120
136
|
scope=role_assignment["scope"],
|
137
|
+
password_expires_at=password_expires_at,
|
138
|
+
options=options
|
121
139
|
)
|
122
140
|
|
123
141
|
return role_assignment_ret
|
@@ -0,0 +1,26 @@
|
|
1
|
+
from typing import Optional
|
2
|
+
from pydantic import BaseModel, ConfigDict
|
3
|
+
|
4
|
+
|
5
|
+
|
6
|
+
class Network(BaseModel):
|
7
|
+
model_config = ConfigDict(strict=True)
|
8
|
+
|
9
|
+
network_id: str
|
10
|
+
project_id: str
|
11
|
+
name: Optional[str]
|
12
|
+
|
13
|
+
subnets: Optional[list[dict]] # {"id": str, "cidr": "str"}
|
14
|
+
mtu: int
|
15
|
+
|
16
|
+
port_security_enabled: Optional[bool]
|
17
|
+
|
18
|
+
network_type: str
|
19
|
+
segmentation_id: Optional[int]
|
20
|
+
physical_network: Optional[str]
|
21
|
+
|
22
|
+
status: Optional[str]
|
23
|
+
shared: Optional[bool]
|
24
|
+
|
25
|
+
created_at: Optional[str]
|
26
|
+
updated_at: Optional[str]
|
@@ -1,8 +1,8 @@
|
|
1
1
|
osi_dump/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
2
|
osi_dump/__main__.py,sha256=fCVTLFipB-P0872_4j7iOJNNosOMBj3YdHr8TH_fhRY,71
|
3
|
-
osi_dump/cli.py,sha256=
|
3
|
+
osi_dump/cli.py,sha256=4fMPhzFrVg2qbDolP9LJchsSoOzAuHLTffBNiAiB5eU,6795
|
4
4
|
osi_dump/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
5
|
-
osi_dump/api/keystone.py,sha256=
|
5
|
+
osi_dump/api/keystone.py,sha256=HgHBJL5c6BTXNhT6pPf2XM2tL7Uu6V4HokXnjHGQ_wg,2111
|
6
6
|
osi_dump/api/neutron.py,sha256=pag_d6MsxA1gOUit4bvVUaTiTrPqLJjwz9KU_QSpxwM,1788
|
7
7
|
osi_dump/api/octavia.py,sha256=XqG406SuoJUGohAtREsTcBatLCANUM-dFSdXvdQ740I,2586
|
8
8
|
osi_dump/api/placement.py,sha256=yoWzg39b8nK2E1nrxDhLxLsa7FcBTw57gfy8b5F5ijc,1096
|
@@ -14,6 +14,7 @@ osi_dump/batch_handler/hypervisor_batch_handler.py,sha256=vkv6SAx1arPNVvFJ6RyvbJ
|
|
14
14
|
osi_dump/batch_handler/image_batch_handler.py,sha256=aGF_jnHXuBc7IRFoLLCrSFD8h4TP0g98T_NtBXkZjd4,1564
|
15
15
|
osi_dump/batch_handler/instance_batch_handler.py,sha256=tiHAdhH76BT9-ymnTmTr962cMUTqpPpAQyPSePKEgSM,1761
|
16
16
|
osi_dump/batch_handler/load_balancer_batch_handler.py,sha256=rpbi-n-KsYPGDmlRND5zqcVW6DYVgffmE5najUf2wT4,1796
|
17
|
+
osi_dump/batch_handler/network_batch_handler.py,sha256=Ra4Sz3IpjG7-k5-VGHL1W7pIsrfdMOo6dR35CozGcOs,1614
|
17
18
|
osi_dump/batch_handler/project_batch_handler.py,sha256=uMHx_s-Z4tO1MBah5X-T5d6tLr0qUJuPIR_7RHJ64ck,1626
|
18
19
|
osi_dump/batch_handler/role_assignment_batch_handler.py,sha256=45TtVDDRjp9scpW9GCxbl-b6MoTm_kp0YHchEz630Zk,1882
|
19
20
|
osi_dump/batch_handler/router_batch_handler.py,sha256=XelVNw_2u00Rdnz20SI2HIPPJKwz3623BbceMGnDS8Q,1587
|
@@ -23,7 +24,7 @@ osi_dump/exporter/external_port/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm
|
|
23
24
|
osi_dump/exporter/external_port/excel_external_port_exporter.py,sha256=FgLQersxmb-g2el02PxMFWSO0Chn5YdxEMXfDM_Jtn4,1108
|
24
25
|
osi_dump/exporter/external_port/external_port_exporter.py,sha256=LK7r_Do87ZONgmlH8FdtB-k1C_tT0ie3I0dCQyb6OUA,169
|
25
26
|
osi_dump/exporter/flavor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
26
|
-
osi_dump/exporter/flavor/excel_flavor_exporter.py,sha256=
|
27
|
+
osi_dump/exporter/flavor/excel_flavor_exporter.py,sha256=1-RJTG-fY2faK1L4B1nHTl1PRPWKgiX_c_CKPXIvbnA,871
|
27
28
|
osi_dump/exporter/flavor/flavor_exporter.py,sha256=-zQ8776yk7vHpiZUOcX61V8KxA40AAq8foV7fD0i1g0,155
|
28
29
|
osi_dump/exporter/floating_ip/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
29
30
|
osi_dump/exporter/floating_ip/excel_floating_ip_exporter.py,sha256=Bn1yZTvZ8dP3EhVHW-Pr4O9TC2Cz2RbJaz_vRE66xTQ,975
|
@@ -40,6 +41,9 @@ osi_dump/exporter/instance/instance_exporter.py,sha256=5CuKKvTa5S2_Ds7fap6tle4go
|
|
40
41
|
osi_dump/exporter/load_balancer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
41
42
|
osi_dump/exporter/load_balancer/excel_load_balancer_exporter.py,sha256=gffLcLr8uvSbaf7rwZDgNRCPKh8bMIs2ShHtyotpKmw,1105
|
42
43
|
osi_dump/exporter/load_balancer/load_balancer_exporter.py,sha256=Z5uvEKz1UG_dpAw5KVh-IX5PWLzlPt7pV9773bkgjXs,175
|
44
|
+
osi_dump/exporter/network/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
45
|
+
osi_dump/exporter/network/excel_network_exporter.py,sha256=O007PFFPSmDzOagsGGv-zcSEZQVVLRIBLIOSuMl4vYY,950
|
46
|
+
osi_dump/exporter/network/network_exporter.py,sha256=IprGl-jTLKxslEd1skiMzEQ2Qvl9Yu5yNm2uijqlFnA,158
|
43
47
|
osi_dump/exporter/project/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
44
48
|
osi_dump/exporter/project/excel_project_exporter.py,sha256=2U3Tvn_Bk4xEQk3Tmh-oj5WXAG1bfxI6m7WVPF1upQw,916
|
45
49
|
osi_dump/exporter/project/project_exporter.py,sha256=q3VAmtmBP4iq9YEW9Eescm3vjAVM4Ev3BDjzkGz9Pgo,158
|
@@ -63,7 +67,7 @@ osi_dump/importer/floating_ip/floating_ip_importer.py,sha256=2_lCZYF-r2dgdL4Yzws
|
|
63
67
|
osi_dump/importer/floating_ip/openstack_floating_ip_importer.py,sha256=xuALHyiyb4LdRgFN0hZvOx0pImKpGsLUtPWW_1q52gc,2286
|
64
68
|
osi_dump/importer/hypervisor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
65
69
|
osi_dump/importer/hypervisor/hypervisor_importer.py,sha256=JuoJBltqFYhH-Ql9TLUPHX2YurS0JFV7Augrc6bDJ5Q,206
|
66
|
-
osi_dump/importer/hypervisor/openstack_hypervisor_importer.py,sha256=
|
70
|
+
osi_dump/importer/hypervisor/openstack_hypervisor_importer.py,sha256=Y5JYSfmkwXMljdqhDyFk2LHGL7kHN9YDKjHnlhaiG-o,4284
|
67
71
|
osi_dump/importer/image/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
68
72
|
osi_dump/importer/image/image_importer.py,sha256=6zwAMnS58S2HGwARwebqf4VE9IBQBv5Ot6nmcn9H4fY,181
|
69
73
|
osi_dump/importer/image/openstack_image_importer.py,sha256=dqQAsNDPljTDN82YPEjBbPDjvLOCtad_hgRWhIpCWXw,2585
|
@@ -73,11 +77,14 @@ osi_dump/importer/instance/openstack_instance_importer.py,sha256=HvA1hYLAneY0KtD
|
|
73
77
|
osi_dump/importer/load_balancer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
74
78
|
osi_dump/importer/load_balancer/load_balancer_importer.py,sha256=fzInBlkscqlbhCATeQYXvufc-WHq2pbofTJJifN0zaY,218
|
75
79
|
osi_dump/importer/load_balancer/openstack_load_balancer_importer.py,sha256=ocZ8JcjXoxPL_6esNetapaeOrXUVs5tNqb83hL6ih-U,4033
|
80
|
+
osi_dump/importer/network/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
81
|
+
osi_dump/importer/network/network_importer.py,sha256=LVak9W8NEu3cWHytttaJlmJ8FrtwaLerY85ZSzAAxOc,191
|
82
|
+
osi_dump/importer/network/openstack_network_importer.py,sha256=1Z74Yb3dA8Z0UmFUHMna2suwB8GZxQ06O5Vfpx0usxo,2703
|
76
83
|
osi_dump/importer/project/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
77
84
|
osi_dump/importer/project/openstack_project_importer.py,sha256=nQRInUb0vtm57dQNLxSoUFnGrNbAytK2Zl0FaUMPqBc,4964
|
78
85
|
osi_dump/importer/project/project_importer.py,sha256=jwEvxteFbSwyWMV8hKAtf5Lo2bZysWkQ1L_NVUE8XOQ,191
|
79
86
|
osi_dump/importer/role_assignment/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
80
|
-
osi_dump/importer/role_assignment/openstack_role_assignment_importer.py,sha256=
|
87
|
+
osi_dump/importer/role_assignment/openstack_role_assignment_importer.py,sha256=KACI5Yyzk2L3O0yC9MdDpStOOL11EaxTfqD8A0qvZiI,4125
|
81
88
|
osi_dump/importer/role_assignment/role_assignment_importer.py,sha256=Faorx0qsgdXjv5y2t-7obpV3wFfbmByx_-8b9yBr7L8,228
|
82
89
|
osi_dump/importer/router/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
83
90
|
osi_dump/importer/router/openstack_router_importer.py,sha256=T_Wr45nJrCcp2OOdRawmdQkNBDzczA-3DPx9dlewd4g,2781
|
@@ -94,8 +101,9 @@ osi_dump/model/hypervisor.py,sha256=6dWEMVrrjOQolX936FqY994S7RAXpMPATpsLPVNeCyk,
|
|
94
101
|
osi_dump/model/image.py,sha256=JUr90XQgA6d3EyoZyV-Cyz4Y1GkEBIDhALsf-_eoR-Y,524
|
95
102
|
osi_dump/model/instance.py,sha256=8puhIKWWfoAaTURXb7XUpjG0lQ4nb0UwrsrTQdDaFbs,639
|
96
103
|
osi_dump/model/load_balancer.py,sha256=3v4j949FM8jAwroWKE1ubaii2eM2XW9DWKl7HjtCdno,571
|
104
|
+
osi_dump/model/network.py,sha256=xwLwayfZ_7Ql8ZDHQhgTFC8LA8yjydtL8uefo-AXMuE,540
|
97
105
|
osi_dump/model/project.py,sha256=S5BtjeMoxZfiJ7z7G_5jYfp5mMTzlPi7DWT5fuBGCTw,749
|
98
|
-
osi_dump/model/role_assignment.py,sha256=
|
106
|
+
osi_dump/model/role_assignment.py,sha256=Azz5qYMfoUeot5GTZr7NTz3nYBeuIEXIhx3oWRLR_cg,379
|
99
107
|
osi_dump/model/router.py,sha256=K8B6w97DYcFNRPmXN6CAZatm_0XSo2qIFVTvgdMfufY,417
|
100
108
|
osi_dump/model/volume.py,sha256=C1WdZ_GwlL-iaBqrFpgPMfIQZj3ST2KQHzwXceYxRZg,423
|
101
109
|
osi_dump/os_connection/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -109,8 +117,8 @@ osi_dump/util/extract_hostname.py,sha256=IpdklGHevmtRu67xeSRE_5n2mvWGI1sDsnJwExo
|
|
109
117
|
osi_dump/util/openstack_util.py,sha256=_o8LiRmQKtxQ8hU3rbrMNwIAxt0-aWD2rjq-NvVdK9E,1299
|
110
118
|
osi_dump/util/panda_excel.py,sha256=owr8AffIxqN3yY8kIv55Ox4j2dRz7kXZvSZFZeft8dw,734
|
111
119
|
osi_dump/util/validate_dir_path.py,sha256=pL_OrY8JnNwk3vj6Zp6bsZtgHXhszSGRoqIt-1G5S90,507
|
112
|
-
osi_dump-0.1.3.3.
|
113
|
-
osi_dump-0.1.3.3.
|
114
|
-
osi_dump-0.1.3.3.
|
115
|
-
osi_dump-0.1.3.3.
|
116
|
-
osi_dump-0.1.3.3.
|
120
|
+
osi_dump-0.1.3.3.4.1.dist-info/METADATA,sha256=uxG89PHVOyNmjStjLeL3viz1uKNq0UgwxPN4hwpBVvw,685
|
121
|
+
osi_dump-0.1.3.3.4.1.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
122
|
+
osi_dump-0.1.3.3.4.1.dist-info/entry_points.txt,sha256=ozm5sIBtXzLv6_FiUe26v1BgA3_xUReGLPhKQKZ56wQ,46
|
123
|
+
osi_dump-0.1.3.3.4.1.dist-info/top_level.txt,sha256=OtAAwmJfcoPvlw_Cemo_H1aXIGV_7w0O2941KQt6faQ,9
|
124
|
+
osi_dump-0.1.3.3.4.1.dist-info/RECORD,,
|
File without changes
|
File without changes
|