def create_payload( self, name='', description='', source='custom', inventory=Inventory, credential=None, source_script=InventoryScript, project=None, **kwargs ): if source != 'custom' and source_script == InventoryScript: source_script = None if source == 'scm': kwargs.setdefault('overwrite_vars', True) if project is None: project = Project inventory, credential, source_script, project = filter_by_class( (inventory, Inventory), (credential, Credential), (source_script, InventoryScript), (project, Project) ) self.create_and_update_dependencies(inventory, credential, source_script, project) if credential: credential = self.ds.credential if source_script: source_script = self.ds.inventory_script if project: project = self.ds.project payload = self.payload( inventory=self.ds.inventory, source=source, credential=credential, source_script=source_script, project=project, name=name, description=description, **kwargs ) payload.ds = DSAdapter(self.__class__.__name__, self._dependency_store) return payload
def create_payload(self, name='', description='', job_type='run', playbook='ping.yml', credential=Credential, inventory=Inventory, project=None, **kwargs): if not project: project = Project if not inventory and not kwargs.get('ask_inventory_on_launch', False): inventory = Inventory self.create_and_update_dependencies( *filter_by_class((credential, Credential), (inventory, Inventory), (project, Project))) project = self.ds.project if project else None inventory = self.ds.inventory if inventory else None credential = self.ds.credential if credential else None payload = self.payload(name=name, description=description, job_type=job_type, playbook=playbook, credential=credential, inventory=inventory, project=project, **kwargs) payload.ds = DSAdapter(self.__class__.__name__, self._dependency_store) return payload, credential
def create_payload(self, name='', description='', inventory=Inventory, credential=None, source_script=None, **kwargs): credential, source_script = filter_by_class((credential, Credential), (source_script, InventoryScript)) self.create_and_update_dependencies(inventory, credential, source_script) credential = self.ds.credential if credential else None payload = self.payload(inventory=self.ds.inventory, credential=credential, name=name, description=description, **kwargs) payload.ds = DSAdapter(self.__class__.__name__, self._dependency_store) return payload
def create_payload(self, organization=Organization, **kwargs): self.create_and_update_dependencies(*filter_by_class((organization, Organization))) organization = self.ds.organization if organization else None payload = self.payload(organization=organization, **kwargs) payload.ds = DSAdapter(self.__class__.__name__, self._dependency_store) return payload
def create_payload(self, oauth_2_application=None, **kwargs): self.create_and_update_dependencies( *filter_by_class((oauth_2_application, OAuth2Application))) oauth_2_application = self.ds.oauth_2_application if oauth_2_application else None payload = self.payload(oauth_2_application=oauth_2_application, **kwargs) payload.ds = DSAdapter(self.__class__.__name__, self._dependency_store) return payload
def create(self, two_with_args=TwoWithArgs, three_with_args=ThreeWithArgs, **kw): self.create_and_update_dependencies( *filter_by_class((two_with_args, TwoWithArgs), (three_with_args, ThreeWithArgs))) self.kw = kw return self
def create_payload(self, name='', organization=Organization, credential=None, **kwargs): self.create_and_update_dependencies(*filter_by_class((credential, Credential), (organization, Organization))) credential = self.ds.credential if credential else None organization = self.ds.organization if organization else None payload = self.payload(name=name, organization=organization, credential=credential, **kwargs) payload.ds = DSAdapter(self.__class__.__name__, self._dependency_store) return payload
def create_payload( self, credential_type=CredentialType, user=None, team=None, organization=Organization, inputs=None, **kwargs): if isinstance(credential_type, int): # if an int was passed, it is assumed to be the pk id of a # credential type credential_type = CredentialTypes( self.connection).get(id=credential_type).results.pop() if credential_type == CredentialType: kind = kwargs.pop('kind', 'ssh') if kind in ('openstack', 'openstack_v3'): credential_type_name = 'OpenStack' if inputs is None: if kind == 'openstack_v3': inputs = config.credentials.cloud['openstack_v3'] else: inputs = config.credentials.cloud['openstack'] else: credential_type_name = config_kind_to_credential_type_name_map[kind] credential_type = CredentialTypes( self.connection).get( managed_by_tower=True, name__icontains=credential_type_name).results.pop() credential_type, organization, user, team = filter_by_class( (credential_type, CredentialType), (organization, Organization), (user, User), (team, Team)) if not any((user, team, organization)): organization = Organization self.create_and_update_dependencies( credential_type, organization, user, team) user = self.ds.user if user else None team = self.ds.team if team else None organization = self.ds.organization if organization else None payload = self.payload( self.ds.credential_type, user=user, team=team, organization=organization, inputs=inputs, **kwargs) payload.ds = DSAdapter(self.__class__.__name__, self._dependency_store) return payload
def create_payload(self, name='', description='', variables=None, inventory=Inventory, **kwargs): self.create_and_update_dependencies(*filter_by_class((inventory, Inventory))) payload = self.payload(inventory=self.ds.inventory, name=name, description=description, variables=variables, **kwargs) payload.ds = DSAdapter(self.__class__.__name__, self._dependency_store) return payload
def create_payload( self, name='', description='', scm_type='git', scm_url='', scm_branch='', organization=Organization, credential=None, **kwargs): if credential: if isinstance(credential, Credential): if credential.ds.credential_type.namespace not in ( 'scm', 'insights'): credential = None # ignore incompatible credential from HasCreate dependency injection elif credential in (Credential,): credential = ( Credential, dict( credential_type=( True, dict( kind='scm')))) elif credential is True: credential = ( Credential, dict( credential_type=( True, dict( kind='scm')))) self.create_and_update_dependencies( *filter_by_class((credential, Credential), (organization, Organization))) credential = self.ds.credential if credential else None organization = self.ds.organization if organization else None payload = self.payload( organization=organization, scm_type=scm_type, name=name, description=description, scm_url=scm_url, scm_branch=scm_branch, credential=credential, **kwargs) payload.ds = DSAdapter(self.__class__.__name__, self._dependency_store) return payload
def create(self, a=None, e=None, **kw): self.create_and_update_dependencies(*filter_by_class((a, A), (e, E))) return self
def create(self, d=D, f=None, e=None, **kw): self.create_and_update_dependencies( *filter_by_class((d, D), (f, F), (e, E))) return self
def create(self, one_with_args=OneWithArgs, two_with_args=None, **kw): self.create_and_update_dependencies( *filter_by_class((one_with_args, OneWithArgs), (two_with_args, TwoWithArgs))) self.kw = kw return self
def test_filter_by_class_with_subclass_instance(): one = OneClass() four = FourClass() filtered = utils.filter_by_class((one, OneClass), (four, ThreeClass)) assert filtered == [one, four]
def test_filter_by_class_with_arg_tuples_containing_truthy(truthy): one = OneClass() three = (truthy, dict(one=1, two=2)) filtered = utils.filter_by_class((one, OneClass), (False, TwoClass), (three, ThreeClass)) assert filtered == [one, None, (ThreeClass, dict(one=1, two=2))]
def test_filter_by_class_no_arg_tuples(): three = ThreeClass() filtered = utils.filter_by_class((True, OneClass), (False, TwoClass), (three, ThreeClass)) assert filtered == [OneClass, None, three]
def create(self, multiple_word_class_name=None, **kw): self.create_and_update_dependencies( *filter_by_class((multiple_word_class_name, MultipleWordClassName))) return self
def test_filter_by_class_with_subclass_class(): filtered = utils.filter_by_class((OneClass, OneClass), (FourClass, ThreeClass)) assert filtered == [OneClass, FourClass]