def run(self, tmp=None, task_vars=None):

        result = super(ActionModule, self).run(tmp, task_vars)
        del tmp  # tmp no longer has any effect

        if self._play_context.check_mode:
            # in --check mode, always skip this module execution
            result['skipped'] = True
            result['msg'] = 'The dcos task does not support check mode'
            return result

        args = self._task.args
        package_name = args.get('name', None)
        package_version = args.get('version', None)

        if package_version is None:
            raise AnsibleActionFail('version cannot be empty for dcos_package')

        state = args.get('state', 'present')

        # ensure app_id has no leading or trailing /
        app_id = args.get('app_id', package_name).strip('/')

        options = args.get('options') or {}
        try:
            options['service']['name'] = app_id
        except KeyError:
            options['service'] = {'name': app_id}

        ensure_dcos()

        current_version = get_current_version(package_name, app_id)
        wanted_version = get_wanted_version(package_version, state)

        if current_version == wanted_version:
            display.vvv(
                "Package {} already in desired state".format(package_name))

            if state == "present":
                update_package(package_name, app_id, wanted_version, options)

            result['changed'] = False
        else:
            display.vvv("Package {} not in desired state".format(package_name))
            if wanted_version is not None:
                if current_version is not None:
                    update_package(package_name, app_id, wanted_version,
                                   options)
                else:
                    install_package(package_name, wanted_version, options)
            else:
                uninstall_package(package_name, app_id)

            result['changed'] = True

        return result
    def run(self, tmp=None, task_vars=None):

        result = super(ActionModule, self).run(tmp, task_vars)
        del tmp  # tmp no longer has any effect

        if self._play_context.check_mode:
            # in --check mode, always skip this module execution
            result['skipped'] = True
            result['msg'] = 'The dcos task does not support check mode'
            return result

        args = self._task.args
        path = args.get('path')
        if path is None:
            raise AnsibleActionFail('path cannot be empty for dcos_secret')
        store = args.get('store', 'default')
        file = args.get('file')

        with open(file, "rb") as wanted_value:

            wanted_state = args.get('state', 'present')

            ensure_dcos()
            ensure_dcos_security()

            current_value = get_secret_value(path, store)

            current_state = 'present' if current_value is not None else 'absent'

            if current_state == wanted_state:
                
                display.vvv(
                    "DC/OS Secret {} already in desired state {}".format(path, wanted_state))
                result['changed'] = False

                if wanted_state == "present" and current_value != wanted_value:
                    secret_update_from_file(path, file, store)
                    result['changed'] = True
                    result['msg'] = "Secret {} was updated".format(path)

            else:
                display.vvv("DC/OS Secret {} not in desired state {}".format(path, wanted_state))

                if wanted_state != 'absent':
                    secret_create_from_file(path, file, store)
                    result['msg'] = "Secret {} was created".format(path)

                else:
                    secret_delete(path, store)
                    result['msg'] = "Secret {} was deleted".format(path)

                result['changed'] = True

            return result
Ejemplo n.º 3
0
    def run(self, tmp=None, task_vars=None):

        result = super(ActionModule, self).run(tmp, task_vars)
        del tmp  # tmp no longer has any effect

        if self._play_context.check_mode:
            # in --check mode, always skip this module execution
            result['skipped'] = True
            result['msg'] = 'The dcos task does not support check mode'
            return result

        args = self._task.args
        uid = args.get('uid')
        description = args.get('description', 'Created by Ansible')
        password = args.get('password')
        groups = args.get('groups', [])
        wanted_state = args.get('state', 'present')

        if uid is None:
            raise AnsibleActionFail('uid cannot be empty for dcos_iam_user')

        if password is None:
            raise AnsibleActionFail(
                'password cannot be empty for dcos_iam_user')

        ensure_dcos()
        ensure_dcos_security()

        current_state = get_user_state(uid)

        if current_state == wanted_state:

            display.vvv("DC/OS IAM user {} already in desired state {}".format(
                uid, wanted_state))

            if wanted_state == "present":
                user_update(uid, groups)

            result['changed'] = False
        else:
            display.vvv("DC/OS: IAM user {} not in desired state {}".format(
                uid, wanted_state))

            if wanted_state != 'absent':
                user_create(uid, password, description)
                user_update(uid, groups)

            else:
                user_delete(uid)

            result['changed'] = True

        return result
Ejemplo n.º 4
0
    def run(self, tmp=None, task_vars=None):

        result = super(ActionModule, self).run(tmp, task_vars)
        del tmp  # tmp no longer has any effect

        if self._play_context.check_mode:
            # in --check mode, always skip this module execution
            result['skipped'] = True
            result['msg'] = 'The dcos task does not support check mode'
            return result

        args = self._task.args
        gid = args.get('group_id')
        cpu = args.get('cpu', None)
        mem = args.get('mem', None)
        disk = args.get('disk', None)
        gpu = args.get('gpu', None)

        wanted_state = args.get('state', 'present')

        if gid is None:
            raise AnsibleActionFail('gid cannot be empty for dcos_iam_quota')

        ensure_dcos()

        current_state = get_quota_state(gid)

        if current_state == wanted_state:

            display.vvv("DC/OS quota {} already in desired state {}".format(
                gid, wanted_state))

            if wanted_state == "present":
                quota_update(gid, cpu, mem, disk, gpu)

            result['changed'] = False
        else:
            display.vvv("DC/OS: quota {} not in desired state {}".format(
                gid, wanted_state))

            if wanted_state != 'absent':
                quota_create(gid, cpu, mem, disk, gpu)

            else:
                quota_delete(gid)

            result['changed'] = True

        return result
Ejemplo n.º 5
0
    def run(self, tmp=None, task_vars=None):

        result = super(ActionModule, self).run(tmp, task_vars)
        del tmp  # tmp no longer has any effect

        if self._play_context.check_mode:
            # in --check mode, always skip this module execution
            result['skipped'] = True
            result['msg'] = 'The dcos task does not support check mode'
            return result

        args = self._task.args
        name = args.get('name', None)
        url = args.get('url', None)
        index = args.get('index', 0)
        wanted_state = args.get('state', 'present')

        if name is None:
            raise AnsibleActionFail(
                'name cannot be empty for dcos_package_repo')

        if url is None:
            raise AnsibleActionFail(
                'url cannot be empty for dcos_package_repo')

        ensure_dcos()

        current_state = get_repo_state(name)

        if current_state == wanted_state:

            display.vvv("DC/OS: Repo {} already in desired state".format(name))

            if wanted_state == "present":
                repo_update(name, url, index)

            result['changed'] = False
        else:

            display.vvv("DC/OS: Repo {} not in desired state".format(name))

            if wanted_state != 'absent':
                repo_add(name, url, index)
            else:
                repo_remove(name)

            result['changed'] = True

        return result
Ejemplo n.º 6
0
    def run(self, tmp=None, task_vars=None):

        result = super(ActionModule, self).run(tmp, task_vars)
        del tmp  # tmp no longer has any effect

        if self._play_context.check_mode:
            # in --check mode, always skip this module execution
            result['skipped'] = True
            result['msg'] = 'The dcos task does not support check mode'
            return result

        args = self._task.args
        state = args.get('state', 'present')

        instance_name = args.get('instance_name', 'edgelb')
        # ensure pool_id has no leading forward slash
        pool_id = args.get('pool_id', '').strip('/')

        options = args.get('options') or {}
        options['name'] = pool_id

        ensure_dcos()
        ensure_dcos_edgelb(instance_name)

        current_state = get_pool_state(pool_id, instance_name)
        wanted_state = state

        if current_state == wanted_state:

            display.vvv("edgelb pool {} already in desired state {}".format(
                pool_id, wanted_state))

            if wanted_state == "present":
                pool_update(pool_id, instance_name, options)

            result['changed'] = False
        else:
            display.vvv("edgelb pool {} not in desired state {}".format(
                pool_id, wanted_state))

            if wanted_state != 'absent':
                pool_create(pool_id, instance_name, options)
            else:
                pool_delete(pool_id, instance_name)

            result['changed'] = True

        return result
Ejemplo n.º 7
0
    def run(self, tmp=None, task_vars=None):

        result = super(ActionModule, self).run(tmp, task_vars)
        del tmp  # tmp no longer has any effect

        if self._play_context.check_mode:
            # in --check mode, always skip this module execution
            result['skipped'] = True
            result['msg'] = 'The dcos task does not support check mode'
            return result

        args = self._task.args
        state = args.get('state', 'present')

        # ensure app_id has a single leading forward slash
        app_id = '/' + args.get('app_id', '').strip('/')

        options = args.get('options') or {}
        options['id'] = app_id

        ensure_dcos()

        current_state = get_app_state(app_id)
        wanted_state = state

        if current_state == wanted_state:

            display.vvv("Marathon app {} already in desired state {}".format(
                app_id, wanted_state))

            if wanted_state == "present":
                app_update(app_id, options)

            result['changed'] = False
        else:
            display.vvv("Marathon app {} not in desired state {}".format(
                app_id, wanted_state))

            if wanted_state != 'absent':
                app_create(app_id, options)
            else:
                app_remove(app_id)

            result['changed'] = True

        return result
Ejemplo n.º 8
0
    def run(self, tmp=None, task_vars=None):

        result = super(ActionModule, self).run(tmp, task_vars)
        del tmp  # tmp no longer has any effect

        if self._play_context.check_mode:
            # in --check mode, always skip this module execution
            result['skipped'] = True
            result['msg'] = 'The dcos task does not support check mode'
            return result

        args = self._task.args

        ensure_dcos()

        result['changed'] = connect_cluster(**args)
        return result
Ejemplo n.º 9
0
    def run(self, tmp=None, task_vars=None):

        result = super(ActionModule, self).run(tmp, task_vars)
        del tmp  # tmp no longer has any effect

        if self._play_context.check_mode:
            # in --check mode, always skip this module execution
            result['skipped'] = True
            result['msg'] = 'The dcos task does not support check mode'
            return result

        args = self._task.args
        sid = args.get('sid')
        description = args.get('description', 'Created by Ansible')
        secret_path = args.get('secret_path')
        store = args.get('store', 'default')
        groups = args.get('groups', [])
        wanted_state = args.get('state', 'present')

        if sid is None:
            raise AnsibleActionFail(
                'sid cannot be empty for dcos_iam_service_account')

        if secret_path is None:
            raise AnsibleActionFail(
                'secret_path cannot be empty for dcos_iam_service_account')

        ensure_dcos()
        ensure_dcos_security()

        current_state = get_service_account_state(sid)

        if current_state == wanted_state:

            display.vvv(
                "DC/OS IAM service_account {} already in desired state {}".
                format(sid, wanted_state))

            result['changed'] = False

            if wanted_state == "present":

                if get_secret_value(secret_path, store) is None:
                    service_account_delete(sid)
                    service_account_create(sid, secret_path, store,
                                           description)
                    result['changed'] = True

                service_account_update(sid, groups)

        else:
            display.vvv(
                "DC/OS: IAM service_account {} not in desired state {}".format(
                    sid, wanted_state))

            if wanted_state != 'absent':
                service_account_create(sid, secret_path, store, description)
                service_account_update(sid, groups)

            else:
                service_account_delete(sid)

            result['changed'] = True

        return result