diff --git a/ascenderkit/api/pages/job_templates.py b/ascenderkit/api/pages/job_templates.py index cbaa431..b7302ff 100644 --- a/ascenderkit/api/pages/job_templates.py +++ b/ascenderkit/api/pages/job_templates.py @@ -89,8 +89,9 @@ def payload(self, job_type='run', playbook='ping.yml', **kwargs): extra_vars = json.dumps(extra_vars) payload.update(extra_vars=extra_vars) - if kwargs.get('project'): - payload.update(project=kwargs.get('project').id, playbook=playbook) + project = kwargs.get('project') + if project: + payload.update(project=project.id, playbook=playbook) payload = set_payload_foreign_key_args(payload, ('inventory', 'credential', 'webhook_credential', 'execution_environment'), kwargs) diff --git a/ascenderkit/api/pages/page.py b/ascenderkit/api/pages/page.py index 413b54f..38eca35 100644 --- a/ascenderkit/api/pages/page.py +++ b/ascenderkit/api/pages/page.py @@ -425,11 +425,12 @@ def create_or_replace(self, **query_parameters): page = self.get(username=query_parameters['username']) else: assert query_parameters.get('name'), 'For this resource, you must call this method with a "name" to look up the object by' - if query_parameters.get('organization'): - if isinstance(query_parameters.get('organization'), int): - page = self.get(name=query_parameters['name'], organization=query_parameters.get('organization')) + organization = query_parameters.get('organization') + if organization: + if isinstance(organization, int): + page = self.get(name=query_parameters['name'], organization=organization) else: - page = self.get(name=query_parameters['name'], organization=query_parameters.get('organization').id) + page = self.get(name=query_parameters['name'], organization=organization.id) else: page = self.get(name=query_parameters['name']) if page and page.results: @@ -453,11 +454,12 @@ def get_or_create(self, **query_parameters): if query_parameters.get('username') and 'users' in self: page = self.get(username=query_parameters['username']) if query_parameters.get('name'): - if query_parameters.get('organization'): - if isinstance(query_parameters.get('organization'), int): - page = self.get(name=query_parameters['name'], organization=query_parameters.get('organization')) + organization = query_parameters.get('organization') + if organization: + if isinstance(organization, int): + page = self.get(name=query_parameters['name'], organization=organization) else: - page = self.get(name=query_parameters['name'], organization=query_parameters.get('organization').id) + page = self.get(name=query_parameters['name'], organization=organization.id) else: page = self.get(name=query_parameters['name']) diff --git a/ascenderkit/api/pages/projects.py b/ascenderkit/api/pages/projects.py index 12cdbc2..f3488c7 100644 --- a/ascenderkit/api/pages/projects.py +++ b/ascenderkit/api/pages/projects.py @@ -26,8 +26,9 @@ def payload(self, organization, scm_type='git', **kwargs): if organization is not None: payload.organization = organization.id - if kwargs.get('credential'): - payload.credential = kwargs.get('credential').id + credential = kwargs.get('credential') + if credential: + payload.credential = credential.id fields = ( 'scm_branch', diff --git a/ascenderkit/api/pages/workflow_job_templates.py b/ascenderkit/api/pages/workflow_job_templates.py index 3f2ec76..d3aec3b 100644 --- a/ascenderkit/api/pages/workflow_job_templates.py +++ b/ascenderkit/api/pages/workflow_job_templates.py @@ -59,11 +59,13 @@ def payload(self, **kwargs): extra_vars = json.dumps(extra_vars) payload.update(extra_vars=extra_vars) - if kwargs.get('organization'): - payload.organization = kwargs.get('organization').id + organization = kwargs.get('organization') + if organization: + payload.organization = organization.id - if kwargs.get('inventory'): - payload.inventory = kwargs.get('inventory').id + inventory = kwargs.get('inventory') + if inventory: + payload.inventory = inventory.id if kwargs.get('webhook_credential'): webhook_cred = kwargs.get('webhook_credential') diff --git a/ascenderkit/utils/__init__.py b/ascenderkit/utils/__init__.py index b34e955..297fa24 100644 --- a/ascenderkit/utils/__init__.py +++ b/ascenderkit/utils/__init__.py @@ -192,11 +192,12 @@ def logged_sleep(duration, level='DEBUG', stack_depth=1): level = getattr(logging, level.upper()) # based on # http://stackoverflow.com/questions/1095543/get-name-of-calling-functions-module-in-python - try: - frm = inspect.stack()[stack_depth] - logger = logging.getLogger(inspect.getmodule(frm[0]).__name__) - except AttributeError: # module is None (interactive shell) - logger = log # fall back to utils logger + frm = inspect.stack()[stack_depth] + module = inspect.getmodule(frm[0]) + # getmodule returns None for a frame with no module, which is what an + # interactive shell gives. This used to read .__name__ off it and catch the + # resulting AttributeError, which also swallowed any other one raised here. + logger = logging.getLogger(module.__name__) if module else log logger.log(level, f'Sleeping for {duration} seconds.') time.sleep(duration)