mirror of
https://github.com/ansible/awx.git
synced 2026-01-09 23:12:08 -03:30
Fix lookup plugins sanity (#13238)
* fix pytz * fix NameError * fix tests and add sanity ignore files for import test until distutils replaced * change static method to regular method and update test to instantiate class
This commit is contained in:
parent
d07076b686
commit
71a6baccdb
@ -101,39 +101,39 @@ else:
|
||||
|
||||
|
||||
class LookupModule(LookupBase):
|
||||
frequencies = {
|
||||
'none': rrule.DAILY,
|
||||
'minute': rrule.MINUTELY,
|
||||
'hour': rrule.HOURLY,
|
||||
'day': rrule.DAILY,
|
||||
'week': rrule.WEEKLY,
|
||||
'month': rrule.MONTHLY,
|
||||
}
|
||||
|
||||
weekdays = {
|
||||
'monday': rrule.MO,
|
||||
'tuesday': rrule.TU,
|
||||
'wednesday': rrule.WE,
|
||||
'thursday': rrule.TH,
|
||||
'friday': rrule.FR,
|
||||
'saturday': rrule.SA,
|
||||
'sunday': rrule.SU,
|
||||
}
|
||||
|
||||
set_positions = {
|
||||
'first': 1,
|
||||
'second': 2,
|
||||
'third': 3,
|
||||
'fourth': 4,
|
||||
'last': -1,
|
||||
}
|
||||
|
||||
# plugin constructor
|
||||
def __init__(self, *args, **kwargs):
|
||||
if LIBRARY_IMPORT_ERROR:
|
||||
raise_from(AnsibleError('{0}'.format(LIBRARY_IMPORT_ERROR)), LIBRARY_IMPORT_ERROR)
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
self.frequencies = {
|
||||
'none': rrule.DAILY,
|
||||
'minute': rrule.MINUTELY,
|
||||
'hour': rrule.HOURLY,
|
||||
'day': rrule.DAILY,
|
||||
'week': rrule.WEEKLY,
|
||||
'month': rrule.MONTHLY,
|
||||
}
|
||||
|
||||
self.weekdays = {
|
||||
'monday': rrule.MO,
|
||||
'tuesday': rrule.TU,
|
||||
'wednesday': rrule.WE,
|
||||
'thursday': rrule.TH,
|
||||
'friday': rrule.FR,
|
||||
'saturday': rrule.SA,
|
||||
'sunday': rrule.SU,
|
||||
}
|
||||
|
||||
self.set_positions = {
|
||||
'first': 1,
|
||||
'second': 2,
|
||||
'third': 3,
|
||||
'fourth': 4,
|
||||
'last': -1,
|
||||
}
|
||||
|
||||
@staticmethod
|
||||
def parse_date_time(date_string):
|
||||
try:
|
||||
@ -149,14 +149,13 @@ class LookupModule(LookupBase):
|
||||
|
||||
return self.get_rrule(frequency, kwargs)
|
||||
|
||||
@staticmethod
|
||||
def get_rrule(frequency, kwargs):
|
||||
def get_rrule(self, frequency, kwargs):
|
||||
|
||||
if frequency not in LookupModule.frequencies:
|
||||
if frequency not in self.frequencies:
|
||||
raise AnsibleError('Frequency of {0} is invalid'.format(frequency))
|
||||
|
||||
rrule_kwargs = {
|
||||
'freq': LookupModule.frequencies[frequency],
|
||||
'freq': self.frequencies[frequency],
|
||||
'interval': kwargs.get('every', 1),
|
||||
}
|
||||
|
||||
@ -187,9 +186,9 @@ class LookupModule(LookupBase):
|
||||
days = []
|
||||
for day in kwargs['on_days'].split(','):
|
||||
day = day.strip()
|
||||
if day not in LookupModule.weekdays:
|
||||
raise AnsibleError('Parameter on_days must only contain values {0}'.format(', '.join(LookupModule.weekdays.keys())))
|
||||
days.append(LookupModule.weekdays[day])
|
||||
if day not in self.weekdays:
|
||||
raise AnsibleError('Parameter on_days must only contain values {0}'.format(', '.join(self.weekdays.keys())))
|
||||
days.append(self.weekdays[day])
|
||||
|
||||
rrule_kwargs['byweekday'] = days
|
||||
|
||||
@ -214,13 +213,13 @@ class LookupModule(LookupBase):
|
||||
except Exception as e:
|
||||
raise_from(AnsibleError('on_the parameter must be two words separated by a space'), e)
|
||||
|
||||
if weekday not in LookupModule.weekdays:
|
||||
if weekday not in self.weekdays:
|
||||
raise AnsibleError('Weekday portion of on_the parameter is not valid')
|
||||
if occurance not in LookupModule.set_positions:
|
||||
if occurance not in self.set_positions:
|
||||
raise AnsibleError('The first string of the on_the parameter is not valid')
|
||||
|
||||
rrule_kwargs['byweekday'] = LookupModule.weekdays[weekday]
|
||||
rrule_kwargs['bysetpos'] = LookupModule.set_positions[occurance]
|
||||
rrule_kwargs['byweekday'] = self.weekdays[weekday]
|
||||
rrule_kwargs['bysetpos'] = self.set_positions[occurance]
|
||||
|
||||
my_rule = rrule.rrule(**rrule_kwargs)
|
||||
|
||||
|
||||
@ -136,40 +136,44 @@ try:
|
||||
import pytz
|
||||
from dateutil import rrule
|
||||
except ImportError as imp_exc:
|
||||
raise_from(AnsibleError('{0}'.format(imp_exc)), imp_exc)
|
||||
LIBRARY_IMPORT_ERROR = imp_exc
|
||||
else:
|
||||
LIBRARY_IMPORT_ERROR = None
|
||||
|
||||
|
||||
class LookupModule(LookupBase):
|
||||
frequencies = {
|
||||
'none': rrule.DAILY,
|
||||
'minute': rrule.MINUTELY,
|
||||
'hour': rrule.HOURLY,
|
||||
'day': rrule.DAILY,
|
||||
'week': rrule.WEEKLY,
|
||||
'month': rrule.MONTHLY,
|
||||
}
|
||||
|
||||
weekdays = {
|
||||
'monday': rrule.MO,
|
||||
'tuesday': rrule.TU,
|
||||
'wednesday': rrule.WE,
|
||||
'thursday': rrule.TH,
|
||||
'friday': rrule.FR,
|
||||
'saturday': rrule.SA,
|
||||
'sunday': rrule.SU,
|
||||
}
|
||||
|
||||
set_positions = {
|
||||
'first': 1,
|
||||
'second': 2,
|
||||
'third': 3,
|
||||
'fourth': 4,
|
||||
'last': -1,
|
||||
}
|
||||
|
||||
# plugin constructor
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
if LIBRARY_IMPORT_ERROR:
|
||||
raise_from(AnsibleError('{0}'.format(LIBRARY_IMPORT_ERROR)), LIBRARY_IMPORT_ERROR)
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
self.frequencies = {
|
||||
'none': rrule.DAILY,
|
||||
'minute': rrule.MINUTELY,
|
||||
'hour': rrule.HOURLY,
|
||||
'day': rrule.DAILY,
|
||||
'week': rrule.WEEKLY,
|
||||
'month': rrule.MONTHLY,
|
||||
}
|
||||
|
||||
self.weekdays = {
|
||||
'monday': rrule.MO,
|
||||
'tuesday': rrule.TU,
|
||||
'wednesday': rrule.WE,
|
||||
'thursday': rrule.TH,
|
||||
'friday': rrule.FR,
|
||||
'saturday': rrule.SA,
|
||||
'sunday': rrule.SU,
|
||||
}
|
||||
|
||||
self.set_positions = {
|
||||
'first': 1,
|
||||
'second': 2,
|
||||
'third': 3,
|
||||
'fourth': 4,
|
||||
'last': -1,
|
||||
}
|
||||
|
||||
@staticmethod
|
||||
def parse_date_time(date_string):
|
||||
@ -260,11 +264,11 @@ class LookupModule(LookupBase):
|
||||
frequency = rule.get('frequency', None)
|
||||
if not frequency:
|
||||
raise AnsibleError("Rule {0} is missing a frequency".format(rule_number))
|
||||
if frequency not in LookupModule.frequencies:
|
||||
if frequency not in self.frequencies:
|
||||
raise AnsibleError('Frequency of rule {0} is invalid {1}'.format(rule_number, frequency))
|
||||
|
||||
rrule_kwargs = {
|
||||
'freq': LookupModule.frequencies[frequency],
|
||||
'freq': self.frequencies[frequency],
|
||||
'interval': rule.get('interval', 1),
|
||||
'dtstart': start_date,
|
||||
}
|
||||
@ -287,7 +291,7 @@ class LookupModule(LookupBase):
|
||||
)
|
||||
|
||||
if 'bysetpos' in rule:
|
||||
rrule_kwargs['bysetpos'] = self.process_list('bysetpos', rule, LookupModule.set_positions, rule_number)
|
||||
rrule_kwargs['bysetpos'] = self.process_list('bysetpos', rule, self.set_positions, rule_number)
|
||||
|
||||
if 'bymonth' in rule:
|
||||
rrule_kwargs['bymonth'] = self.process_integer('bymonth', rule, 1, 12, rule_number)
|
||||
@ -302,7 +306,7 @@ class LookupModule(LookupBase):
|
||||
rrule_kwargs['byweekno'] = self.process_integer('byweekno', rule, 1, 52, rule_number)
|
||||
|
||||
if 'byweekday' in rule:
|
||||
rrule_kwargs['byweekday'] = self.process_list('byweekday', rule, LookupModule.weekdays, rule_number)
|
||||
rrule_kwargs['byweekday'] = self.process_list('byweekday', rule, self.weekdays, rule_number)
|
||||
|
||||
if 'byhour' in rule:
|
||||
rrule_kwargs['byhour'] = self.process_integer('byhour', rule, 0, 23, rule_number)
|
||||
|
||||
@ -81,7 +81,7 @@ def test_delete_same_named_schedule(run_module, project, inventory, admin_user):
|
||||
],
|
||||
)
|
||||
def test_rrule_lookup_plugin(collection_import, freq, kwargs, expect):
|
||||
LookupModule = collection_import('plugins.lookup.schedule_rrule').LookupModule
|
||||
LookupModule = collection_import('plugins.lookup.schedule_rrule').LookupModule()
|
||||
generated_rule = LookupModule.get_rrule(freq, kwargs)
|
||||
assert generated_rule == expect
|
||||
rrule_checker = SchedulePreviewSerializer()
|
||||
@ -92,7 +92,7 @@ def test_rrule_lookup_plugin(collection_import, freq, kwargs, expect):
|
||||
|
||||
@pytest.mark.parametrize("freq", ('none', 'minute', 'hour', 'day', 'week', 'month'))
|
||||
def test_empty_schedule_rrule(collection_import, freq):
|
||||
LookupModule = collection_import('plugins.lookup.schedule_rrule').LookupModule
|
||||
LookupModule = collection_import('plugins.lookup.schedule_rrule').LookupModule()
|
||||
if freq == 'day':
|
||||
pfreq = 'DAILY'
|
||||
elif freq == 'none':
|
||||
@ -136,7 +136,7 @@ def test_empty_schedule_rrule(collection_import, freq):
|
||||
],
|
||||
)
|
||||
def test_rrule_lookup_plugin_failure(collection_import, freq, kwargs, msg):
|
||||
LookupModule = collection_import('plugins.lookup.schedule_rrule').LookupModule
|
||||
LookupModule = collection_import('plugins.lookup.schedule_rrule').LookupModule()
|
||||
with pytest.raises(AnsibleError) as e:
|
||||
assert LookupModule.get_rrule(freq, kwargs)
|
||||
assert msg in str(e.value)
|
||||
|
||||
88
awx_collection/tests/sanity/ignore-2.13.txt
Normal file
88
awx_collection/tests/sanity/ignore-2.13.txt
Normal file
@ -0,0 +1,88 @@
|
||||
plugins/module_utils/awxkit.py import-3.9
|
||||
plugins/module_utils/controller_api.py import-3.9
|
||||
plugins/modules/ad_hoc_command.py import-3.9
|
||||
plugins/modules/ad_hoc_command_cancel.py import-3.9
|
||||
plugins/modules/ad_hoc_command_wait.py import-3.9
|
||||
plugins/modules/application.py import-3.9
|
||||
plugins/modules/controller_meta.py import-3.9
|
||||
plugins/modules/credential.py import-3.92
|
||||
plugins/modules/credential_input_source.py import-3.9
|
||||
plugins/modules/credential_type.py import-3.9
|
||||
plugins/modules/execution_environment.py import-3.9
|
||||
plugins/modules/export.py import-3.9
|
||||
plugins/modules/group.py import-3.9
|
||||
plugins/modules/host.py import-3.9
|
||||
plugins/modules/import.py import-3.9
|
||||
plugins/modules/instance.py import-3.9
|
||||
plugins/modules/instance_group.py import-3.9
|
||||
plugins/modules/inventory.py import-3.9
|
||||
plugins/modules/inventory_source.py import-3.9
|
||||
plugins/modules/inventory_source_update.py import-3.9
|
||||
plugins/modules/job_cancel.py import-3.9
|
||||
plugins/modules/job_launch.py import-3.9
|
||||
plugins/modules/job_list.py import-3.9
|
||||
plugins/modules/job_template.py import-3.93
|
||||
plugins/modules/job_wait.py import-3.9
|
||||
plugins/modules/label.py import-3.9
|
||||
plugins/modules/license.py import-3.9
|
||||
plugins/modules/notification_template.py import-3.9
|
||||
plugins/modules/organization.py import-3.9
|
||||
plugins/modules/project.py import-3.92
|
||||
plugins/modules/project_update.py import-3.9
|
||||
plugins/modules/role.py import-3.9
|
||||
plugins/modules/schedule.py import-3.9
|
||||
plugins/modules/settings.py import-3.9
|
||||
plugins/modules/subscriptions.py import-3.9
|
||||
plugins/modules/team.py import-3.9
|
||||
plugins/modules/token.py import-3.9
|
||||
plugins/modules/user.py import-3.9
|
||||
plugins/modules/workflow_approval.py import-3.9
|
||||
plugins/modules/workflow_job_template.py import-3.9
|
||||
plugins/modules/workflow_job_template_node.py import-3.9
|
||||
plugins/modules/workflow_launch.py import-3.9
|
||||
plugins/modules/workflow_node_wait.py import-3.9
|
||||
plugins/inventory/controller.py import-3.10
|
||||
plugins/lookup/controller_api.py import-3.10
|
||||
plugins/module_utils/awxkit.py import-3.10
|
||||
plugins/module_utils/controller_api.py import-3.10
|
||||
plugins/modules/ad_hoc_command.py import-3.10
|
||||
plugins/modules/ad_hoc_command_cancel.py import-3.10
|
||||
plugins/modules/ad_hoc_command_wait.py import-3.10
|
||||
plugins/modules/application.py import-3.10
|
||||
plugins/modules/controller_meta.py import-3.10
|
||||
plugins/modules/credential.py import-3.10
|
||||
plugins/modules/credential_input_source.py import-3.10
|
||||
plugins/modules/credential_type.py import-3.10
|
||||
plugins/modules/execution_environment.py import-3.10
|
||||
plugins/modules/export.py import-3.10
|
||||
plugins/modules/group.py import-3.10
|
||||
plugins/modules/host.py import-3.10
|
||||
plugins/modules/import.py import-3.10
|
||||
plugins/modules/instance.py import-3.10
|
||||
plugins/modules/instance_group.py import-3.10
|
||||
plugins/modules/inventory.py import-3.10
|
||||
plugins/modules/inventory_source.py import-3.10
|
||||
plugins/modules/inventory_source_update.py import-3.10
|
||||
plugins/modules/job_cancel.py import-3.10
|
||||
plugins/modules/job_launch.py import-3.10
|
||||
plugins/modules/job_list.py import-3.10
|
||||
plugins/modules/job_template.py import-3.10
|
||||
plugins/modules/job_wait.py import-3.10
|
||||
plugins/modules/label.py import-3.10
|
||||
plugins/modules/license.py import-3.10
|
||||
plugins/modules/notification_template.py import-3.10
|
||||
plugins/modules/organization.py import-3.10
|
||||
plugins/modules/project.py import-3.10
|
||||
plugins/modules/project_update.py import-3.10
|
||||
plugins/modules/role.py import-3.10
|
||||
plugins/modules/schedule.py import-3.10
|
||||
plugins/modules/settings.py import-3.10
|
||||
plugins/modules/subscriptions.py import-3.10
|
||||
plugins/modules/team.py import-3.10
|
||||
plugins/modules/token.py import-3.10
|
||||
plugins/modules/user.py import-3.10
|
||||
plugins/modules/workflow_approval.py import-3.10
|
||||
plugins/modules/workflow_job_template.py import-3.10
|
||||
plugins/modules/workflow_job_template_node.py import-3.10
|
||||
plugins/modules/workflow_launch.py import-3.10
|
||||
plugins/modules/workflow_node_wait.py import-3.10
|
||||
88
awx_collection/tests/sanity/ignore-2.14.txt
Normal file
88
awx_collection/tests/sanity/ignore-2.14.txt
Normal file
@ -0,0 +1,88 @@
|
||||
plugins/module_utils/awxkit.py import-3.9
|
||||
plugins/module_utils/controller_api.py import-3.9
|
||||
plugins/modules/ad_hoc_command.py import-3.9
|
||||
plugins/modules/ad_hoc_command_cancel.py import-3.9
|
||||
plugins/modules/ad_hoc_command_wait.py import-3.9
|
||||
plugins/modules/application.py import-3.9
|
||||
plugins/modules/controller_meta.py import-3.9
|
||||
plugins/modules/credential.py import-3.92
|
||||
plugins/modules/credential_input_source.py import-3.9
|
||||
plugins/modules/credential_type.py import-3.9
|
||||
plugins/modules/execution_environment.py import-3.9
|
||||
plugins/modules/export.py import-3.9
|
||||
plugins/modules/group.py import-3.9
|
||||
plugins/modules/host.py import-3.9
|
||||
plugins/modules/import.py import-3.9
|
||||
plugins/modules/instance.py import-3.9
|
||||
plugins/modules/instance_group.py import-3.9
|
||||
plugins/modules/inventory.py import-3.9
|
||||
plugins/modules/inventory_source.py import-3.9
|
||||
plugins/modules/inventory_source_update.py import-3.9
|
||||
plugins/modules/job_cancel.py import-3.9
|
||||
plugins/modules/job_launch.py import-3.9
|
||||
plugins/modules/job_list.py import-3.9
|
||||
plugins/modules/job_template.py import-3.93
|
||||
plugins/modules/job_wait.py import-3.9
|
||||
plugins/modules/label.py import-3.9
|
||||
plugins/modules/license.py import-3.9
|
||||
plugins/modules/notification_template.py import-3.9
|
||||
plugins/modules/organization.py import-3.9
|
||||
plugins/modules/project.py import-3.92
|
||||
plugins/modules/project_update.py import-3.9
|
||||
plugins/modules/role.py import-3.9
|
||||
plugins/modules/schedule.py import-3.9
|
||||
plugins/modules/settings.py import-3.9
|
||||
plugins/modules/subscriptions.py import-3.9
|
||||
plugins/modules/team.py import-3.9
|
||||
plugins/modules/token.py import-3.9
|
||||
plugins/modules/user.py import-3.9
|
||||
plugins/modules/workflow_approval.py import-3.9
|
||||
plugins/modules/workflow_job_template.py import-3.9
|
||||
plugins/modules/workflow_job_template_node.py import-3.9
|
||||
plugins/modules/workflow_launch.py import-3.9
|
||||
plugins/modules/workflow_node_wait.py import-3.9
|
||||
plugins/inventory/controller.py import-3.10
|
||||
plugins/lookup/controller_api.py import-3.10
|
||||
plugins/module_utils/awxkit.py import-3.10
|
||||
plugins/module_utils/controller_api.py import-3.10
|
||||
plugins/modules/ad_hoc_command.py import-3.10
|
||||
plugins/modules/ad_hoc_command_cancel.py import-3.10
|
||||
plugins/modules/ad_hoc_command_wait.py import-3.10
|
||||
plugins/modules/application.py import-3.10
|
||||
plugins/modules/controller_meta.py import-3.10
|
||||
plugins/modules/credential.py import-3.10
|
||||
plugins/modules/credential_input_source.py import-3.10
|
||||
plugins/modules/credential_type.py import-3.10
|
||||
plugins/modules/execution_environment.py import-3.10
|
||||
plugins/modules/export.py import-3.10
|
||||
plugins/modules/group.py import-3.10
|
||||
plugins/modules/host.py import-3.10
|
||||
plugins/modules/import.py import-3.10
|
||||
plugins/modules/instance.py import-3.10
|
||||
plugins/modules/instance_group.py import-3.10
|
||||
plugins/modules/inventory.py import-3.10
|
||||
plugins/modules/inventory_source.py import-3.10
|
||||
plugins/modules/inventory_source_update.py import-3.10
|
||||
plugins/modules/job_cancel.py import-3.10
|
||||
plugins/modules/job_launch.py import-3.10
|
||||
plugins/modules/job_list.py import-3.10
|
||||
plugins/modules/job_template.py import-3.10
|
||||
plugins/modules/job_wait.py import-3.10
|
||||
plugins/modules/label.py import-3.10
|
||||
plugins/modules/license.py import-3.10
|
||||
plugins/modules/notification_template.py import-3.10
|
||||
plugins/modules/organization.py import-3.10
|
||||
plugins/modules/project.py import-3.10
|
||||
plugins/modules/project_update.py import-3.10
|
||||
plugins/modules/role.py import-3.10
|
||||
plugins/modules/schedule.py import-3.10
|
||||
plugins/modules/settings.py import-3.10
|
||||
plugins/modules/subscriptions.py import-3.10
|
||||
plugins/modules/team.py import-3.10
|
||||
plugins/modules/token.py import-3.10
|
||||
plugins/modules/user.py import-3.10
|
||||
plugins/modules/workflow_approval.py import-3.10
|
||||
plugins/modules/workflow_job_template.py import-3.10
|
||||
plugins/modules/workflow_job_template_node.py import-3.10
|
||||
plugins/modules/workflow_launch.py import-3.10
|
||||
plugins/modules/workflow_node_wait.py import-3.10
|
||||
Loading…
x
Reference in New Issue
Block a user