osi-dump 0.1.3.3.4.2__py3-none-any.whl → 0.1.4__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/__main__.py +4 -4
- osi_dump/api/keystone.py +70 -70
- osi_dump/api/neutron.py +65 -65
- osi_dump/api/octavia.py +94 -94
- osi_dump/api/placement.py +41 -41
- osi_dump/batch_handler/__init__.py +6 -5
- osi_dump/batch_handler/external_port_batch_handler.py +55 -55
- osi_dump/batch_handler/flavor_batch_handler.py +51 -51
- osi_dump/batch_handler/floating_ip_batch_handler.py +57 -57
- osi_dump/batch_handler/hypervisor_batch_handler.py +55 -55
- osi_dump/batch_handler/image_batch_handler.py +51 -51
- osi_dump/batch_handler/instance_batch_handler.py +46 -54
- osi_dump/batch_handler/load_balancer_batch_handler.py +59 -59
- osi_dump/batch_handler/network_batch_handler.py +51 -51
- osi_dump/batch_handler/project_batch_handler.py +51 -51
- osi_dump/batch_handler/role_assignment_batch_handler.py +38 -61
- osi_dump/batch_handler/router_batch_handler.py +49 -49
- osi_dump/batch_handler/security_group_batch_handler.py +37 -0
- osi_dump/batch_handler/volume_batch_handler.py +45 -45
- osi_dump/cli.py +267 -257
- osi_dump/exporter/external_port/excel_external_port_exporter.py +34 -34
- osi_dump/exporter/external_port/external_port_exporter.py +7 -7
- osi_dump/exporter/flavor/excel_flavor_exporter.py +30 -30
- osi_dump/exporter/flavor/flavor_exporter.py +7 -7
- osi_dump/exporter/floating_ip/excel_floating_ip_exporter.py +30 -30
- osi_dump/exporter/floating_ip/floating_ip_exporter.py +7 -7
- osi_dump/exporter/hypervisor/excel_hypervisor_exporter.py +32 -32
- osi_dump/exporter/hypervisor/hypervisor_exporter.py +7 -7
- osi_dump/exporter/image/excel_image_exporter.py +28 -28
- osi_dump/exporter/image/image_exporter.py +7 -7
- osi_dump/exporter/instance/excel_instance_exporter.py +29 -29
- osi_dump/exporter/instance/instance_exporter.py +8 -7
- osi_dump/exporter/load_balancer/excel_load_balancer_exporter.py +36 -36
- osi_dump/exporter/load_balancer/load_balancer_exporter.py +7 -7
- osi_dump/exporter/network/excel_network_exporter.py +32 -32
- osi_dump/exporter/network/network_exporter.py +7 -7
- osi_dump/exporter/project/excel_project_exporter.py +30 -30
- osi_dump/exporter/project/project_exporter.py +7 -7
- osi_dump/exporter/role_assignment/excel_role_assignment_exporter.py +43 -35
- osi_dump/exporter/role_assignment/role_assignment_exporter.py +7 -7
- osi_dump/exporter/router/excel_router_exporter.py +30 -30
- osi_dump/exporter/router/router_exporter.py +7 -7
- osi_dump/exporter/security_group/excel_security_group_exporter.py +35 -0
- osi_dump/exporter/security_group/security_group_exporter.py +8 -0
- osi_dump/exporter/volume/excel_volume_exporter.py +29 -29
- osi_dump/exporter/volume/volume_exporter.py +7 -7
- osi_dump/importer/external_port/external_port_importer.py +9 -9
- osi_dump/importer/external_port/openstack_external_port_importer.py +177 -177
- osi_dump/importer/flavor/flavor_importer.py +9 -9
- osi_dump/importer/flavor/openstack_flavor_importer.py +64 -64
- osi_dump/importer/floating_ip/floating_ip_importer.py +9 -9
- osi_dump/importer/floating_ip/openstack_floating_ip_importer.py +68 -68
- osi_dump/importer/hypervisor/hypervisor_importer.py +9 -9
- osi_dump/importer/hypervisor/openstack_hypervisor_importer.py +137 -137
- osi_dump/importer/image/image_importer.py +9 -9
- osi_dump/importer/image/openstack_image_importer.py +81 -81
- osi_dump/importer/instance/instance_importer.py +8 -9
- osi_dump/importer/instance/openstack_instance_importer.py +136 -136
- osi_dump/importer/load_balancer/load_balancer_importer.py +9 -9
- osi_dump/importer/load_balancer/openstack_load_balancer_importer.py +113 -113
- osi_dump/importer/network/network_importer.py +9 -9
- osi_dump/importer/network/openstack_network_importer.py +93 -93
- osi_dump/importer/project/openstack_project_importer.py +141 -141
- osi_dump/importer/project/project_importer.py +9 -9
- osi_dump/importer/role_assignment/openstack_role_assignment_importer.py +117 -141
- osi_dump/importer/role_assignment/role_assignment_importer.py +16 -9
- osi_dump/importer/router/openstack_router_importer.py +87 -87
- osi_dump/importer/router/router_importer.py +9 -9
- osi_dump/importer/security_group/openstack_security_group_importer.py +54 -0
- osi_dump/importer/security_group/security_group_importer.py +8 -0
- osi_dump/importer/volume/openstack_volume_importer.py +81 -81
- osi_dump/importer/volume/volume_importer.py +9 -9
- osi_dump/model/authentication_info.py +15 -15
- osi_dump/model/external_port.py +30 -30
- osi_dump/model/flavor.py +20 -20
- osi_dump/model/floating_ip.py +24 -24
- osi_dump/model/hypervisor.py +24 -24
- osi_dump/model/image.py +27 -27
- osi_dump/model/instance.py +29 -29
- osi_dump/model/load_balancer.py +26 -26
- osi_dump/model/network.py +25 -25
- osi_dump/model/project.py +33 -33
- osi_dump/model/role_assignment.py +30 -21
- osi_dump/model/router.py +23 -23
- osi_dump/model/security_group.py +22 -0
- osi_dump/model/volume.py +25 -25
- osi_dump/os_connection/get_connections.py +67 -67
- osi_dump/util/__init__.py +7 -7
- osi_dump/util/create_file.py +11 -11
- osi_dump/util/excel_autosize_column.py +39 -39
- osi_dump/util/excel_sort_sheet.py +35 -35
- osi_dump/util/export_data_excel.py +36 -36
- osi_dump/util/extract_hostname.py +5 -5
- osi_dump/util/openstack_util.py +48 -48
- osi_dump/util/panda_excel.py +26 -26
- osi_dump/util/validate_dir_path.py +20 -20
- {osi_dump-0.1.3.3.4.2.dist-info → osi_dump-0.1.4.dist-info}/METADATA +40 -40
- osi_dump-0.1.4.dist-info/RECORD +130 -0
- {osi_dump-0.1.3.3.4.2.dist-info → osi_dump-0.1.4.dist-info}/WHEEL +1 -1
- osi_dump-0.1.3.3.4.2.dist-info/RECORD +0 -124
- {osi_dump-0.1.3.3.4.2.dist-info → osi_dump-0.1.4.dist-info}/entry_points.txt +0 -0
- {osi_dump-0.1.3.3.4.2.dist-info → osi_dump-0.1.4.dist-info}/top_level.txt +0 -0
@@ -1,7 +1,7 @@
|
|
1
|
-
from abc import ABC, abstractmethod
|
2
|
-
|
3
|
-
|
4
|
-
class FlavorExporter(ABC):
|
5
|
-
@abstractmethod
|
6
|
-
def export_flavors(self, flavors, output_file: str):
|
7
|
-
pass
|
1
|
+
from abc import ABC, abstractmethod
|
2
|
+
|
3
|
+
|
4
|
+
class FlavorExporter(ABC):
|
5
|
+
@abstractmethod
|
6
|
+
def export_flavors(self, flavors, output_file: str):
|
7
|
+
pass
|
@@ -1,30 +1,30 @@
|
|
1
|
-
import logging
|
2
|
-
|
3
|
-
from openpyxl import load_workbook
|
4
|
-
import pandas as pd
|
5
|
-
|
6
|
-
|
7
|
-
from osi_dump.exporter.floating_ip.floating_ip_exporter import FloatingIPExporter
|
8
|
-
|
9
|
-
from osi_dump.model.floating_ip import FloatingIP
|
10
|
-
|
11
|
-
from osi_dump import util
|
12
|
-
|
13
|
-
logger = logging.getLogger(__name__)
|
14
|
-
|
15
|
-
|
16
|
-
class ExcelFloatingIPExporter(FloatingIPExporter):
|
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_floating_ips(self, floating_ips: list[FloatingIP]):
|
22
|
-
df = pd.DataFrame([floating_ip.model_dump() for floating_ip in floating_ips])
|
23
|
-
|
24
|
-
logger.info(f"Exporting floating ips for {self.sheet_name}")
|
25
|
-
try:
|
26
|
-
util.export_data_excel(self.output_file, sheet_name=self.sheet_name, df=df)
|
27
|
-
|
28
|
-
logger.info(f"Exported floating ips for {self.sheet_name}")
|
29
|
-
except Exception as e:
|
30
|
-
logger.warning(f"Exporting floating ips for {self.sheet_name} error: {e}")
|
1
|
+
import logging
|
2
|
+
|
3
|
+
from openpyxl import load_workbook
|
4
|
+
import pandas as pd
|
5
|
+
|
6
|
+
|
7
|
+
from osi_dump.exporter.floating_ip.floating_ip_exporter import FloatingIPExporter
|
8
|
+
|
9
|
+
from osi_dump.model.floating_ip import FloatingIP
|
10
|
+
|
11
|
+
from osi_dump import util
|
12
|
+
|
13
|
+
logger = logging.getLogger(__name__)
|
14
|
+
|
15
|
+
|
16
|
+
class ExcelFloatingIPExporter(FloatingIPExporter):
|
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_floating_ips(self, floating_ips: list[FloatingIP]):
|
22
|
+
df = pd.DataFrame([floating_ip.model_dump() for floating_ip in floating_ips])
|
23
|
+
|
24
|
+
logger.info(f"Exporting floating ips for {self.sheet_name}")
|
25
|
+
try:
|
26
|
+
util.export_data_excel(self.output_file, sheet_name=self.sheet_name, df=df)
|
27
|
+
|
28
|
+
logger.info(f"Exported floating ips for {self.sheet_name}")
|
29
|
+
except Exception as e:
|
30
|
+
logger.warning(f"Exporting floating ips for {self.sheet_name} error: {e}")
|
@@ -1,7 +1,7 @@
|
|
1
|
-
from abc import ABC, abstractmethod
|
2
|
-
|
3
|
-
|
4
|
-
class FloatingIPExporter(ABC):
|
5
|
-
@abstractmethod
|
6
|
-
def export_floating_ips(self, floating_ips, output_file: str):
|
7
|
-
pass
|
1
|
+
from abc import ABC, abstractmethod
|
2
|
+
|
3
|
+
|
4
|
+
class FloatingIPExporter(ABC):
|
5
|
+
@abstractmethod
|
6
|
+
def export_floating_ips(self, floating_ips, output_file: str):
|
7
|
+
pass
|
@@ -1,32 +1,32 @@
|
|
1
|
-
import logging
|
2
|
-
|
3
|
-
from openpyxl import load_workbook
|
4
|
-
import pandas as pd
|
5
|
-
|
6
|
-
|
7
|
-
from osi_dump.exporter.hypervisor.hypervisor_exporter import HypervisorExporter
|
8
|
-
|
9
|
-
from osi_dump.model.hypervisor import Hypervisor
|
10
|
-
|
11
|
-
from osi_dump import util
|
12
|
-
|
13
|
-
logger = logging.getLogger(__name__)
|
14
|
-
|
15
|
-
|
16
|
-
class ExcelHypervisorExporter(HypervisorExporter):
|
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_hypervisors(self, hypervisors: list[Hypervisor]):
|
22
|
-
df = pd.DataFrame([hypervisor.model_dump() for hypervisor in hypervisors])
|
23
|
-
|
24
|
-
df = util.expand_list_column(df, "aggregates")
|
25
|
-
|
26
|
-
logger.info(f"Exporting hypervisors 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 hypervisors for {self.sheet_name}")
|
31
|
-
except Exception as e:
|
32
|
-
logger.warning(f"Exporting hypervisors for {self.sheet_name} error: {e}")
|
1
|
+
import logging
|
2
|
+
|
3
|
+
from openpyxl import load_workbook
|
4
|
+
import pandas as pd
|
5
|
+
|
6
|
+
|
7
|
+
from osi_dump.exporter.hypervisor.hypervisor_exporter import HypervisorExporter
|
8
|
+
|
9
|
+
from osi_dump.model.hypervisor import Hypervisor
|
10
|
+
|
11
|
+
from osi_dump import util
|
12
|
+
|
13
|
+
logger = logging.getLogger(__name__)
|
14
|
+
|
15
|
+
|
16
|
+
class ExcelHypervisorExporter(HypervisorExporter):
|
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_hypervisors(self, hypervisors: list[Hypervisor]):
|
22
|
+
df = pd.DataFrame([hypervisor.model_dump() for hypervisor in hypervisors])
|
23
|
+
|
24
|
+
df = util.expand_list_column(df, "aggregates")
|
25
|
+
|
26
|
+
logger.info(f"Exporting hypervisors 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 hypervisors for {self.sheet_name}")
|
31
|
+
except Exception as e:
|
32
|
+
logger.warning(f"Exporting hypervisors for {self.sheet_name} error: {e}")
|
@@ -1,7 +1,7 @@
|
|
1
|
-
from abc import ABC, abstractmethod
|
2
|
-
|
3
|
-
|
4
|
-
class HypervisorExporter(ABC):
|
5
|
-
@abstractmethod
|
6
|
-
def export_hypervisors(self, hypervisors, output_file: str):
|
7
|
-
pass
|
1
|
+
from abc import ABC, abstractmethod
|
2
|
+
|
3
|
+
|
4
|
+
class HypervisorExporter(ABC):
|
5
|
+
@abstractmethod
|
6
|
+
def export_hypervisors(self, hypervisors, output_file: str):
|
7
|
+
pass
|
@@ -1,28 +1,28 @@
|
|
1
|
-
import pandas as pd
|
2
|
-
|
3
|
-
import logging
|
4
|
-
|
5
|
-
|
6
|
-
from osi_dump import util
|
7
|
-
from osi_dump.exporter.image.image_exporter import ImageExporter
|
8
|
-
|
9
|
-
from osi_dump.model.image import Image
|
10
|
-
|
11
|
-
logger = logging.getLogger(__name__)
|
12
|
-
|
13
|
-
|
14
|
-
class ExcelImageExporter(ImageExporter):
|
15
|
-
def __init__(self, sheet_name: str, output_file: str):
|
16
|
-
self.sheet_name = sheet_name
|
17
|
-
self.output_file = output_file
|
18
|
-
|
19
|
-
def export_images(self, images: list[Image]):
|
20
|
-
df = pd.json_normalize([image.model_dump() for image in images])
|
21
|
-
|
22
|
-
logger.info(f"Exporting images for {self.sheet_name}")
|
23
|
-
try:
|
24
|
-
util.export_data_excel(self.output_file, sheet_name=self.sheet_name, df=df)
|
25
|
-
|
26
|
-
logger.info(f"Exported images for {self.sheet_name}")
|
27
|
-
except Exception as e:
|
28
|
-
logger.warning(f"Exporting images for {self.sheet_name} error: {e}")
|
1
|
+
import pandas as pd
|
2
|
+
|
3
|
+
import logging
|
4
|
+
|
5
|
+
|
6
|
+
from osi_dump import util
|
7
|
+
from osi_dump.exporter.image.image_exporter import ImageExporter
|
8
|
+
|
9
|
+
from osi_dump.model.image import Image
|
10
|
+
|
11
|
+
logger = logging.getLogger(__name__)
|
12
|
+
|
13
|
+
|
14
|
+
class ExcelImageExporter(ImageExporter):
|
15
|
+
def __init__(self, sheet_name: str, output_file: str):
|
16
|
+
self.sheet_name = sheet_name
|
17
|
+
self.output_file = output_file
|
18
|
+
|
19
|
+
def export_images(self, images: list[Image]):
|
20
|
+
df = pd.json_normalize([image.model_dump() for image in images])
|
21
|
+
|
22
|
+
logger.info(f"Exporting images for {self.sheet_name}")
|
23
|
+
try:
|
24
|
+
util.export_data_excel(self.output_file, sheet_name=self.sheet_name, df=df)
|
25
|
+
|
26
|
+
logger.info(f"Exported images for {self.sheet_name}")
|
27
|
+
except Exception as e:
|
28
|
+
logger.warning(f"Exporting images for {self.sheet_name} error: {e}")
|
@@ -1,7 +1,7 @@
|
|
1
|
-
from abc import ABC, abstractmethod
|
2
|
-
|
3
|
-
|
4
|
-
class ImageExporter(ABC):
|
5
|
-
@abstractmethod
|
6
|
-
def export_images(self, images, output_file: str):
|
7
|
-
pass
|
1
|
+
from abc import ABC, abstractmethod
|
2
|
+
|
3
|
+
|
4
|
+
class ImageExporter(ABC):
|
5
|
+
@abstractmethod
|
6
|
+
def export_images(self, images, output_file: str):
|
7
|
+
pass
|
@@ -1,29 +1,29 @@
|
|
1
|
-
import pandas as pd
|
2
|
-
|
3
|
-
import
|
4
|
-
|
5
|
-
from
|
6
|
-
|
7
|
-
from osi_dump import
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
def
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
logger.info(f"Exported instances for {self.sheet_name}")
|
28
|
-
except Exception as e:
|
29
|
-
logger.warning(f"Exporting instances for {self.sheet_name} error: {e}")
|
1
|
+
import pandas as pd
|
2
|
+
import logging
|
3
|
+
from typing import Generator
|
4
|
+
|
5
|
+
from osi_dump import util
|
6
|
+
from osi_dump.exporter.instance.instance_exporter import InstanceExporter
|
7
|
+
from osi_dump.model.instance import Instance
|
8
|
+
|
9
|
+
logger = logging.getLogger(__name__)
|
10
|
+
|
11
|
+
class ExcelInstanceExporter(InstanceExporter):
|
12
|
+
def __init__(self, sheet_name: str, output_file: str):
|
13
|
+
self.sheet_name = sheet_name
|
14
|
+
self.output_file = output_file
|
15
|
+
|
16
|
+
def export_instances(self, instances: Generator[Instance, None, None]):
|
17
|
+
df = pd.DataFrame(instance.model_dump() for instance in instances)
|
18
|
+
|
19
|
+
if df.empty:
|
20
|
+
logger.info(f"No instances to export for {self.sheet_name}")
|
21
|
+
return
|
22
|
+
df.sort_values(by='instance_name', inplace=True, na_position='last')
|
23
|
+
|
24
|
+
logger.info(f"Exporting instances for {self.sheet_name}")
|
25
|
+
try:
|
26
|
+
util.export_data_excel(self.output_file, sheet_name=self.sheet_name, df=df)
|
27
|
+
logger.info(f"Exported instances for {self.sheet_name}")
|
28
|
+
except Exception as e:
|
29
|
+
logger.warning(f"Exporting instances for {self.sheet_name} error: {e}")
|
@@ -1,7 +1,8 @@
|
|
1
|
-
from abc import ABC, abstractmethod
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
1
|
+
from abc import ABC, abstractmethod
|
2
|
+
from typing import Generator
|
3
|
+
from osi_dump.model.instance import Instance
|
4
|
+
|
5
|
+
class InstanceExporter(ABC):
|
6
|
+
@abstractmethod
|
7
|
+
def export_instances(self, instances: Generator[Instance, None, None]):
|
8
|
+
pass
|
@@ -1,36 +1,36 @@
|
|
1
|
-
import pandas as pd
|
2
|
-
|
3
|
-
import logging
|
4
|
-
|
5
|
-
|
6
|
-
from osi_dump import util
|
7
|
-
|
8
|
-
from osi_dump.exporter.load_balancer.load_balancer_exporter import (
|
9
|
-
LoadBalancerExporter,
|
10
|
-
)
|
11
|
-
|
12
|
-
from osi_dump.model.load_balancer import LoadBalancer
|
13
|
-
|
14
|
-
logger = logging.getLogger(__name__)
|
15
|
-
|
16
|
-
|
17
|
-
class ExcelLoadBalancerExporter(LoadBalancerExporter):
|
18
|
-
def __init__(self, sheet_name: str, output_file: str):
|
19
|
-
self.sheet_name = sheet_name
|
20
|
-
self.output_file = output_file
|
21
|
-
|
22
|
-
def export_load_balancers(self, load_balancers: list[LoadBalancer]):
|
23
|
-
df = pd.json_normalize(
|
24
|
-
[load_balancer.model_dump() for load_balancer in load_balancers]
|
25
|
-
)
|
26
|
-
|
27
|
-
if "amphoraes" in df.columns:
|
28
|
-
df = util.expand_list_column(df, "amphoraes")
|
29
|
-
|
30
|
-
logger.info(f"Exporting load_balancers for {self.sheet_name}")
|
31
|
-
try:
|
32
|
-
util.export_data_excel(self.output_file, sheet_name=self.sheet_name, df=df)
|
33
|
-
|
34
|
-
logger.info(f"Exported load_balancers for {self.sheet_name}")
|
35
|
-
except Exception as e:
|
36
|
-
logger.warning(f"Exporting load_balancers for {self.sheet_name} error: {e}")
|
1
|
+
import pandas as pd
|
2
|
+
|
3
|
+
import logging
|
4
|
+
|
5
|
+
|
6
|
+
from osi_dump import util
|
7
|
+
|
8
|
+
from osi_dump.exporter.load_balancer.load_balancer_exporter import (
|
9
|
+
LoadBalancerExporter,
|
10
|
+
)
|
11
|
+
|
12
|
+
from osi_dump.model.load_balancer import LoadBalancer
|
13
|
+
|
14
|
+
logger = logging.getLogger(__name__)
|
15
|
+
|
16
|
+
|
17
|
+
class ExcelLoadBalancerExporter(LoadBalancerExporter):
|
18
|
+
def __init__(self, sheet_name: str, output_file: str):
|
19
|
+
self.sheet_name = sheet_name
|
20
|
+
self.output_file = output_file
|
21
|
+
|
22
|
+
def export_load_balancers(self, load_balancers: list[LoadBalancer]):
|
23
|
+
df = pd.json_normalize(
|
24
|
+
[load_balancer.model_dump() for load_balancer in load_balancers]
|
25
|
+
)
|
26
|
+
|
27
|
+
if "amphoraes" in df.columns:
|
28
|
+
df = util.expand_list_column(df, "amphoraes")
|
29
|
+
|
30
|
+
logger.info(f"Exporting load_balancers for {self.sheet_name}")
|
31
|
+
try:
|
32
|
+
util.export_data_excel(self.output_file, sheet_name=self.sheet_name, df=df)
|
33
|
+
|
34
|
+
logger.info(f"Exported load_balancers for {self.sheet_name}")
|
35
|
+
except Exception as e:
|
36
|
+
logger.warning(f"Exporting load_balancers for {self.sheet_name} error: {e}")
|
@@ -1,7 +1,7 @@
|
|
1
|
-
from abc import ABC, abstractmethod
|
2
|
-
|
3
|
-
|
4
|
-
class LoadBalancerExporter(ABC):
|
5
|
-
@abstractmethod
|
6
|
-
def export_load_balancers(self, load_balancers, output_file: str):
|
7
|
-
pass
|
1
|
+
from abc import ABC, abstractmethod
|
2
|
+
|
3
|
+
|
4
|
+
class LoadBalancerExporter(ABC):
|
5
|
+
@abstractmethod
|
6
|
+
def export_load_balancers(self, load_balancers, output_file: str):
|
7
|
+
pass
|
@@ -1,32 +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}")
|
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}")
|
@@ -1,7 +1,7 @@
|
|
1
|
-
from abc import ABC, abstractmethod
|
2
|
-
|
3
|
-
|
4
|
-
class NetworkExporter(ABC):
|
5
|
-
@abstractmethod
|
6
|
-
def export_networks(self, networks, output_file: str):
|
7
|
-
pass
|
1
|
+
from abc import ABC, abstractmethod
|
2
|
+
|
3
|
+
|
4
|
+
class NetworkExporter(ABC):
|
5
|
+
@abstractmethod
|
6
|
+
def export_networks(self, networks, output_file: str):
|
7
|
+
pass
|
@@ -1,30 +1,30 @@
|
|
1
|
-
import pandas as pd
|
2
|
-
|
3
|
-
import logging
|
4
|
-
|
5
|
-
from openpyxl import load_workbook
|
6
|
-
|
7
|
-
from osi_dump import util
|
8
|
-
from osi_dump.exporter.project.project_exporter import ProjectExporter
|
9
|
-
|
10
|
-
from osi_dump.model.project import Project
|
11
|
-
|
12
|
-
logger = logging.getLogger(__name__)
|
13
|
-
|
14
|
-
|
15
|
-
class ExcelProjectExporter(ProjectExporter):
|
16
|
-
def __init__(self, sheet_name: str, output_file: str):
|
17
|
-
self.sheet_name = sheet_name
|
18
|
-
self.output_file = output_file
|
19
|
-
|
20
|
-
def export_projects(self, projects: list[Project]):
|
21
|
-
|
22
|
-
df = pd.DataFrame([project.model_dump() for project in projects])
|
23
|
-
|
24
|
-
logger.info(f"Exporting projects for {self.sheet_name}")
|
25
|
-
try:
|
26
|
-
util.export_data_excel(self.output_file, sheet_name=self.sheet_name, df=df)
|
27
|
-
|
28
|
-
logger.info(f"Exported projects for {self.sheet_name}")
|
29
|
-
except Exception as e:
|
30
|
-
logger.warning(f"Exporting projects for {self.sheet_name} error: {e}")
|
1
|
+
import pandas as pd
|
2
|
+
|
3
|
+
import logging
|
4
|
+
|
5
|
+
from openpyxl import load_workbook
|
6
|
+
|
7
|
+
from osi_dump import util
|
8
|
+
from osi_dump.exporter.project.project_exporter import ProjectExporter
|
9
|
+
|
10
|
+
from osi_dump.model.project import Project
|
11
|
+
|
12
|
+
logger = logging.getLogger(__name__)
|
13
|
+
|
14
|
+
|
15
|
+
class ExcelProjectExporter(ProjectExporter):
|
16
|
+
def __init__(self, sheet_name: str, output_file: str):
|
17
|
+
self.sheet_name = sheet_name
|
18
|
+
self.output_file = output_file
|
19
|
+
|
20
|
+
def export_projects(self, projects: list[Project]):
|
21
|
+
|
22
|
+
df = pd.DataFrame([project.model_dump() for project in projects])
|
23
|
+
|
24
|
+
logger.info(f"Exporting projects for {self.sheet_name}")
|
25
|
+
try:
|
26
|
+
util.export_data_excel(self.output_file, sheet_name=self.sheet_name, df=df)
|
27
|
+
|
28
|
+
logger.info(f"Exported projects for {self.sheet_name}")
|
29
|
+
except Exception as e:
|
30
|
+
logger.warning(f"Exporting projects for {self.sheet_name} error: {e}")
|
@@ -1,7 +1,7 @@
|
|
1
|
-
from abc import ABC, abstractmethod
|
2
|
-
|
3
|
-
|
4
|
-
class ProjectExporter(ABC):
|
5
|
-
@abstractmethod
|
6
|
-
def export_projects(self, projects, output_file: str):
|
7
|
-
pass
|
1
|
+
from abc import ABC, abstractmethod
|
2
|
+
|
3
|
+
|
4
|
+
class ProjectExporter(ABC):
|
5
|
+
@abstractmethod
|
6
|
+
def export_projects(self, projects, output_file: str):
|
7
|
+
pass
|
@@ -1,35 +1,43 @@
|
|
1
|
-
import
|
2
|
-
|
3
|
-
import
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
)
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
)
|
1
|
+
import logging
|
2
|
+
import pandas as pd
|
3
|
+
from osi_dump import util
|
4
|
+
from .role_assignment_exporter import RoleAssignmentExporter
|
5
|
+
from osi_dump.importer.role_assignment.role_assignment_importer import RoleAssignmentImporter
|
6
|
+
|
7
|
+
logger = logging.getLogger(__name__)
|
8
|
+
|
9
|
+
class ExcelRoleAssignmentExporter(RoleAssignmentExporter):
|
10
|
+
def __init__(self, sheet_name_prefix: str, output_file: str):
|
11
|
+
self.sheet_name_prefix = sheet_name_prefix
|
12
|
+
self.output_file = output_file
|
13
|
+
|
14
|
+
def export_role_assignments(self, importer: RoleAssignmentImporter):
|
15
|
+
# Sheet 1: User Effective Roles
|
16
|
+
df_effective = pd.json_normalize(
|
17
|
+
(role.model_dump() for role in importer.calculate_effective_roles())
|
18
|
+
)
|
19
|
+
if not df_effective.empty:
|
20
|
+
df_effective.sort_values(by=['user_name', 'role_name'], inplace=True)
|
21
|
+
self._export_to_sheet(df_effective, f"{self.sheet_name_prefix}-effective")
|
22
|
+
|
23
|
+
# Sheet 2: Raw User Roles
|
24
|
+
df_user = pd.json_normalize(
|
25
|
+
(role.model_dump() for role in importer.get_user_roles())
|
26
|
+
)
|
27
|
+
if not df_user.empty:
|
28
|
+
self._export_to_sheet(df_user, f"{self.sheet_name_prefix}-user")
|
29
|
+
|
30
|
+
# Sheet 3: Raw Group Roles
|
31
|
+
df_group = pd.json_normalize(
|
32
|
+
(role.model_dump() for role in importer.get_group_roles())
|
33
|
+
)
|
34
|
+
if not df_group.empty:
|
35
|
+
self._export_to_sheet(df_group, f"{self.sheet_name_prefix}-group")
|
36
|
+
|
37
|
+
def _export_to_sheet(self, df: pd.DataFrame, sheet_name: str):
|
38
|
+
logger.info(f"Exporting data to sheet: {sheet_name}")
|
39
|
+
try:
|
40
|
+
util.export_data_excel(self.output_file, sheet_name=sheet_name, df=df)
|
41
|
+
logger.info(f"Exported data to sheet: {sheet_name}")
|
42
|
+
except Exception as e:
|
43
|
+
logger.warning(f"Exporting to {sheet_name} error: {e}")
|