osi-dump 0.1.3.3.3.9__tar.gz → 0.1.3.3.4.0__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 (129) hide show
  1. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/PKG-INFO +1 -1
  2. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/pyproject.toml +1 -1
  3. osi_dump-0.1.3.3.4.0/src/osi_dump/batch_handler/network_batch_handler.py +51 -0
  4. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/cli.py +12 -0
  5. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/exporter/flavor/excel_flavor_exporter.py +1 -1
  6. osi_dump-0.1.3.3.4.0/src/osi_dump/exporter/network/excel_network_exporter.py +32 -0
  7. osi_dump-0.1.3.3.4.0/src/osi_dump/exporter/network/network_exporter.py +7 -0
  8. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/importer/hypervisor/openstack_hypervisor_importer.py +17 -0
  9. osi_dump-0.1.3.3.4.0/src/osi_dump/importer/network/network_importer.py +9 -0
  10. osi_dump-0.1.3.3.4.0/src/osi_dump/importer/network/openstack_network_importer.py +94 -0
  11. osi_dump-0.1.3.3.4.0/src/osi_dump/model/__init__.py +0 -0
  12. osi_dump-0.1.3.3.4.0/src/osi_dump/model/network.py +26 -0
  13. osi_dump-0.1.3.3.4.0/src/osi_dump/os_connection/__init__.py +0 -0
  14. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump.egg-info/PKG-INFO +1 -1
  15. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump.egg-info/SOURCES.txt +8 -0
  16. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/README.md +0 -0
  17. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/setup.cfg +0 -0
  18. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/__init__.py +0 -0
  19. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/__main__.py +0 -0
  20. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/api/__init__.py +0 -0
  21. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/api/keystone.py +0 -0
  22. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/api/neutron.py +0 -0
  23. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/api/octavia.py +0 -0
  24. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/api/placement.py +0 -0
  25. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/batch_handler/__init__.py +0 -0
  26. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/batch_handler/external_port_batch_handler.py +0 -0
  27. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/batch_handler/flavor_batch_handler.py +0 -0
  28. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/batch_handler/floating_ip_batch_handler.py +0 -0
  29. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/batch_handler/hypervisor_batch_handler.py +0 -0
  30. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/batch_handler/image_batch_handler.py +0 -0
  31. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/batch_handler/instance_batch_handler.py +0 -0
  32. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/batch_handler/load_balancer_batch_handler.py +0 -0
  33. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/batch_handler/project_batch_handler.py +0 -0
  34. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/batch_handler/role_assignment_batch_handler.py +0 -0
  35. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/batch_handler/router_batch_handler.py +0 -0
  36. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/batch_handler/volume_batch_handler.py +0 -0
  37. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/exporter/__init__.py +0 -0
  38. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/exporter/external_port/__init__.py +0 -0
  39. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/exporter/external_port/excel_external_port_exporter.py +0 -0
  40. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/exporter/external_port/external_port_exporter.py +0 -0
  41. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/exporter/flavor/__init__.py +0 -0
  42. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/exporter/flavor/flavor_exporter.py +0 -0
  43. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/exporter/floating_ip/__init__.py +0 -0
  44. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/exporter/floating_ip/excel_floating_ip_exporter.py +0 -0
  45. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/exporter/floating_ip/floating_ip_exporter.py +0 -0
  46. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/exporter/hypervisor/__init__.py +0 -0
  47. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/exporter/hypervisor/excel_hypervisor_exporter.py +0 -0
  48. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/exporter/hypervisor/hypervisor_exporter.py +0 -0
  49. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/exporter/image/__init__.py +0 -0
  50. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/exporter/image/excel_image_exporter.py +0 -0
  51. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/exporter/image/image_exporter.py +0 -0
  52. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/exporter/instance/__init__.py +0 -0
  53. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/exporter/instance/excel_instance_exporter.py +0 -0
  54. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/exporter/instance/instance_exporter.py +0 -0
  55. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/exporter/load_balancer/__init__.py +0 -0
  56. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/exporter/load_balancer/excel_load_balancer_exporter.py +0 -0
  57. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/exporter/load_balancer/load_balancer_exporter.py +0 -0
  58. {osi_dump-0.1.3.3.3.9/src/osi_dump/exporter/project → osi_dump-0.1.3.3.4.0/src/osi_dump/exporter/network}/__init__.py +0 -0
  59. {osi_dump-0.1.3.3.3.9/src/osi_dump/exporter/role_assignment → osi_dump-0.1.3.3.4.0/src/osi_dump/exporter/project}/__init__.py +0 -0
  60. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/exporter/project/excel_project_exporter.py +0 -0
  61. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/exporter/project/project_exporter.py +0 -0
  62. {osi_dump-0.1.3.3.3.9/src/osi_dump/exporter/router → osi_dump-0.1.3.3.4.0/src/osi_dump/exporter/role_assignment}/__init__.py +0 -0
  63. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/exporter/role_assignment/excel_role_assignment_exporter.py +0 -0
  64. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/exporter/role_assignment/role_assignment_exporter.py +0 -0
  65. {osi_dump-0.1.3.3.3.9/src/osi_dump/exporter/volume → osi_dump-0.1.3.3.4.0/src/osi_dump/exporter/router}/__init__.py +0 -0
  66. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/exporter/router/excel_router_exporter.py +0 -0
  67. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/exporter/router/router_exporter.py +0 -0
  68. {osi_dump-0.1.3.3.3.9/src/osi_dump/importer/external_port → osi_dump-0.1.3.3.4.0/src/osi_dump/exporter/volume}/__init__.py +0 -0
  69. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/exporter/volume/excel_volume_exporter.py +0 -0
  70. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/exporter/volume/volume_exporter.py +0 -0
  71. {osi_dump-0.1.3.3.3.9/src/osi_dump/importer/flavor → osi_dump-0.1.3.3.4.0/src/osi_dump/importer/external_port}/__init__.py +0 -0
  72. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/importer/external_port/external_port_importer.py +0 -0
  73. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/importer/external_port/openstack_external_port_importer.py +0 -0
  74. {osi_dump-0.1.3.3.3.9/src/osi_dump/importer/floating_ip → osi_dump-0.1.3.3.4.0/src/osi_dump/importer/flavor}/__init__.py +0 -0
  75. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/importer/flavor/flavor_importer.py +0 -0
  76. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/importer/flavor/openstack_flavor_importer.py +0 -0
  77. {osi_dump-0.1.3.3.3.9/src/osi_dump/importer/hypervisor → osi_dump-0.1.3.3.4.0/src/osi_dump/importer/floating_ip}/__init__.py +0 -0
  78. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/importer/floating_ip/floating_ip_importer.py +0 -0
  79. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/importer/floating_ip/openstack_floating_ip_importer.py +0 -0
  80. {osi_dump-0.1.3.3.3.9/src/osi_dump/importer/image → osi_dump-0.1.3.3.4.0/src/osi_dump/importer/hypervisor}/__init__.py +0 -0
  81. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/importer/hypervisor/hypervisor_importer.py +0 -0
  82. {osi_dump-0.1.3.3.3.9/src/osi_dump/importer/instance → osi_dump-0.1.3.3.4.0/src/osi_dump/importer/image}/__init__.py +0 -0
  83. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/importer/image/image_importer.py +0 -0
  84. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/importer/image/openstack_image_importer.py +0 -0
  85. {osi_dump-0.1.3.3.3.9/src/osi_dump/importer/load_balancer → osi_dump-0.1.3.3.4.0/src/osi_dump/importer/instance}/__init__.py +0 -0
  86. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/importer/instance/instance_importer.py +0 -0
  87. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/importer/instance/openstack_instance_importer.py +0 -0
  88. {osi_dump-0.1.3.3.3.9/src/osi_dump/importer/project → osi_dump-0.1.3.3.4.0/src/osi_dump/importer/load_balancer}/__init__.py +0 -0
  89. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/importer/load_balancer/load_balancer_importer.py +0 -0
  90. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/importer/load_balancer/openstack_load_balancer_importer.py +0 -0
  91. {osi_dump-0.1.3.3.3.9/src/osi_dump/importer/role_assignment → osi_dump-0.1.3.3.4.0/src/osi_dump/importer/network}/__init__.py +0 -0
  92. {osi_dump-0.1.3.3.3.9/src/osi_dump/importer/router → osi_dump-0.1.3.3.4.0/src/osi_dump/importer/project}/__init__.py +0 -0
  93. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/importer/project/openstack_project_importer.py +0 -0
  94. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/importer/project/project_importer.py +0 -0
  95. {osi_dump-0.1.3.3.3.9/src/osi_dump/importer/volume → osi_dump-0.1.3.3.4.0/src/osi_dump/importer/role_assignment}/__init__.py +0 -0
  96. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/importer/role_assignment/openstack_role_assignment_importer.py +0 -0
  97. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/importer/role_assignment/role_assignment_importer.py +0 -0
  98. {osi_dump-0.1.3.3.3.9/src/osi_dump/model → osi_dump-0.1.3.3.4.0/src/osi_dump/importer/router}/__init__.py +0 -0
  99. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/importer/router/openstack_router_importer.py +0 -0
  100. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/importer/router/router_importer.py +0 -0
  101. {osi_dump-0.1.3.3.3.9/src/osi_dump/os_connection → osi_dump-0.1.3.3.4.0/src/osi_dump/importer/volume}/__init__.py +0 -0
  102. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/importer/volume/openstack_volume_importer.py +0 -0
  103. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/importer/volume/volume_importer.py +0 -0
  104. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/model/authentication_info.py +0 -0
  105. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/model/external_port.py +0 -0
  106. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/model/flavor.py +0 -0
  107. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/model/floating_ip.py +0 -0
  108. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/model/hypervisor.py +0 -0
  109. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/model/image.py +0 -0
  110. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/model/instance.py +0 -0
  111. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/model/load_balancer.py +0 -0
  112. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/model/project.py +0 -0
  113. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/model/role_assignment.py +0 -0
  114. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/model/router.py +0 -0
  115. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/model/volume.py +0 -0
  116. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/os_connection/get_connections.py +0 -0
  117. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/util/__init__.py +0 -0
  118. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/util/create_file.py +0 -0
  119. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/util/excel_autosize_column.py +0 -0
  120. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/util/excel_sort_sheet.py +0 -0
  121. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/util/export_data_excel.py +0 -0
  122. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/util/extract_hostname.py +0 -0
  123. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/util/openstack_util.py +0 -0
  124. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/util/panda_excel.py +0 -0
  125. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump/util/validate_dir_path.py +0 -0
  126. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump.egg-info/dependency_links.txt +0 -0
  127. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump.egg-info/entry_points.txt +0 -0
  128. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump.egg-info/requires.txt +0 -0
  129. {osi_dump-0.1.3.3.3.9 → osi_dump-0.1.3.3.4.0}/src/osi_dump.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: osi-dump
3
- Version: 0.1.3.3.3.9
3
+ Version: 0.1.3.3.4.0
4
4
  Summary: OpenStack information dump tool
5
5
  Author: TVKain
6
6
  License: Apache-2.0
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "osi-dump"
3
- version = "0.1.3.3.3.9"
3
+ version = "0.1.3.3.4.0"
4
4
  description = "OpenStack information dump tool"
5
5
  readme = "README.md"
6
6
  authors = [{ name = "TVKain" }]
@@ -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...")
@@ -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
 
@@ -178,6 +188,8 @@ def inner_main(file_path: str, output_path: str):
178
188
 
179
189
  _external_port(connections=connections, output_path=output_path)
180
190
 
191
+ _network(connections=connections, output_path=output_path)
192
+
181
193
  util.excel_autosize_column(output_path)
182
194
 
183
195
  util.excel_sort_sheet(output_path)
@@ -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 floating ips for {self.sheet_name} error: {e}")
30
+ logger.warning(f"Exporting flavors for {self.sheet_name} error: {e}")
@@ -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}")
@@ -0,0 +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
@@ -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:
@@ -0,0 +1,9 @@
1
+ from abc import ABC, abstractmethod
2
+
3
+ from osi_dump.model.network import Network
4
+
5
+
6
+ class NetworkImporter(ABC):
7
+ @abstractmethod
8
+ def import_networks(self) -> list[Network]:
9
+ pass
@@ -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
+
File without changes
@@ -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,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: osi-dump
3
- Version: 0.1.3.3.3.9
3
+ Version: 0.1.3.3.4.0
4
4
  Summary: OpenStack information dump tool
5
5
  Author: TVKain
6
6
  License: Apache-2.0
@@ -22,6 +22,7 @@ src/osi_dump/batch_handler/hypervisor_batch_handler.py
22
22
  src/osi_dump/batch_handler/image_batch_handler.py
23
23
  src/osi_dump/batch_handler/instance_batch_handler.py
24
24
  src/osi_dump/batch_handler/load_balancer_batch_handler.py
25
+ src/osi_dump/batch_handler/network_batch_handler.py
25
26
  src/osi_dump/batch_handler/project_batch_handler.py
26
27
  src/osi_dump/batch_handler/role_assignment_batch_handler.py
27
28
  src/osi_dump/batch_handler/router_batch_handler.py
@@ -48,6 +49,9 @@ src/osi_dump/exporter/instance/instance_exporter.py
48
49
  src/osi_dump/exporter/load_balancer/__init__.py
49
50
  src/osi_dump/exporter/load_balancer/excel_load_balancer_exporter.py
50
51
  src/osi_dump/exporter/load_balancer/load_balancer_exporter.py
52
+ src/osi_dump/exporter/network/__init__.py
53
+ src/osi_dump/exporter/network/excel_network_exporter.py
54
+ src/osi_dump/exporter/network/network_exporter.py
51
55
  src/osi_dump/exporter/project/__init__.py
52
56
  src/osi_dump/exporter/project/excel_project_exporter.py
53
57
  src/osi_dump/exporter/project/project_exporter.py
@@ -81,6 +85,9 @@ src/osi_dump/importer/instance/openstack_instance_importer.py
81
85
  src/osi_dump/importer/load_balancer/__init__.py
82
86
  src/osi_dump/importer/load_balancer/load_balancer_importer.py
83
87
  src/osi_dump/importer/load_balancer/openstack_load_balancer_importer.py
88
+ src/osi_dump/importer/network/__init__.py
89
+ src/osi_dump/importer/network/network_importer.py
90
+ src/osi_dump/importer/network/openstack_network_importer.py
84
91
  src/osi_dump/importer/project/__init__.py
85
92
  src/osi_dump/importer/project/openstack_project_importer.py
86
93
  src/osi_dump/importer/project/project_importer.py
@@ -102,6 +109,7 @@ src/osi_dump/model/hypervisor.py
102
109
  src/osi_dump/model/image.py
103
110
  src/osi_dump/model/instance.py
104
111
  src/osi_dump/model/load_balancer.py
112
+ src/osi_dump/model/network.py
105
113
  src/osi_dump/model/project.py
106
114
  src/osi_dump/model/role_assignment.py
107
115
  src/osi_dump/model/router.py
File without changes
File without changes