Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
    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
Ejemplo n.º 3
0
 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
Ejemplo n.º 4
0
 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
Ejemplo n.º 5
0
 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
Ejemplo n.º 7
0
    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
Ejemplo n.º 8
0
    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
Ejemplo n.º 9
0
 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
Ejemplo n.º 10
0
    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
Ejemplo n.º 14
0
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]
Ejemplo n.º 15
0
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))]
Ejemplo n.º 16
0
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
Ejemplo n.º 18
0
def test_filter_by_class_with_subclass_class():
    filtered = utils.filter_by_class((OneClass, OneClass),
                                     (FourClass, ThreeClass))
    assert filtered == [OneClass, FourClass]