Skip to content

Commit

Permalink
fix: Run storage balancing only on support shared storages and when r…
Browse files Browse the repository at this point in the history
…eally needed.

Fixes: #79
  • Loading branch information
gyptazy committed Sep 13, 2024
1 parent 029ec31 commit d53a6f6
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 3 deletions.
3 changes: 3 additions & 0 deletions .changelogs/1.0.4/79_storage_balancing_whitelist.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
changed:
- Run storage balancing only on supported shared storages. [#79]
- Run storage balancing only when needed to save time. [#79]
1 change: 1 addition & 0 deletions .changelogs/1.0.4/release_meta.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
date: TBD
10 changes: 7 additions & 3 deletions proxlb
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ import urllib3

# Constants
__appname__ = "ProxLB"
__version__ = "1.0.3b"
__version__ = "1.0.4b"
__config_version__ = 3
__author__ = "Florian Paul Azim Hoberg <[email protected]> @gyptazy"
__errors__ = False
Expand Down Expand Up @@ -680,6 +680,7 @@ def update_node_statistics(node_statistics, vm_statistics):
def get_storage_statistics(api_object):
""" Get statistics of all storage in the cluster. """
info_prefix = 'Info: [storage-statistics]:'
storage_whitelist = ['nfs']
storage_statistics = {}

for node in api_object.nodes.get():
Expand All @@ -688,7 +689,7 @@ def get_storage_statistics(api_object):

# Only add enabled and active storage repositories that might be suitable for further
# storage balancing.
if storage['enabled'] and storage['active'] and storage['shared']:
if storage['enabled'] and storage['active'] and storage['shared'] and storage['type'] in storage_whitelist:
storage_statistics[storage['storage']] = {}
storage_statistics[storage['storage']]['name'] = storage['storage']
storage_statistics[storage['storage']]['total'] = storage['total']
Expand Down Expand Up @@ -1477,7 +1478,10 @@ def main():
node_statistics = get_node_statistics(api_object, proxlb_config['vm_ignore_nodes'])
vm_statistics = get_vm_statistics(api_object, proxlb_config['vm_ignore_vms'], proxlb_config['vm_balancing_type'])
node_statistics = update_node_statistics(node_statistics, vm_statistics)
storage_statistics = get_storage_statistics(api_object)
# Obtaining metrics for the storage may take longer times and is not needed for VM/CT balancing.
# We can save time by skipping this when not really needed.
if proxlb_config['storage_balancing_enable']:
storage_statistics = get_storage_statistics(api_object)

# Execute VM/CT balancing sub-routines.
if proxlb_config['vm_balancing_enable'] or app_args.best_node:
Expand Down

0 comments on commit d53a6f6

Please sign in to comment.