mirror of
https://github.com/ansible/awx.git
synced 2026-01-23 07:28:02 -03:30
Merge pull request #1544 from matburt/sorting_region_choices
Sort cloud regions in a stable way
This commit is contained in:
commit
b646e675d6
@ -38,7 +38,7 @@ from awx.main.models.notifications import (
|
||||
NotificationTemplate,
|
||||
JobNotificationMixin,
|
||||
)
|
||||
from awx.main.utils import _inventory_updates, get_ansible_version
|
||||
from awx.main.utils import _inventory_updates, get_ansible_version, region_sorting
|
||||
|
||||
|
||||
__all__ = ['Inventory', 'Host', 'Group', 'InventorySource', 'InventoryUpdate',
|
||||
@ -1136,7 +1136,7 @@ class InventorySourceOptions(BaseModel):
|
||||
label_parts.append(part)
|
||||
label = ' '.join(label_parts)
|
||||
regions.append((region.name, label))
|
||||
return regions
|
||||
return sorted(regions, key=region_sorting)
|
||||
|
||||
@classmethod
|
||||
def get_ec2_group_by_choices(cls):
|
||||
@ -1165,7 +1165,7 @@ class InventorySourceOptions(BaseModel):
|
||||
# authenticating first. Therefore, use a list from settings.
|
||||
regions = list(getattr(settings, 'GCE_REGION_CHOICES', []))
|
||||
regions.insert(0, ('all', 'All'))
|
||||
return regions
|
||||
return sorted(regions, key=region_sorting)
|
||||
|
||||
@classmethod
|
||||
def get_azure_rm_region_choices(self):
|
||||
@ -1178,7 +1178,7 @@ class InventorySourceOptions(BaseModel):
|
||||
# settings.
|
||||
regions = list(getattr(settings, 'AZURE_RM_REGION_CHOICES', []))
|
||||
regions.insert(0, ('all', 'All'))
|
||||
return regions
|
||||
return sorted(regions, key=region_sorting)
|
||||
|
||||
@classmethod
|
||||
def get_vmware_region_choices(self):
|
||||
|
||||
@ -174,3 +174,11 @@ def test_get_custom_venv_choices():
|
||||
with TemporaryDirectory(dir=settings.BASE_VENV_PATH) as temp_dir:
|
||||
os.makedirs(os.path.join(temp_dir, 'bin', 'activate'))
|
||||
assert common.get_custom_venv_choices() == [os.path.join(temp_dir, '')]
|
||||
|
||||
|
||||
def test_region_sorting():
|
||||
s = [('Huey', 'China1'),
|
||||
('Dewey', 'UK1'),
|
||||
('Lewie', 'US1'),
|
||||
('All', 'All')]
|
||||
assert [x[1] for x in sorted(s, key=common.region_sorting)] == ['All', 'US1', 'China1', 'UK1']
|
||||
|
||||
@ -44,7 +44,7 @@ logger = logging.getLogger('awx.main.utils')
|
||||
|
||||
__all__ = ['get_object_or_400', 'get_object_or_403', 'camelcase_to_underscore', 'memoize', 'memoize_delete',
|
||||
'get_ansible_version', 'get_ssh_version', 'get_licenser', 'get_awx_version', 'update_scm_url',
|
||||
'get_type_for_model', 'get_model_for_type', 'copy_model_by_class',
|
||||
'get_type_for_model', 'get_model_for_type', 'copy_model_by_class', 'region_sorting',
|
||||
'copy_m2m_relationships', 'prefetch_page_capabilities', 'to_python_boolean',
|
||||
'ignore_inventory_computed_fields', 'ignore_inventory_group_removal',
|
||||
'_inventory_updates', 'get_pk_from_dict', 'getattrd', 'NoDefaultProvided',
|
||||
@ -97,6 +97,14 @@ def to_python_boolean(value, allow_none=False):
|
||||
raise ValueError(_(u'Unable to convert "%s" to boolean') % six.text_type(value))
|
||||
|
||||
|
||||
def region_sorting(region):
|
||||
if region[1].lower() == 'all':
|
||||
return -1
|
||||
elif region[1].lower().startswith('us'):
|
||||
return 0
|
||||
return region[1]
|
||||
|
||||
|
||||
def camelcase_to_underscore(s):
|
||||
'''
|
||||
Convert CamelCase names to lowercase_with_underscore.
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user