From c959f9dcf9f4bc0c3dfeb4e68c082c79d479de35 Mon Sep 17 00:00:00 2001 From: Tim Bielawa Date: Fri, 26 Aug 2016 08:53:45 -0700 Subject: Fix PyLint errors discovered when upgrading to newer version * Fixes PyLint to run in the virtualenv used for all tests * Replaced 'LooseVersion' with 'parse_version' from setuptools - This is a work around for the issue in https://github.com/PyCQA/pylint/issues/73 in which pylint can not import disutils.version correctly in a virtualenv. * Removed the unused function 'delete_hosts' which was causing a pylint error as well * Removed a deprecated pylint pragma option, 'bad-builtin' * Fixed some import ordering issues it was picky about * Added another disable for a case where the PyLint suggestion would have us altering the container we would be iterating over * Add code-coverage reports to the unittests with the MINIMUM coverage percentage for success set to 70% - Current test coverage is at 76% --- utils/.gitignore | 1 + utils/Makefile | 12 ++++++++---- utils/src/ooinstall/cli_installer.py | 32 +++++++------------------------- utils/src/ooinstall/oo_config.py | 7 ++++++- utils/src/ooinstall/openshift_ansible.py | 5 +++-- 5 files changed, 25 insertions(+), 32 deletions(-) (limited to 'utils') diff --git a/utils/.gitignore b/utils/.gitignore index 7e72a43c3..facfeee54 100644 --- a/utils/.gitignore +++ b/utils/.gitignore @@ -45,3 +45,4 @@ coverage.xml docs/_build/ oo-install oo-installenv +cover diff --git a/utils/Makefile b/utils/Makefile index dd0b5cdd0..7676354b0 100644 --- a/utils/Makefile +++ b/utils/Makefile @@ -35,13 +35,17 @@ clean: @rm -fR build dist rpm-build MANIFEST htmlcov .coverage cover ooinstall.egg-info oo-install @rm -fR $(NAME)env +viewcover: + xdg-open cover/index.html + virtualenv: @echo "#############################################" @echo "# Creating a virtualenv" @echo "#############################################" virtualenv $(NAME)env . $(NAME)env/bin/activate && pip install -r requirements.txt - . $(NAME)env/bin/activate && pip install pep8 nose coverage mock flake8 PyYAML click + . $(NAME)env/bin/activate && pip install setuptools --upgrade + . $(NAME)env/bin/activate && pip install enum configparser pylint pep8 nose coverage mock flake8 PyYAML click # If there are any special things to install do it here # . $(NAME)env/bin/activate && INSTALL STUFF @@ -50,14 +54,14 @@ ci-unittests: @echo "#############################################" @echo "# Running Unit Tests in virtualenv" @echo "#############################################" -# . $(NAME)env/bin/activate && nosetests -v --with-cover --cover-html --cover-min-percentage=80 --cover-package=$(TESTPACKAGE) test/ - . $(NAME)env/bin/activate && nosetests -v test/ + . $(NAME)env/bin/activate && nosetests -v --with-coverage --cover-html --cover-min-percentage=70 --cover-package=$(SHORTNAME) test/ + @echo "VIEW CODE COVERAGE REPORT WITH 'xdg-open cover/index.html' or run 'make viewcover'" ci-pylint: @echo "#############################################" @echo "# Running PyLint Tests in virtualenv" @echo "#############################################" - python -m pylint --rcfile ../git/.pylintrc src/ooinstall/cli_installer.py src/ooinstall/oo_config.py src/ooinstall/openshift_ansible.py src/ooinstall/variants.py + . $(NAME)env/bin/activate && python -m pylint --rcfile ../git/.pylintrc src/ooinstall/cli_installer.py src/ooinstall/oo_config.py src/ooinstall/openshift_ansible.py src/ooinstall/variants.py ci-list-deps: @echo "#############################################" diff --git a/utils/src/ooinstall/cli_installer.py b/utils/src/ooinstall/cli_installer.py index 67f3659ff..9420ec287 100644 --- a/utils/src/ooinstall/cli_installer.py +++ b/utils/src/ooinstall/cli_installer.py @@ -5,7 +5,8 @@ import os import re import sys -from distutils.version import LooseVersion +import logging +import setuptools.version import click from ooinstall import openshift_ansible from ooinstall.oo_config import OOConfig @@ -13,7 +14,6 @@ from ooinstall.oo_config import OOConfigInvalidHostError from ooinstall.oo_config import Host, Role from ooinstall.variants import find_variant, get_variant_version_combos -import logging installer_log = logging.getLogger('installer') installer_log.setLevel(logging.CRITICAL) installer_file_handler = logging.FileHandler('/tmp/installer.txt') @@ -98,27 +98,6 @@ def list_hosts(hosts): click.echo(' {}: {}'.format(idx, hosts[idx])) -def delete_hosts(hosts): - while True: - list_hosts(hosts) - del_idx = click.prompt('Select host to delete, y/Y to confirm, ' - 'or n/N to add more hosts', default='n') - try: - del_idx = int(del_idx) - hosts.remove(hosts[del_idx]) - except IndexError: - click.echo("\"{}\" doesn't match any hosts listed.".format(del_idx)) - except ValueError: - try: - response = del_idx.lower() - if response in ['y', 'n']: - return hosts, response - click.echo("\"{}\" doesn't correspond to any valid input.".format(del_idx)) - except AttributeError: - click.echo("\"{}\" doesn't correspond to any valid input.".format(del_idx)) - return hosts, None - - def collect_hosts(oo_cfg, existing_env=False, masters_set=False, print_summary=True): """ Collect host information from user. This will later be filled in using @@ -652,8 +631,11 @@ https://docs.openshift.com/enterprise/latest/admin_guide/install/prerequisites.h oo_cfg.deployment.variables['master_routingconfig_subdomain'] = get_master_routingconfig_subdomain() click.clear() + current_version = setuptools.version.pkg_resources.parse_version( + oo_cfg.settings.get('variant_version', '0.0')) + min_version = setuptools.version.pkg_resources.parse_version('3.2') if not oo_cfg.settings.get('openshift_http_proxy', None) and \ - LooseVersion(oo_cfg.settings.get('variant_version', '0.0')) >= LooseVersion('3.2'): + current_version >= min_version: http_proxy, https_proxy, proxy_excludes = get_proxy_hostnames_and_excludes() oo_cfg.deployment.variables['proxy_http'] = http_proxy oo_cfg.deployment.variables['proxy_https'] = https_proxy @@ -920,7 +902,7 @@ def uninstall(ctx): @click.option('--latest-minor', '-l', is_flag=True, default=False) @click.option('--next-major', '-n', is_flag=True, default=False) @click.pass_context -# pylint: disable=bad-builtin,too-many-statements +# pylint: disable=too-many-statements def upgrade(ctx, latest_minor, next_major): oo_cfg = ctx.obj['oo_cfg'] diff --git a/utils/src/ooinstall/oo_config.py b/utils/src/ooinstall/oo_config.py index b9f0cc65c..409276360 100644 --- a/utils/src/ooinstall/oo_config.py +++ b/utils/src/ooinstall/oo_config.py @@ -2,10 +2,11 @@ import os import sys +import logging import yaml from pkg_resources import resource_filename -import logging + installer_log = logging.getLogger('installer') CONFIG_PERSIST_SETTINGS = [ @@ -325,6 +326,10 @@ class OOConfig(object): self.settings['ansible_inventory_path'] = \ '{}/hosts'.format(os.path.dirname(self.config_path)) + # pylint: disable=consider-iterating-dictionary + # Disabled because we shouldn't alter the container we're + # iterating over + # # clean up any empty sets for setting in self.settings.keys(): if not self.settings[setting]: diff --git a/utils/src/ooinstall/openshift_ansible.py b/utils/src/ooinstall/openshift_ansible.py index 001c58d73..4113bb126 100644 --- a/utils/src/ooinstall/openshift_ansible.py +++ b/utils/src/ooinstall/openshift_ansible.py @@ -4,9 +4,10 @@ import socket import subprocess import sys import os +import logging import yaml from ooinstall.variants import find_variant -import logging + installer_log = logging.getLogger('installer') CFG = None @@ -229,7 +230,7 @@ def load_system_facts(inventory_file, os_facts_path, env_vars, verbose=False): os_facts_path]) installer_log.debug("Going to subprocess out to ansible now with these args: %s", ' '.join(args)) status = subprocess.call(args, env=env_vars, stdout=FNULL) - if not status == 0: + if status != 0: installer_log.debug("Exit status from subprocess was not 0") return [], 1 -- cgit v1.2.1 From 615b42f66da4f0e3e6a3516a0d859a7842db5ec4 Mon Sep 17 00:00:00 2001 From: Tim Bielawa Date: Fri, 26 Aug 2016 10:23:07 -0700 Subject: Add missing pip requirement to virtualenv --- utils/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'utils') diff --git a/utils/Makefile b/utils/Makefile index 7676354b0..ef2928b52 100644 --- a/utils/Makefile +++ b/utils/Makefile @@ -45,7 +45,7 @@ virtualenv: virtualenv $(NAME)env . $(NAME)env/bin/activate && pip install -r requirements.txt . $(NAME)env/bin/activate && pip install setuptools --upgrade - . $(NAME)env/bin/activate && pip install enum configparser pylint pep8 nose coverage mock flake8 PyYAML click + . $(NAME)env/bin/activate && pip install enum configparser pylint pep8 nose coverage mock flake8 PyYAML click backports.functools_lru_cache # If there are any special things to install do it here # . $(NAME)env/bin/activate && INSTALL STUFF -- cgit v1.2.1 From 07cf1d6213b0d288761bfe3a31c1d44cdddbdd93 Mon Sep 17 00:00:00 2001 From: Tim Bielawa Date: Fri, 26 Aug 2016 11:53:00 -0700 Subject: Try using parse_version from pkg_resources instead --- utils/src/ooinstall/cli_installer.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'utils') diff --git a/utils/src/ooinstall/cli_installer.py b/utils/src/ooinstall/cli_installer.py index 9420ec287..6b81f7721 100644 --- a/utils/src/ooinstall/cli_installer.py +++ b/utils/src/ooinstall/cli_installer.py @@ -6,8 +6,8 @@ import os import re import sys import logging -import setuptools.version import click +from pkg_resources import parse_version from ooinstall import openshift_ansible from ooinstall.oo_config import OOConfig from ooinstall.oo_config import OOConfigInvalidHostError @@ -631,9 +631,9 @@ https://docs.openshift.com/enterprise/latest/admin_guide/install/prerequisites.h oo_cfg.deployment.variables['master_routingconfig_subdomain'] = get_master_routingconfig_subdomain() click.clear() - current_version = setuptools.version.pkg_resources.parse_version( + current_version = parse_version( oo_cfg.settings.get('variant_version', '0.0')) - min_version = setuptools.version.pkg_resources.parse_version('3.2') + min_version = parse_version('3.2') if not oo_cfg.settings.get('openshift_http_proxy', None) and \ current_version >= min_version: http_proxy, https_proxy, proxy_excludes = get_proxy_hostnames_and_excludes() -- cgit v1.2.1 From 8bbb62c30ce141e4ffef29364a1c61941317835a Mon Sep 17 00:00:00 2001 From: Tim Bielawa Date: Fri, 26 Aug 2016 12:13:56 -0700 Subject: Switch to using a requirements.txt file and ensure that setuptools is pinned to the latest version available on RHEL7 --- utils/Makefile | 3 --- utils/requirements.txt | 13 ++++++++++++- 2 files changed, 12 insertions(+), 4 deletions(-) (limited to 'utils') diff --git a/utils/Makefile b/utils/Makefile index ef2928b52..99787c7c6 100644 --- a/utils/Makefile +++ b/utils/Makefile @@ -44,9 +44,6 @@ virtualenv: @echo "#############################################" virtualenv $(NAME)env . $(NAME)env/bin/activate && pip install -r requirements.txt - . $(NAME)env/bin/activate && pip install setuptools --upgrade - . $(NAME)env/bin/activate && pip install enum configparser pylint pep8 nose coverage mock flake8 PyYAML click backports.functools_lru_cache - # If there are any special things to install do it here # . $(NAME)env/bin/activate && INSTALL STUFF diff --git a/utils/requirements.txt b/utils/requirements.txt index 8b1378917..02164fb76 100644 --- a/utils/requirements.txt +++ b/utils/requirements.txt @@ -1 +1,12 @@ - +setuptools==17.1.1 +enum +configparser +pylint +pep8 +nose +coverage +mock +flake8 +PyYAML +click +backports.functools_lru_cache -- cgit v1.2.1 From 635dbc0040b691ac3f2d8cec3296ddf58cfd3072 Mon Sep 17 00:00:00 2001 From: Tim Bielawa Date: Fri, 26 Aug 2016 12:25:22 -0700 Subject: Try installing setuptools before the rest of the requirements --- utils/Makefile | 1 + utils/requirements.txt | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) (limited to 'utils') diff --git a/utils/Makefile b/utils/Makefile index 99787c7c6..f80d3c7ad 100644 --- a/utils/Makefile +++ b/utils/Makefile @@ -43,6 +43,7 @@ virtualenv: @echo "# Creating a virtualenv" @echo "#############################################" virtualenv $(NAME)env + . $(NAME)env/bin/activate && pip install setuptools==17.1.1 . $(NAME)env/bin/activate && pip install -r requirements.txt # If there are any special things to install do it here # . $(NAME)env/bin/activate && INSTALL STUFF diff --git a/utils/requirements.txt b/utils/requirements.txt index 02164fb76..f2216a177 100644 --- a/utils/requirements.txt +++ b/utils/requirements.txt @@ -1,4 +1,3 @@ -setuptools==17.1.1 enum configparser pylint -- cgit v1.2.1 From 54a494e0948c270a66b63dc9420d38bb5b68ff54 Mon Sep 17 00:00:00 2001 From: Tim Bielawa Date: Mon, 29 Aug 2016 10:26:08 -0700 Subject: Change test requirements file name --- utils/Makefile | 4 ++-- utils/requirements.txt | 11 ----------- utils/test-requirements.txt | 11 +++++++++++ 3 files changed, 13 insertions(+), 13 deletions(-) delete mode 100644 utils/requirements.txt create mode 100644 utils/test-requirements.txt (limited to 'utils') diff --git a/utils/Makefile b/utils/Makefile index f80d3c7ad..79c27626a 100644 --- a/utils/Makefile +++ b/utils/Makefile @@ -43,8 +43,8 @@ virtualenv: @echo "# Creating a virtualenv" @echo "#############################################" virtualenv $(NAME)env - . $(NAME)env/bin/activate && pip install setuptools==17.1.1 - . $(NAME)env/bin/activate && pip install -r requirements.txt + . $(NAME)env/bin/activate && pip install setuptools==17.1.1 + . $(NAME)env/bin/activate && pip install -r test-requirements.txt # If there are any special things to install do it here # . $(NAME)env/bin/activate && INSTALL STUFF diff --git a/utils/requirements.txt b/utils/requirements.txt deleted file mode 100644 index f2216a177..000000000 --- a/utils/requirements.txt +++ /dev/null @@ -1,11 +0,0 @@ -enum -configparser -pylint -pep8 -nose -coverage -mock -flake8 -PyYAML -click -backports.functools_lru_cache diff --git a/utils/test-requirements.txt b/utils/test-requirements.txt new file mode 100644 index 000000000..f2216a177 --- /dev/null +++ b/utils/test-requirements.txt @@ -0,0 +1,11 @@ +enum +configparser +pylint +pep8 +nose +coverage +mock +flake8 +PyYAML +click +backports.functools_lru_cache -- cgit v1.2.1