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.
Files changed (102) hide show
  1. osi_dump/__main__.py +4 -4
  2. osi_dump/api/keystone.py +70 -70
  3. osi_dump/api/neutron.py +65 -65
  4. osi_dump/api/octavia.py +94 -94
  5. osi_dump/api/placement.py +41 -41
  6. osi_dump/batch_handler/__init__.py +6 -5
  7. osi_dump/batch_handler/external_port_batch_handler.py +55 -55
  8. osi_dump/batch_handler/flavor_batch_handler.py +51 -51
  9. osi_dump/batch_handler/floating_ip_batch_handler.py +57 -57
  10. osi_dump/batch_handler/hypervisor_batch_handler.py +55 -55
  11. osi_dump/batch_handler/image_batch_handler.py +51 -51
  12. osi_dump/batch_handler/instance_batch_handler.py +46 -54
  13. osi_dump/batch_handler/load_balancer_batch_handler.py +59 -59
  14. osi_dump/batch_handler/network_batch_handler.py +51 -51
  15. osi_dump/batch_handler/project_batch_handler.py +51 -51
  16. osi_dump/batch_handler/role_assignment_batch_handler.py +38 -61
  17. osi_dump/batch_handler/router_batch_handler.py +49 -49
  18. osi_dump/batch_handler/security_group_batch_handler.py +37 -0
  19. osi_dump/batch_handler/volume_batch_handler.py +45 -45
  20. osi_dump/cli.py +267 -257
  21. osi_dump/exporter/external_port/excel_external_port_exporter.py +34 -34
  22. osi_dump/exporter/external_port/external_port_exporter.py +7 -7
  23. osi_dump/exporter/flavor/excel_flavor_exporter.py +30 -30
  24. osi_dump/exporter/flavor/flavor_exporter.py +7 -7
  25. osi_dump/exporter/floating_ip/excel_floating_ip_exporter.py +30 -30
  26. osi_dump/exporter/floating_ip/floating_ip_exporter.py +7 -7
  27. osi_dump/exporter/hypervisor/excel_hypervisor_exporter.py +32 -32
  28. osi_dump/exporter/hypervisor/hypervisor_exporter.py +7 -7
  29. osi_dump/exporter/image/excel_image_exporter.py +28 -28
  30. osi_dump/exporter/image/image_exporter.py +7 -7
  31. osi_dump/exporter/instance/excel_instance_exporter.py +29 -29
  32. osi_dump/exporter/instance/instance_exporter.py +8 -7
  33. osi_dump/exporter/load_balancer/excel_load_balancer_exporter.py +36 -36
  34. osi_dump/exporter/load_balancer/load_balancer_exporter.py +7 -7
  35. osi_dump/exporter/network/excel_network_exporter.py +32 -32
  36. osi_dump/exporter/network/network_exporter.py +7 -7
  37. osi_dump/exporter/project/excel_project_exporter.py +30 -30
  38. osi_dump/exporter/project/project_exporter.py +7 -7
  39. osi_dump/exporter/role_assignment/excel_role_assignment_exporter.py +43 -35
  40. osi_dump/exporter/role_assignment/role_assignment_exporter.py +7 -7
  41. osi_dump/exporter/router/excel_router_exporter.py +30 -30
  42. osi_dump/exporter/router/router_exporter.py +7 -7
  43. osi_dump/exporter/security_group/excel_security_group_exporter.py +35 -0
  44. osi_dump/exporter/security_group/security_group_exporter.py +8 -0
  45. osi_dump/exporter/volume/excel_volume_exporter.py +29 -29
  46. osi_dump/exporter/volume/volume_exporter.py +7 -7
  47. osi_dump/importer/external_port/external_port_importer.py +9 -9
  48. osi_dump/importer/external_port/openstack_external_port_importer.py +177 -177
  49. osi_dump/importer/flavor/flavor_importer.py +9 -9
  50. osi_dump/importer/flavor/openstack_flavor_importer.py +64 -64
  51. osi_dump/importer/floating_ip/floating_ip_importer.py +9 -9
  52. osi_dump/importer/floating_ip/openstack_floating_ip_importer.py +68 -68
  53. osi_dump/importer/hypervisor/hypervisor_importer.py +9 -9
  54. osi_dump/importer/hypervisor/openstack_hypervisor_importer.py +137 -137
  55. osi_dump/importer/image/image_importer.py +9 -9
  56. osi_dump/importer/image/openstack_image_importer.py +81 -81
  57. osi_dump/importer/instance/instance_importer.py +8 -9
  58. osi_dump/importer/instance/openstack_instance_importer.py +136 -136
  59. osi_dump/importer/load_balancer/load_balancer_importer.py +9 -9
  60. osi_dump/importer/load_balancer/openstack_load_balancer_importer.py +113 -113
  61. osi_dump/importer/network/network_importer.py +9 -9
  62. osi_dump/importer/network/openstack_network_importer.py +93 -93
  63. osi_dump/importer/project/openstack_project_importer.py +141 -141
  64. osi_dump/importer/project/project_importer.py +9 -9
  65. osi_dump/importer/role_assignment/openstack_role_assignment_importer.py +117 -141
  66. osi_dump/importer/role_assignment/role_assignment_importer.py +16 -9
  67. osi_dump/importer/router/openstack_router_importer.py +87 -87
  68. osi_dump/importer/router/router_importer.py +9 -9
  69. osi_dump/importer/security_group/openstack_security_group_importer.py +54 -0
  70. osi_dump/importer/security_group/security_group_importer.py +8 -0
  71. osi_dump/importer/volume/openstack_volume_importer.py +81 -81
  72. osi_dump/importer/volume/volume_importer.py +9 -9
  73. osi_dump/model/authentication_info.py +15 -15
  74. osi_dump/model/external_port.py +30 -30
  75. osi_dump/model/flavor.py +20 -20
  76. osi_dump/model/floating_ip.py +24 -24
  77. osi_dump/model/hypervisor.py +24 -24
  78. osi_dump/model/image.py +27 -27
  79. osi_dump/model/instance.py +29 -29
  80. osi_dump/model/load_balancer.py +26 -26
  81. osi_dump/model/network.py +25 -25
  82. osi_dump/model/project.py +33 -33
  83. osi_dump/model/role_assignment.py +30 -21
  84. osi_dump/model/router.py +23 -23
  85. osi_dump/model/security_group.py +22 -0
  86. osi_dump/model/volume.py +25 -25
  87. osi_dump/os_connection/get_connections.py +67 -67
  88. osi_dump/util/__init__.py +7 -7
  89. osi_dump/util/create_file.py +11 -11
  90. osi_dump/util/excel_autosize_column.py +39 -39
  91. osi_dump/util/excel_sort_sheet.py +35 -35
  92. osi_dump/util/export_data_excel.py +36 -36
  93. osi_dump/util/extract_hostname.py +5 -5
  94. osi_dump/util/openstack_util.py +48 -48
  95. osi_dump/util/panda_excel.py +26 -26
  96. osi_dump/util/validate_dir_path.py +20 -20
  97. {osi_dump-0.1.3.3.4.2.dist-info → osi_dump-0.1.4.dist-info}/METADATA +40 -40
  98. osi_dump-0.1.4.dist-info/RECORD +130 -0
  99. {osi_dump-0.1.3.3.4.2.dist-info → osi_dump-0.1.4.dist-info}/WHEEL +1 -1
  100. osi_dump-0.1.3.3.4.2.dist-info/RECORD +0 -124
  101. {osi_dump-0.1.3.3.4.2.dist-info → osi_dump-0.1.4.dist-info}/entry_points.txt +0 -0
  102. {osi_dump-0.1.3.3.4.2.dist-info → osi_dump-0.1.4.dist-info}/top_level.txt +0 -0
osi_dump/__main__.py CHANGED
@@ -1,4 +1,4 @@
1
- if __name__ == "__main__":
2
- from osi_dump.cli import app
3
-
4
- app()
1
+ if __name__ == "__main__":
2
+ from osi_dump.cli import app
3
+
4
+ app()
osi_dump/api/keystone.py CHANGED
@@ -1,71 +1,71 @@
1
- import logging
2
-
3
- from openstack.connection import Connection
4
- from openstack.identity.v3.service import Service
5
- from openstack.load_balancer.v2.load_balancer import LoadBalancer
6
-
7
- import osi_dump.util.openstack_util as os_util
8
-
9
- logger = logging.getLogger(__name__)
10
-
11
-
12
- def get_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
-
35
- def get_role_assignments(connection: Connection):
36
- keystone_endpoint = connection.endpoint_for(service_type="identity", interface="public")
37
-
38
- logger.info(keystone_endpoint)
39
-
40
- try:
41
- if "v3" not in keystone_endpoint:
42
- url = f"{keystone_endpoint}/v3/role_assignments?include_names"
43
- else:
44
- url = f"{keystone_endpoint}/role_assignments?include_names"
45
-
46
- logger.info(url)
47
- response = connection.session.get(url)
48
- except Exception as e:
49
- logger.info(e)
50
-
51
- if response is None:
52
- return []
53
-
54
- return response.json()['role_assignments']
55
-
56
- # keystone_endpoints = [connection.endpoint_for(service_type="keystone", interface="public")]
57
-
58
- # for endpoint in keystone_endpoints:
59
- # try:
60
- # url = f"{endpoint}/v3/role_assignments?include_names"
61
- # response = connection.session.get(url)
62
- # if response.status_code == 200:
63
- # break
64
- # except Exception as e:
65
- # logger.info(e)
66
-
67
- # if response is None:
68
- # return []
69
-
70
- # return response.json()['role_assignments']
1
+ import logging
2
+
3
+ from openstack.connection import Connection
4
+ from openstack.identity.v3.service import Service
5
+ from openstack.load_balancer.v2.load_balancer import LoadBalancer
6
+
7
+ import osi_dump.util.openstack_util as os_util
8
+
9
+ logger = logging.getLogger(__name__)
10
+
11
+
12
+ def get_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
+
35
+ def get_role_assignments(connection: Connection):
36
+ keystone_endpoint = connection.endpoint_for(service_type="identity", interface="public")
37
+
38
+ logger.info(keystone_endpoint)
39
+
40
+ try:
41
+ if "v3" not in keystone_endpoint:
42
+ url = f"{keystone_endpoint}/v3/role_assignments?include_names"
43
+ else:
44
+ url = f"{keystone_endpoint}/role_assignments?include_names"
45
+
46
+ logger.info(url)
47
+ response = connection.session.get(url)
48
+ except Exception as e:
49
+ logger.info(e)
50
+
51
+ if response is None:
52
+ return []
53
+
54
+ return response.json()['role_assignments']
55
+
56
+ # keystone_endpoints = [connection.endpoint_for(service_type="keystone", interface="public")]
57
+
58
+ # for endpoint in keystone_endpoints:
59
+ # try:
60
+ # url = f"{endpoint}/v3/role_assignments?include_names"
61
+ # response = connection.session.get(url)
62
+ # if response.status_code == 200:
63
+ # break
64
+ # except Exception as e:
65
+ # logger.info(e)
66
+
67
+ # if response is None:
68
+ # return []
69
+
70
+ # return response.json()['role_assignments']
71
71
 
osi_dump/api/neutron.py CHANGED
@@ -1,65 +1,65 @@
1
- import logging
2
-
3
- from openstack.connection import Connection
4
- from openstack.identity.v3.service import Service
5
- from openstack.load_balancer.v2.load_balancer import LoadBalancer
6
-
7
- import osi_dump.util.openstack_util as os_util
8
-
9
- logger = logging.getLogger(__name__)
10
-
11
-
12
- def get_floating_ip_project(connection: Connection, floating_ip_id: str):
13
- # neutron_endpoint = os_util.get_endpoint(
14
- # connection=connection, service_type="network", interface="public"
15
- # )
16
-
17
- neutron_endpoints = os_util.get_endpoints(
18
- connection=connection, service_type="network", interface="public"
19
- )
20
-
21
- response = None
22
-
23
- for endpoint in neutron_endpoints:
24
- try:
25
- url = f"{endpoint}/v2.0/floatingips/{floating_ip_id}?fields=project_id"
26
- response = connection.session.get(url)
27
- if response.status_code == 200:
28
- break
29
- except Exception as e:
30
- print(e)
31
-
32
- if response is None:
33
- return None
34
-
35
- return response.json()["floatingip"]["project_id"]
36
-
37
-
38
- def get_router_project(connection: Connection, router_id: str):
39
- # neutron_endpoint = os_util.get_endpoint(
40
- # connection=connection, service_type="network", interface="internal"
41
- # )
42
-
43
- neutron_endpoints = os_util.get_endpoints(
44
- connection=connection, service_type="network", interface="public"
45
- )
46
-
47
- response = None
48
-
49
- for endpoint in neutron_endpoints:
50
- try:
51
- url = f"{endpoint}/v2.0/routers/{router_id}?fields=project_id"
52
-
53
- response = connection.session.get(url)
54
-
55
- if response.status_code == 200:
56
- break
57
- except Exception as e:
58
- print(e)
59
-
60
- if response is None:
61
- return None
62
-
63
- data = response.json()
64
-
65
- return data["router"]["project_id"]
1
+ import logging
2
+
3
+ from openstack.connection import Connection
4
+ from openstack.identity.v3.service import Service
5
+ from openstack.load_balancer.v2.load_balancer import LoadBalancer
6
+
7
+ import osi_dump.util.openstack_util as os_util
8
+
9
+ logger = logging.getLogger(__name__)
10
+
11
+
12
+ def get_floating_ip_project(connection: Connection, floating_ip_id: str):
13
+ # neutron_endpoint = os_util.get_endpoint(
14
+ # connection=connection, service_type="network", interface="public"
15
+ # )
16
+
17
+ neutron_endpoints = os_util.get_endpoints(
18
+ connection=connection, service_type="network", interface="public"
19
+ )
20
+
21
+ response = None
22
+
23
+ for endpoint in neutron_endpoints:
24
+ try:
25
+ url = f"{endpoint}/v2.0/floatingips/{floating_ip_id}?fields=project_id"
26
+ response = connection.session.get(url)
27
+ if response.status_code == 200:
28
+ break
29
+ except Exception as e:
30
+ print(e)
31
+
32
+ if response is None:
33
+ return None
34
+
35
+ return response.json()["floatingip"]["project_id"]
36
+
37
+
38
+ def get_router_project(connection: Connection, router_id: str):
39
+ # neutron_endpoint = os_util.get_endpoint(
40
+ # connection=connection, service_type="network", interface="internal"
41
+ # )
42
+
43
+ neutron_endpoints = os_util.get_endpoints(
44
+ connection=connection, service_type="network", interface="public"
45
+ )
46
+
47
+ response = None
48
+
49
+ for endpoint in neutron_endpoints:
50
+ try:
51
+ url = f"{endpoint}/v2.0/routers/{router_id}?fields=project_id"
52
+
53
+ response = connection.session.get(url)
54
+
55
+ if response.status_code == 200:
56
+ break
57
+ except Exception as e:
58
+ print(e)
59
+
60
+ if response is None:
61
+ return None
62
+
63
+ data = response.json()
64
+
65
+ return data["router"]["project_id"]
osi_dump/api/octavia.py CHANGED
@@ -1,94 +1,94 @@
1
- from openstack.connection import Connection
2
- from openstack.identity.v3.service import Service
3
- from openstack.load_balancer.v2.load_balancer import LoadBalancer
4
-
5
-
6
- import osi_dump.util.openstack_util as os_util
7
-
8
-
9
- def get_load_balancer_flavor(connection: Connection, flavor_id: str) -> dict:
10
-
11
- if not flavor_id:
12
- return None
13
-
14
- octavia_endpoints = os_util.get_endpoints(
15
- connection=connection, service_type="load-balancer", interface="public"
16
- )
17
-
18
- response = None
19
-
20
- for endpoint in octavia_endpoints:
21
- try:
22
- url = f"{endpoint}/v2.0/lbaas/flavors/{flavor_id}"
23
- response = connection.session.get(url)
24
- if response.status_code == 200:
25
- break
26
- except Exception as e:
27
- print(e)
28
-
29
- if response is None:
30
- return None
31
-
32
- data = response.json()
33
-
34
- return data["flavor"]
35
-
36
- def get_load_balancers(connection: Connection) -> list[LoadBalancer]:
37
- # octavia_endpoint = os_util.get_endpoint(
38
- # connection=connection, service_type="load-balancer", interface="public"
39
- # )
40
-
41
- octavia_endpoints = os_util.get_endpoints(
42
- connection=connection, service_type="load-balancer", interface="public"
43
- )
44
-
45
- response = None
46
-
47
- for endpoint in octavia_endpoints:
48
- try:
49
- url = f"{endpoint}/v2.0/lbaas/loadbalancers"
50
- response = connection.session.get(url)
51
- if response.status_code == 200:
52
- break
53
- except Exception as e:
54
- print(e)
55
-
56
- if response is None:
57
- return None
58
-
59
- data = response.json()
60
-
61
- return data["loadbalancers"]
62
-
63
-
64
- def get_amphoraes(connection: Connection, load_balancer_id: str) -> list[dict]:
65
-
66
- # octavia_endpoint = os_util.get_endpoint(
67
- # connection=connection, service_type="load-balancer", interface="public"
68
- # )
69
-
70
- octavia_endpoints = os_util.get_endpoints(
71
- connection=connection, service_type="load-balancer", interface="public"
72
- )
73
-
74
- response = None
75
-
76
- for endpoint in octavia_endpoints:
77
- try:
78
- url = f"{endpoint}/v2/octavia/amphorae?load_balancer_id={load_balancer_id}&fields=status&fields=compute_id&fields=compute_flavor&fields=role"
79
- response = connection.session.get(url)
80
- if response.status_code == 200:
81
- break
82
- except Exception as e:
83
- print(e)
84
-
85
- if response is None:
86
- return None
87
-
88
- data = response.json()
89
-
90
- amphoraes = data["amphorae"]
91
-
92
- amphoraes = [dict(sorted(amphorae.items())) for amphorae in amphoraes]
93
-
94
- return amphoraes
1
+ from openstack.connection import Connection
2
+ from openstack.identity.v3.service import Service
3
+ from openstack.load_balancer.v2.load_balancer import LoadBalancer
4
+
5
+
6
+ import osi_dump.util.openstack_util as os_util
7
+
8
+
9
+ def get_load_balancer_flavor(connection: Connection, flavor_id: str) -> dict:
10
+
11
+ if not flavor_id:
12
+ return None
13
+
14
+ octavia_endpoints = os_util.get_endpoints(
15
+ connection=connection, service_type="load-balancer", interface="public"
16
+ )
17
+
18
+ response = None
19
+
20
+ for endpoint in octavia_endpoints:
21
+ try:
22
+ url = f"{endpoint}/v2.0/lbaas/flavors/{flavor_id}"
23
+ response = connection.session.get(url)
24
+ if response.status_code == 200:
25
+ break
26
+ except Exception as e:
27
+ print(e)
28
+
29
+ if response is None:
30
+ return None
31
+
32
+ data = response.json()
33
+
34
+ return data["flavor"]
35
+
36
+ def get_load_balancers(connection: Connection) -> list[LoadBalancer]:
37
+ # octavia_endpoint = os_util.get_endpoint(
38
+ # connection=connection, service_type="load-balancer", interface="public"
39
+ # )
40
+
41
+ octavia_endpoints = os_util.get_endpoints(
42
+ connection=connection, service_type="load-balancer", interface="public"
43
+ )
44
+
45
+ response = None
46
+
47
+ for endpoint in octavia_endpoints:
48
+ try:
49
+ url = f"{endpoint}/v2.0/lbaas/loadbalancers"
50
+ response = connection.session.get(url)
51
+ if response.status_code == 200:
52
+ break
53
+ except Exception as e:
54
+ print(e)
55
+
56
+ if response is None:
57
+ return None
58
+
59
+ data = response.json()
60
+
61
+ return data["loadbalancers"]
62
+
63
+
64
+ def get_amphoraes(connection: Connection, load_balancer_id: str) -> list[dict]:
65
+
66
+ # octavia_endpoint = os_util.get_endpoint(
67
+ # connection=connection, service_type="load-balancer", interface="public"
68
+ # )
69
+
70
+ octavia_endpoints = os_util.get_endpoints(
71
+ connection=connection, service_type="load-balancer", interface="public"
72
+ )
73
+
74
+ response = None
75
+
76
+ for endpoint in octavia_endpoints:
77
+ try:
78
+ url = f"{endpoint}/v2/octavia/amphorae?load_balancer_id={load_balancer_id}&fields=status&fields=compute_id&fields=compute_flavor&fields=role"
79
+ response = connection.session.get(url)
80
+ if response.status_code == 200:
81
+ break
82
+ except Exception as e:
83
+ print(e)
84
+
85
+ if response is None:
86
+ return None
87
+
88
+ data = response.json()
89
+
90
+ amphoraes = data["amphorae"]
91
+
92
+ amphoraes = [dict(sorted(amphorae.items())) for amphorae in amphoraes]
93
+
94
+ return amphoraes
osi_dump/api/placement.py CHANGED
@@ -1,41 +1,41 @@
1
- from openstack.connection import Connection
2
- from openstack.identity.v3.service import Service
3
-
4
- import osi_dump.util.openstack_util as os_util
5
-
6
-
7
- def get_usage(connection: Connection, resource_provider_id: str):
8
-
9
- # placement_endpoint = os_util.get_endpoint(
10
- # connection=connection, service_type="placement", interface="public"
11
- # )
12
-
13
- # url = f"{placement_endpoint}/resource_providers/{resource_provider_id}/usages"
14
-
15
- # response = connection.session.get(url)
16
-
17
- # data = response.json()
18
-
19
- # return data["usages"]
20
-
21
- placement_endpoints = os_util.get_endpoints(
22
- connection=connection, service_type="placement", interface="public"
23
- )
24
-
25
- response = None
26
-
27
- for endpoint in placement_endpoints:
28
- try:
29
- url = f"{endpoint}/resource_providers/{resource_provider_id}/usages"
30
- response = connection.session.get(url)
31
- if response.status_code == 200:
32
- break
33
- except Exception as e:
34
- print(e)
35
-
36
- if response is None:
37
- return None
38
-
39
- data = response.json()
40
-
41
- return data["usages"]
1
+ from openstack.connection import Connection
2
+ from openstack.identity.v3.service import Service
3
+
4
+ import osi_dump.util.openstack_util as os_util
5
+
6
+
7
+ def get_usage(connection: Connection, resource_provider_id: str):
8
+
9
+ # placement_endpoint = os_util.get_endpoint(
10
+ # connection=connection, service_type="placement", interface="public"
11
+ # )
12
+
13
+ # url = f"{placement_endpoint}/resource_providers/{resource_provider_id}/usages"
14
+
15
+ # response = connection.session.get(url)
16
+
17
+ # data = response.json()
18
+
19
+ # return data["usages"]
20
+
21
+ placement_endpoints = os_util.get_endpoints(
22
+ connection=connection, service_type="placement", interface="public"
23
+ )
24
+
25
+ response = None
26
+
27
+ for endpoint in placement_endpoints:
28
+ try:
29
+ url = f"{endpoint}/resource_providers/{resource_provider_id}/usages"
30
+ response = connection.session.get(url)
31
+ if response.status_code == 200:
32
+ break
33
+ except Exception as e:
34
+ print(e)
35
+
36
+ if response is None:
37
+ return None
38
+
39
+ data = response.json()
40
+
41
+ return data["usages"]
@@ -1,5 +1,6 @@
1
- from .instance_batch_handler import InstanceBatchHandler
2
- from .project_batch_handler import ProjectBatchHandler
3
- from .hypervisor_batch_handler import HypervisorBatchHandler
4
- from .floating_ip_batch_handler import FloatingIPBatchHandler
5
- from .volume_batch_handler import VolumeBatchHandler
1
+ from .instance_batch_handler import InstanceBatchHandler
2
+ from .project_batch_handler import ProjectBatchHandler
3
+ from .hypervisor_batch_handler import HypervisorBatchHandler
4
+ from .floating_ip_batch_handler import FloatingIPBatchHandler
5
+ from .volume_batch_handler import VolumeBatchHandler
6
+ from .security_group_batch_handler import SecurityGroupBatchHandler