Example #1
0
def main():
    with PulpAnsibleModule(
        argument_spec=dict(remote=dict(required=True), repository=dict(required=True),),
    ) as module:

        remote = PulpAnsibleRemote(module, {"name": module.params["remote"]})
        remote.find()

        if remote.entity is None:
            module.fail_json(
                msg="Remote '{0}' not found.".format(module.params["remote"])
            )

        repository = PulpAnsibleRepository(
            module, {"name": module.params["repository"]}
        )
        repository.find()
        if repository.entity is None:
            module.fail_json(
                msg="Repository '{0}' not found.".format(module.params["repository"])
            )

        repository_version = repository.entity["latest_version_href"]
        sync_task = repository.sync(remote.href)

        if sync_task["created_resources"]:
            module.set_changed()
            repository_version = sync_task["created_resources"][0]

        module.set_result("repository_version", repository_version)
Example #2
0
def main():
    with PulpAnsibleModule(argument_spec=dict(
            content_type=dict(choices=["collection", "role"], default="role"),
            remote=dict(required=True),
            repository=dict(required=True),
    ), ) as module:

        if module.params["content_type"] == "collection":
            RemoteClass = PulpAnsibleCollectionRemote
        else:
            RemoteClass = PulpAnsibleRoleRemote

        remote = RemoteClass(module, {"name": module.params["remote"]})
        remote.find(failsafe=False)

        repository = PulpAnsibleRepository(
            module, {"name": module.params["repository"]})
        repository.find(failsafe=False)

        repository_version = repository.entity["latest_version_href"]
        sync_task = repository.sync(remote.href)

        if sync_task["created_resources"]:
            module.set_changed()
            repository_version = sync_task["created_resources"][0]

        module.set_result("repository_version", repository_version)
Example #3
0
def main():
    with PulpAnsibleModule(argument_spec=dict(remote=dict(required=True),
                                              repository=dict(
                                                  required=True))) as module:

        remote = PulpContainerRemote(module, {"name": module.params["remote"]})
        remote.find(failsafe=False)

        repository = PulpContainerRepository(
            module, {"name": module.params["repository"]})
        repository.find(failsafe=False)

        repository.process_sync(remote)
Example #4
0
def main():
    with PulpAnsibleModule(argument_spec=dict(
            remote=dict(required=True),
            repository=dict(required=True),
            mirror=dict(type="bool", default=False),
    ), ) as module:

        remote = PulpDebRemote(module, {"name": module.params["remote"]})
        remote.find(failsafe=False)

        repository = PulpDebRepository(module,
                                       {"name": module.params["repository"]})
        repository.find(failsafe=False)

        parameters = {"mirror": module.params["mirror"]}
        repository.process_sync(remote, parameters)
Example #5
0
def main():
    with PulpAnsibleModule(argument_spec=dict(
            content_type=dict(choices=["collection", "role"], default="role"),
            remote=dict(required=True),
            repository=dict(required=True),
    ), ) as module:

        if module.params["content_type"] == "collection":
            RemoteClass = PulpAnsibleCollectionRemote
        else:
            RemoteClass = PulpAnsibleRoleRemote

        remote = RemoteClass(module, {"name": module.params["remote"]})
        remote.find(failsafe=False)

        repository = PulpAnsibleRepository(
            module, {"name": module.params["repository"]})
        repository.find(failsafe=False)

        repository.process_sync(remote)
Example #6
0
def main():
    with PulpAnsibleModule(argument_spec=dict(remote=dict(required=True),
                                              repository=dict(
                                                  required=True))) as module:

        remote = PulpRpmRemote(module, {"name": module.params["remote"]})
        remote.find(failsafe=False)

        repository = PulpRpmRepository(module,
                                       {"name": module.params["repository"]})
        repository.find(failsafe=False)

        repository_version = repository.entity["latest_version_href"]
        sync_task = repository.sync(remote.href)

        if sync_task["created_resources"]:
            module._changed = True
            repository_version = sync_task["created_resources"][0]

        module.set_result("repository_version", repository_version)
Example #7
0
def main():
    with PulpAnsibleModule(
        argument_spec=dict(
            remote=dict(required=True),
            repository=dict(required=True),
            sync_policy=dict(
                type="str",
                default="additive",
                choices=["additive", "mirror_complete", "mirror_content_only"],
            ),
        ),
    ) as module:

        remote = PulpRpmRemote(module, {"name": module.params["remote"]})
        remote.find(failsafe=False)

        repository = PulpRpmRepository(module, {"name": module.params["repository"]})
        repository.find(failsafe=False)

        # pulp_rpm supports sync_policy from 3.16.
        # Earlier versions support only mirror.
        rpm_version = (
            module.pulp_api.api_spec.get("info", {})
            .get("x-pulp-app-versions", {})
            .get("rpm", ())
        )
        if pulp_parse_version(rpm_version) >= pulp_parse_version("3.16.0"):
            parameters = {"sync_policy": module.params["sync_policy"]}
        elif module.params["sync_policy"] == "mirror_content_only":
            raise SqueezerException(
                "Cannot use sync policy 'mirror_content_only' with pulp_rpm<3.16"
            )
        else:
            mirror = module.params["sync_policy"] == "mirror_complete"
            parameters = {"mirror": mirror}

        repository.process_sync(remote, parameters)
Example #8
0
def main():
    with PulpAnsibleModule(argument_spec=dict(
            repository=dict(required=True),
            base_version=dict(type="int"),
            present_content=dict(
                type="list",
                elements="dict",
                options=dict(
                    relative_path=dict(required=True),
                    sha256=dict(required=True, aliases=["digest"]),
                ),
            ),
            absent_content=dict(
                type="list",
                elements="dict",
                options=dict(
                    relative_path=dict(required=True),
                    sha256=dict(required=True, aliases=["digest"]),
                ),
            ),
    ), ) as module:

        repository_name = module.params["repository"]
        version = module.params["base_version"]

        repository = PulpFileRepository(module, {"name": repository_name})
        repository.find(failsafe=False)
        # TODO check if version exists
        if version:
            repository_version_href = repository.entity[
                "versions_href"] + "{version}/".format(version=version)
        else:
            repository_version_href = repository.entity["latest_version_href"]

        desired_present_content = module.params["present_content"]
        desired_absent_content = module.params["absent_content"]
        content_to_add = []
        content_to_remove = []

        if desired_present_content is not None:
            for item in desired_present_content:
                file_content = PulpFileContent(
                    module,
                    natural_key={
                        k: v
                        for k, v in item.items()
                        if k in ["sha256", "relative_path"]
                    },
                )
                file_content.find(
                    parameters={"repository_version": repository_version_href})
                if file_content.entity is None:
                    file_content.find(failsafe=False)
                    content_to_add.append(file_content.entity["pulp_href"])

        if desired_absent_content is not None:
            for item in desired_absent_content:
                file_content = PulpFileContent(
                    module,
                    natural_key={
                        k: v
                        for k, v in item.items()
                        if k in ["sha256", "relative_path"]
                    },
                )
                file_content.find(
                    parameters={"repository_version": repository_version_href})
                if file_content.entity is not None:
                    content_to_remove.append(file_content.entity["pulp_href"])

        if content_to_add or content_to_remove:
            repository_version_href = repository.modify(
                content_to_add, content_to_remove, repository_version_href)

        module.set_result("content_added", content_to_add)
        module.set_result("content_removed", content_to_remove)
        module.set_result("repository_version", repository_version_href)
Example #9
0
def main():
    with PulpAnsibleModule() as module:
        summary = PulpOrphans(module).delete()
        module.set_result("summary", summary)
Example #10
0
def main():
    with PulpAnsibleModule() as module:
        status = module.pulp_api.call("status_read")
        module.set_result("status", status)