From fe45611870f25faad4cf813488a566dc71d2f76c Mon Sep 17 00:00:00 2001
From: Emilien Macchi <emilien@redhat.com>
Date: Wed, 17 Jun 2020 09:23:36 -0400
Subject: [PATCH] Remove paunch module

Paunch was removed in Victoria cycle, therefore this module isn't useful
anymore and can't work. So we need to remove it.

Change-Id: Ie1bd288ec524e025fb6e56f7bdb740ce35d6a104
---
 doc/source/modules/modules-paunch.rst         |  14 -
 .../paunch_removal-368245325e2964a2.yaml      |   4 +
 requirements.txt                              |   1 -
 .../ansible_plugins/modules/paunch.py         | 258 ------------------
 4 files changed, 4 insertions(+), 273 deletions(-)
 delete mode 100644 doc/source/modules/modules-paunch.rst
 create mode 100644 releasenotes/notes/paunch_removal-368245325e2964a2.yaml
 delete mode 100644 tripleo_ansible/ansible_plugins/modules/paunch.py

diff --git a/doc/source/modules/modules-paunch.rst b/doc/source/modules/modules-paunch.rst
deleted file mode 100644
index bf941a898..000000000
--- a/doc/source/modules/modules-paunch.rst
+++ /dev/null
@@ -1,14 +0,0 @@
-===============
-Module - paunch
-===============
-
-
-This module provides for the following ansible plugin:
-
-    * paunch
-
-
-.. ansibleautoplugin::
-   :module: tripleo_ansible/ansible_plugins/modules/paunch.py
-   :documentation: true
-   :examples: false
diff --git a/releasenotes/notes/paunch_removal-368245325e2964a2.yaml b/releasenotes/notes/paunch_removal-368245325e2964a2.yaml
new file mode 100644
index 000000000..2002d2fe6
--- /dev/null
+++ b/releasenotes/notes/paunch_removal-368245325e2964a2.yaml
@@ -0,0 +1,4 @@
+---
+deprecations:
+  - |
+    Paunch module was removed since Paunch has been retired in Victoria cycle.
diff --git a/requirements.txt b/requirements.txt
index b7d6256cb..373db582e 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,5 +1,4 @@
 pbr>=1.6
-paunch>=5.1.0 # Apache-2.0
 tripleo-common>=11.3.1 # Apache-2.0
 python-glanceclient>=2.8.0 # Apache-2.0
 python-ironicclient!=2.5.2,!=2.7.1,!=3.0.0,>=2.3.0,<4.0.0;python_version=='2.7' # Apache-2.0
diff --git a/tripleo_ansible/ansible_plugins/modules/paunch.py b/tripleo_ansible/ansible_plugins/modules/paunch.py
deleted file mode 100644
index 427be098e..000000000
--- a/tripleo_ansible/ansible_plugins/modules/paunch.py
+++ /dev/null
@@ -1,258 +0,0 @@
-# Copyright 2019 Red Hat, Inc.
-# All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-__metaclass__ = type
-
-from ansible.module_utils.basic import AnsibleModule
-
-import json
-import os
-import paunch as p
-import re
-import yaml
-from paunch import runner as prunner
-from paunch.builder import compose1 as pcompose1
-from paunch.builder import podman as ppodman
-from paunch.utils import common as putils_common
-
-
-ANSIBLE_METADATA = {
-    'metadata_version': '1.0',
-    'status': ['preview'],
-    'supported_by': 'community'
-}
-
-DOCUMENTATION = """
----
-module: paunch
-author:
-    - OpenStack TripleO Contributors
-version_added: '1.0'
-short_description: Manage containers with Paunch
-notes: []
-requirements:
-  - "paunch module"
-  - "podman or docker"
-description:
-    - Start or stop containers with Paunch
-options:
-  config:
-    description:
-      - JSON file or directory of JSON files containing configuration data
-  config_id:
-    description:
-      - ID to assign to containers
-    required: True
-    type: list
-  action:
-    description:
-      - The desired action to apply for the container.
-    default: apply
-    choices:
-      - apply
-      - cleanup
-  config_overrides:
-    description:
-      - Dictionary to override containers configs
-    default: {}
-    type: dict
-  container_cli:
-    description:
-      - The container CLI.
-    default: podman
-    choices:
-      - podman
-      - docker
-  container_log_stdout_path:
-    description:
-      - Absolute path to a directory where container stdout will be stored.
-    default: /var/log/containers/stdouts
-  healthcheck_disabled:
-    description:
-      - Whether or not we disable the Containers Healthchecks
-    type: bool
-    default: False
-  managed_by:
-    description:
-      - Name of the tool managing the containers. Only containers labelled with
-        this will be modified
-    default: paunch
-  debug:
-    description:
-      - Whether or not we enable Debug
-    type: bool
-    default: True
-  log_file:
-    description:
-      - Absolute path for the paunch log file.
-    default: /var/log/paunch.log
-  cleanup:
-    description:
-      - Whether or not we cleanup containers not in config. Useful only for apply action.
-    type: bool
-    default: True
-"""
-
-EXAMPLES = """
-# Paunch apply example
-- name: Start containers for step 1
-  paunch:
-    config: /var/lib/tripleo-config/hashed-container-startup-config-step_1.json
-    config_overrides:
-      haproxy:
-        image: docker.io/tripleomaster/centos-binary-haproxy:current-tripleo-hotfix
-    config_id: tripleo_step1
-    cleanup: false
-    action: apply
-# Paunch cleanup example
-- name: Cleanup containers for step 1 and step 2
-  paunch:
-    config_id:
-      - tripleo_step1
-      - tripleo_step2
-    action: cleanup
-"""
-
-
-class PaunchManager:
-
-    def __init__(self, module, results):
-
-        super(PaunchManager, self).__init__()
-
-        self.module = module
-        self.results = results
-
-        # Fail early if containers were not deployed by Paunch before.
-        if os.path.isfile('/var/lib/tripleo-config/.ansible-managed'):
-            msg = ('Containers were previously deployed with '
-                   'tripleo-ansible, paunch module can not be used. '
-                   'Make sure EnablePaunch is set to False.')
-            self.module.fail_json(
-                msg=msg,
-                stdout='',
-                stderr='',
-                rc=1)
-
-        self.config = self.module.params['config']
-        if (isinstance(self.module.params['config_id'], list)
-           and len(self.module.params['config_id']) == 1):
-            self.config_id = self.module.params['config_id'][0]
-        else:
-            self.config_id = self.module.params['config_id']
-        self.action = self.module.params['action']
-        self.healthcheck_disabled = \
-            self.module.params['healthcheck_disabled']
-        self.container_cli = self.module.params['container_cli']
-        self.cleanup = self.module.params['cleanup']
-        self.config_overrides = self.module.params['config_overrides']
-        self.container_log_stdout_path = \
-            self.module.params['container_log_stdout_path']
-        self.managed_by = self.module.params['managed_by']
-        self.debug = self.module.params['debug']
-        self.log_file = self.module.params['log_file']
-
-        if self.debug:
-            self.log_level = 3
-        else:
-            # if debug is disabled, only show WARNING level
-            self.log_level = 1
-
-        self.log = putils_common.configure_logging('paunch-ansible',
-                                                   level=self.log_level,
-                                                   log_file=self.log_file)
-
-        if self.config:
-            if self.config.endswith('.json'):
-                self.module.warn('Only one config was given, cleanup disabled')
-                self.cleanup = False
-            self.config_yaml = putils_common.load_config(
-                self.config,
-                overrides=self.config_overrides)
-
-        if self.action == 'apply':
-            self.paunch_apply()
-        elif self.action == 'cleanup':
-            self.paunch_cleanup()
-
-    def paunch_apply(self):
-
-        self.results['action'].append('Applying config_id %s' % self.config_id)
-        if not self.config:
-            self.module.fail_json(
-                msg="Paunch apply requires 'config' parameter",
-                stdout='',
-                stderr='',
-                rc=1)
-
-        stdout_list, stderr_list, rc = p.apply(
-            self.config_id,
-            self.config_yaml,
-            managed_by=self.managed_by,
-            labels=[],
-            cont_cmd=self.container_cli,
-            log_level=self.log_level,
-            log_file=self.log_file,
-            cont_log_path=self.container_log_stdout_path,
-            healthcheck_disabled=self.healthcheck_disabled,
-            cleanup=self.cleanup
-        )
-        stdout, stderr = ["\n".join(i) for i in (stdout_list, stderr_list)]
-
-        # Test paunch idempotency how we can.
-        changed_strings = ['rm -f', 'Completed', 'Created']
-        if any(s in stdout for s in changed_strings):
-            self.results['changed'] = True
-
-        self.results.update({"stdout": stdout, "stderr": stderr, "rc": rc})
-        if rc != 0:
-            self.module.fail_json(
-                msg="Paunch failed with config_id %s" % self.config_id,
-                stdout=stdout,
-                stderr=stderr,
-                rc=rc)
-
-        self.module.exit_json(**self.results)
-
-    def paunch_cleanup(self):
-
-        self.results['action'].append('Cleaning-up config_id(s) '
-                                      '%s' % self.config_id)
-        p.cleanup(
-            self.config_id,
-            managed_by=self.managed_by,
-            cont_cmd=self.container_cli,
-            log_level=self.log_level,
-            log_file=self.log_file
-        )
-
-        self.module.exit_json(**self.results)
-
-
-def main():
-    module = AnsibleModule(
-        argument_spec=yaml.safe_load(DOCUMENTATION)['options'],
-        supports_check_mode=False,
-    )
-
-    results = dict(
-        changed=False,
-        action=[]
-    )
-
-    PaunchManager(module, results)
-
-
-if __name__ == '__main__':
-    main()