#!/usr/bin/python # -*- coding: utf-8 -*- # Copyright (c) 2021, Red Hat # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) from __future__ import absolute_import, division, print_function __metaclass__ = type # STARTREMOVE (downstream) DOCUMENTATION = r''' module: openshift_adm_prune_builds short_description: Prune old completed and failed builds version_added: "2.3.0" author: - Aubin Bikouo (@abikouo) description: - This module allow administrators to delete old completed and failed builds. - Analogous to C(oc adm prune builds). extends_documentation_fragment: - kubernetes.core.k8s_auth_options options: namespace: description: - Use to specify namespace for builds to be deleted. type: str keep_younger_than: description: - Specify the minimum age (in minutes) of a Build for it to be considered a candidate for pruning. type: int orphans: description: - If C(true), prune all builds whose associated BuildConfig no longer exists and whose status is complete, failed, error, or cancelled. type: bool default: False requirements: - python >= 3.6 - kubernetes >= 12.0.0 ''' EXAMPLES = r''' # Run deleting older completed and failed builds and also including # all builds whose associated BuildConfig no longer exists - name: Run delete orphan Builds community.okd.openshift_adm_prune_builds: orphans: True # Run deleting older completed and failed builds keep younger than 2hours - name: Run delete builds, keep younger than 2h community.okd.openshift_adm_prune_builds: keep_younger_than: 120 # Run deleting builds from specific namespace - name: Run delete builds from namespace community.okd.openshift_adm_prune_builds: namespace: testing_namespace ''' RETURN = r''' builds: description: - The builds that were deleted returned: success type: complex contains: api_version: description: The versioned schema of this representation of an object. returned: success type: str kind: description: Represents the REST resource this object represents. returned: success type: str metadata: description: Standard object metadata. Includes name, namespace, annotations, labels, etc. returned: success type: dict spec: description: Specific attributes of the object. Will vary based on the I(api_version) and I(kind). returned: success type: dict status: description: Current status details for the object. returned: success type: dict ''' # ENDREMOVE (downstream) import copy from ansible_collections.kubernetes.core.plugins.module_utils.args_common import AUTH_ARG_SPEC def argument_spec(): args = copy.deepcopy(AUTH_ARG_SPEC) args.update( dict( namespace=dict(type='str'), keep_younger_than=dict(type='int'), orphans=dict(type='bool', default=False), ) ) return args def main(): from ansible_collections.community.okd.plugins.module_utils.openshift_builds import OpenShiftPruneBuilds module = OpenShiftPruneBuilds(argument_spec=argument_spec(), supports_check_mode=True) module.run_module() if __name__ == '__main__': main()