Skip to content

Commit

Permalink
Create third dictionary to preserve current functionality and add fil…
Browse files Browse the repository at this point in the history
…e there
  • Loading branch information
djyasin committed Oct 22, 2024
1 parent 4a28229 commit 5a6a942
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 5 deletions.
6 changes: 3 additions & 3 deletions awx/api/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@
)

from awx.main.utils.filters import SmartFilter
from awx.main.utils.plugins import compute_cloud_inventory_sources
from awx.main.utils.plugins import return_inventory_source_options
from awx.main.utils.named_url_graph import reset_counters
from awx.main.scheduler.task_manager_models import TaskManagerModels
from awx.main.redact import UriCleaner, REPLACE_STR
Expand Down Expand Up @@ -2326,7 +2326,7 @@ class Meta:
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
if 'source' in self.fields:
self.fields['source'].choices = compute_cloud_inventory_sources() or {}
self.fields['source'].choices = return_inventory_source_options() or {}

def get_related(self, obj):
res = super(InventorySourceOptionsSerializer, self).get_related(obj)
Expand Down Expand Up @@ -5507,7 +5507,7 @@ def get_summary_fields(self, obj):
return summary_fields

def validate_unified_job_template(self, value):
if type(value) == InventorySource and value.source not in compute_cloud_inventory_sources():
if type(value) == InventorySource and value.source not in return_inventory_source_options():
raise serializers.ValidationError(_('Inventory Source must be a cloud resource.'))
elif type(value) == Project and value.scm_type == '':
raise serializers.ValidationError(_('Manual Project cannot have a schedule set.'))
Expand Down
18 changes: 16 additions & 2 deletions awx/main/utils/plugins.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,12 +30,26 @@ def discover_available_cloud_provider_plugin_names() -> list[str]:
@cache
def compute_cloud_inventory_sources() -> dict[str, str]:
"""Return a dictionary of cloud provider plugin names
available plus source control management.
available plus source control management and constructed.
:returns: Dictionary of plugin cloud names plus source control.
:rtype: dict[str, str]
"""

plugins = discover_available_cloud_provider_plugin_names()

return dict(zip(plugins, plugins), file='file', scm='scm', constructed='constructed')
return dict(zip(plugins, plugins), scm='scm', constructed='constructed')


@cache
def return_inventory_source_options() -> dict[str, str]:
"""Return a dictionary of cloud provider plugin names
plus file. File needed to be separate since it is needs to be consumed directly
by the serializer.
:returns: Dictionary of plugin cloud names plus source control.
:rtype: dict[str, str]
"""
plugins = compute_cloud_inventory_sources()

return dict(zip(plugins, plugins)) | dict(file='file')

0 comments on commit 5a6a942

Please sign in to comment.