diff options
Diffstat (limited to 'roles')
10 files changed, 321 insertions, 353 deletions
| diff --git a/roles/lib_openshift/library/oc_secret.py b/roles/lib_openshift/library/oc_secret.py index f3bb3c413..c423e9442 100644 --- a/roles/lib_openshift/library/oc_secret.py +++ b/roles/lib_openshift/library/oc_secret.py @@ -1429,7 +1429,7 @@ class Secret(Yedit):      def update_secret(self, key, value):          ''' update a secret'''          # pylint: disable=no-member -        if self.secrets.has_key(key): +        if key in self.secrets:              self.secrets[key] = value          else:              self.add_secret(key, value) @@ -1467,7 +1467,7 @@ class OCSecret(OpenShiftCLI):          if results['returncode'] == 0 and results['results'][0]:              results['exists'] = True              if self.decode: -                if results['results'][0].has_key('data'): +                if 'data' in results['results'][0]:                      for sname, value in results['results'][0]['data'].items():                          results['decoded'][sname] = base64.b64decode(value) diff --git a/roles/lib_openshift/src/class/oc_secret.py b/roles/lib_openshift/src/class/oc_secret.py index 5eac27572..deb36a9fa 100644 --- a/roles/lib_openshift/src/class/oc_secret.py +++ b/roles/lib_openshift/src/class/oc_secret.py @@ -29,7 +29,7 @@ class OCSecret(OpenShiftCLI):          if results['returncode'] == 0 and results['results'][0]:              results['exists'] = True              if self.decode: -                if results['results'][0].has_key('data'): +                if 'data' in results['results'][0]:                      for sname, value in results['results'][0]['data'].items():                          results['decoded'][sname] = base64.b64decode(value) diff --git a/roles/lib_openshift/src/lib/secret.py b/roles/lib_openshift/src/lib/secret.py index 39bf3c33a..1ba78ddd5 100644 --- a/roles/lib_openshift/src/lib/secret.py +++ b/roles/lib_openshift/src/lib/secret.py @@ -91,7 +91,7 @@ class Secret(Yedit):      def update_secret(self, key, value):          ''' update a secret'''          # pylint: disable=no-member -        if self.secrets.has_key(key): +        if key in self.secrets:              self.secrets[key] = value          else:              self.add_secret(key, value) diff --git a/roles/lib_utils/src/class/repoquery.py b/roles/lib_utils/src/class/repoquery.py index 2447719e2..82adcada5 100644 --- a/roles/lib_utils/src/class/repoquery.py +++ b/roles/lib_utils/src/class/repoquery.py @@ -60,7 +60,7 @@ class Repoquery(RepoqueryCLI):          ''' Gather and present the versions of each package '''          versions_dict = {} -        versions_dict['available_versions_full'] = formatted_versions.keys() +        versions_dict['available_versions_full'] = list(formatted_versions.keys())          # set the match version, if called          if self.match_version: diff --git a/roles/openshift_hosted/tasks/router/router.yml b/roles/openshift_hosted/tasks/router/router.yml index b944fa522..3d5713d6b 100644 --- a/roles/openshift_hosted/tasks/router/router.yml +++ b/roles/openshift_hosted/tasks/router/router.yml @@ -78,3 +78,27 @@    changed_when: "'service exists' not in openshift_hosted_router_results.stdout"    failed_when: "openshift_hosted_router_results.rc != 0 and 'service exists' not in openshift_hosted_router_results.stdout and 'deployment_config' not in openshift_hosted_router_results.stderr and 'service' not in openshift_hosted_router_results.stderr"    when: replicas | int > 0 + +- command: > +    {{ openshift.common.client_binary }} +    {% if openshift.hosted.router.name | default(none) is not none -%} +    get dc/{{ openshift.hosted.router.name }} +    {% else %} +    get dc/router +    {% endif%} +    --template=\\{\\{.spec.replicas\\}\\} +    --namespace={{ openshift.hosted.router.namespace | default('default') }} +  register: current_replicas +  when: replicas | int > 0 + +- name: Ensure router replica count matches desired +  command: > +    {{ openshift.common.client_binary }} +    scale --replicas={{ replicas }} +    {% if openshift.hosted.router.name | default(none) is not none -%} +    dc/{{ openshift.hosted.router.name }} +    {% else %} +    dc/router +    {% endif%} +    --namespace={{ openshift.hosted.router.namespace | default('default') }} +  when: replicas | int > 0 and replicas | int != current_replicas.stdout | int diff --git a/roles/openshift_master_facts/test/conftest.py b/roles/openshift_master_facts/test/conftest.py new file mode 100644 index 000000000..e67d24f04 --- /dev/null +++ b/roles/openshift_master_facts/test/conftest.py @@ -0,0 +1,54 @@ +import os +import sys + +import pytest + +sys.path.insert(1, os.path.join(os.path.dirname(__file__), os.pardir, "lookup_plugins")) + +from openshift_master_facts_default_predicates import LookupModule as PredicatesLookupModule  # noqa: E402 +from openshift_master_facts_default_priorities import LookupModule as PrioritiesLookupModule  # noqa: E402 + + +@pytest.fixture() +def predicates_lookup(): +    return PredicatesLookupModule() + + +@pytest.fixture() +def priorities_lookup(): +    return PrioritiesLookupModule() + + +@pytest.fixture() +def facts(request): +    return { +        'openshift': { +            'common': {} +        } +    } + + +@pytest.fixture(params=[True, False]) +def regions_enabled(request): +    return request.param + + +@pytest.fixture(params=[True, False]) +def zones_enabled(request): +    return request.param + + +def v_prefix(release): +    """Prefix a release number with 'v'.""" +    return "v" + release + + +def minor(release): +    """Add a suffix to release, making 'X.Y' become 'X.Y.Z'.""" +    return release + ".1" + + +@pytest.fixture(params=[str, v_prefix, minor]) +def release_mod(request): +    """Modifies a release string to alternative valid values.""" +    return request.param diff --git a/roles/openshift_master_facts/test/openshift_master_facts_bad_input_tests.py b/roles/openshift_master_facts/test/openshift_master_facts_bad_input_tests.py new file mode 100644 index 000000000..e8da1e04a --- /dev/null +++ b/roles/openshift_master_facts/test/openshift_master_facts_bad_input_tests.py @@ -0,0 +1,57 @@ +import copy +import os +import sys + +from ansible.errors import AnsibleError +import pytest + +sys.path.insert(1, os.path.join(os.path.dirname(__file__), os.pardir, "lookup_plugins")) + +from openshift_master_facts_default_predicates import LookupModule  # noqa: E402 + + +class TestOpenShiftMasterFactsBadInput(object): +    lookup = LookupModule() +    default_facts = { +        'openshift': { +            'common': {} +        } +    } + +    def test_missing_openshift_facts(self): +        with pytest.raises(AnsibleError): +            facts = {} +            self.lookup.run(None, variables=facts) + +    def test_missing_deployment_type(self): +        with pytest.raises(AnsibleError): +            facts = copy.deepcopy(self.default_facts) +            facts['openshift']['common']['short_version'] = '10.10' +            self.lookup.run(None, variables=facts) + +    def test_missing_short_version_and_missing_openshift_release(self): +        with pytest.raises(AnsibleError): +            facts = copy.deepcopy(self.default_facts) +            facts['openshift']['common']['deployment_type'] = 'origin' +            self.lookup.run(None, variables=facts) + +    def test_unknown_deployment_types(self): +        with pytest.raises(AnsibleError): +            facts = copy.deepcopy(self.default_facts) +            facts['openshift']['common']['short_version'] = '1.1' +            facts['openshift']['common']['deployment_type'] = 'bogus' +            self.lookup.run(None, variables=facts) + +    def test_unknown_origin_version(self): +        with pytest.raises(AnsibleError): +            facts = copy.deepcopy(self.default_facts) +            facts['openshift']['common']['short_version'] = '0.1' +            facts['openshift']['common']['deployment_type'] = 'origin' +            self.lookup.run(None, variables=facts) + +    def test_unknown_ocp_version(self): +        with pytest.raises(AnsibleError): +            facts = copy.deepcopy(self.default_facts) +            facts['openshift']['common']['short_version'] = '0.1' +            facts['openshift']['common']['deployment_type'] = 'openshift-enterprise' +            self.lookup.run(None, variables=facts) diff --git a/roles/openshift_master_facts/test/openshift_master_facts_default_predicates_tests.py b/roles/openshift_master_facts/test/openshift_master_facts_default_predicates_tests.py index bcfaa55c8..25294d91a 100644 --- a/roles/openshift_master_facts/test/openshift_master_facts_default_predicates_tests.py +++ b/roles/openshift_master_facts/test/openshift_master_facts_default_predicates_tests.py @@ -1,13 +1,5 @@ -import copy -import os -import sys +import pytest -from ansible.errors import AnsibleError -from nose.tools import raises, assert_equal - -sys.path = [os.path.abspath(os.path.dirname(__file__) + "/../lookup_plugins/")] + sys.path - -from openshift_master_facts_default_predicates import LookupModule  # noqa: E402  # Predicates ordered according to OpenShift Origin source:  # origin/vendor/k8s.io/kubernetes/plugin/pkg/scheduler/algorithmprovider/defaults/defaults.go @@ -88,162 +80,83 @@ TEST_VARS = [  ] -class TestOpenShiftMasterFactsDefaultPredicates(object): -    def setUp(self): -        self.lookup = LookupModule() -        self.default_facts = { -            'openshift': { -                'common': {} -            } -        } +def assert_ok(predicates_lookup, default_predicates, regions_enabled, **kwargs): +    results = predicates_lookup.run(None, regions_enabled=regions_enabled, **kwargs) +    if regions_enabled: +        assert results == default_predicates + [REGION_PREDICATE] +    else: +        assert results == default_predicates + + +def test_openshift_version(predicates_lookup, openshift_version_fixture, regions_enabled): +    facts, default_predicates = openshift_version_fixture +    assert_ok(predicates_lookup, default_predicates, variables=facts, regions_enabled=regions_enabled) + + +@pytest.fixture(params=TEST_VARS) +def openshift_version_fixture(request, facts): +    version, deployment_type, default_predicates = request.param +    version += '.1' +    facts['openshift_version'] = version +    facts['openshift']['common']['deployment_type'] = deployment_type +    return facts, default_predicates + + +def test_openshift_release(predicates_lookup, openshift_release_fixture, regions_enabled): +    facts, default_predicates = openshift_release_fixture +    assert_ok(predicates_lookup, default_predicates, variables=facts, regions_enabled=regions_enabled) + + +@pytest.fixture(params=TEST_VARS) +def openshift_release_fixture(request, facts, release_mod): +    release, deployment_type, default_predicates = request.param +    facts['openshift_release'] = release_mod(release) +    facts['openshift']['common']['deployment_type'] = deployment_type +    return facts, default_predicates + + +def test_short_version(predicates_lookup, short_version_fixture, regions_enabled): +    facts, default_predicates = short_version_fixture +    assert_ok(predicates_lookup, default_predicates, variables=facts, regions_enabled=regions_enabled) + + +@pytest.fixture(params=TEST_VARS) +def short_version_fixture(request, facts): +    short_version, deployment_type, default_predicates = request.param +    facts['openshift']['common']['short_version'] = short_version +    facts['openshift']['common']['deployment_type'] = deployment_type +    return facts, default_predicates + + +def test_short_version_kwarg(predicates_lookup, short_version_kwarg_fixture, regions_enabled): +    facts, short_version, default_predicates = short_version_kwarg_fixture +    assert_ok(predicates_lookup, default_predicates, variables=facts, regions_enabled=regions_enabled, short_version=short_version) + + +@pytest.fixture(params=TEST_VARS) +def short_version_kwarg_fixture(request, facts): +    short_version, deployment_type, default_predicates = request.param +    facts['openshift']['common']['deployment_type'] = deployment_type +    return facts, short_version, default_predicates + + +def test_deployment_type_kwarg(predicates_lookup, deployment_type_kwarg_fixture, regions_enabled): +    facts, deployment_type, default_predicates = deployment_type_kwarg_fixture +    assert_ok(predicates_lookup, default_predicates, variables=facts, regions_enabled=regions_enabled, deployment_type=deployment_type) + + +@pytest.fixture(params=TEST_VARS) +def deployment_type_kwarg_fixture(request, facts): +    short_version, deployment_type, default_predicates = request.param +    facts['openshift']['common']['short_version'] = short_version +    return facts, deployment_type, default_predicates + + +def test_short_version_deployment_type_kwargs(predicates_lookup, short_version_deployment_type_kwargs_fixture, regions_enabled): +    short_version, deployment_type, default_predicates = short_version_deployment_type_kwargs_fixture +    assert_ok(predicates_lookup, default_predicates, regions_enabled=regions_enabled, short_version=short_version, deployment_type=deployment_type) + -    @raises(AnsibleError) -    def test_missing_short_version_and_missing_openshift_release(self): -        facts = copy.deepcopy(self.default_facts) -        facts['openshift']['common']['deployment_type'] = 'origin' -        self.lookup.run(None, variables=facts) - -    def check_defaults_short_version(self, short_version, deployment_type, default_predicates, -                                     regions_enabled): -        facts = copy.deepcopy(self.default_facts) -        facts['openshift']['common']['short_version'] = short_version -        facts['openshift']['common']['deployment_type'] = deployment_type -        results = self.lookup.run(None, variables=facts, -                                  regions_enabled=regions_enabled) -        if regions_enabled: -            assert_equal(results, default_predicates + [REGION_PREDICATE]) -        else: -            assert_equal(results, default_predicates) - -    def check_defaults_short_version_kwarg(self, short_version, deployment_type, default_predicates, -                                           regions_enabled): -        facts = copy.deepcopy(self.default_facts) -        facts['openshift']['common']['deployment_type'] = deployment_type -        results = self.lookup.run(None, variables=facts, -                                  regions_enabled=regions_enabled, -                                  short_version=short_version) -        if regions_enabled: -            assert_equal(results, default_predicates + [REGION_PREDICATE]) -        else: -            assert_equal(results, default_predicates) - -    def check_defaults_deployment_type_kwarg(self, short_version, deployment_type, -                                             default_predicates, regions_enabled): -        facts = copy.deepcopy(self.default_facts) -        facts['openshift']['common']['short_version'] = short_version -        results = self.lookup.run(None, variables=facts, -                                  regions_enabled=regions_enabled, -                                  deployment_type=deployment_type) -        if regions_enabled: -            assert_equal(results, default_predicates + [REGION_PREDICATE]) -        else: -            assert_equal(results, default_predicates) - -    def check_defaults_only_kwargs(self, short_version, deployment_type, -                                   default_predicates, regions_enabled): -        facts = copy.deepcopy(self.default_facts) -        results = self.lookup.run(None, variables=facts, -                                  regions_enabled=regions_enabled, -                                  short_version=short_version, -                                  deployment_type=deployment_type) -        if regions_enabled: -            assert_equal(results, default_predicates + [REGION_PREDICATE]) -        else: -            assert_equal(results, default_predicates) - -    def check_defaults_release(self, release, deployment_type, default_predicates, -                               regions_enabled): -        facts = copy.deepcopy(self.default_facts) -        facts['openshift_release'] = release -        facts['openshift']['common']['deployment_type'] = deployment_type -        results = self.lookup.run(None, variables=facts, -                                  regions_enabled=regions_enabled) -        if regions_enabled: -            assert_equal(results, default_predicates + [REGION_PREDICATE]) -        else: -            assert_equal(results, default_predicates) - -    def check_defaults_version(self, version, deployment_type, default_predicates, -                               regions_enabled): -        facts = copy.deepcopy(self.default_facts) -        facts['openshift_version'] = version -        facts['openshift']['common']['deployment_type'] = deployment_type -        results = self.lookup.run(None, variables=facts, -                                  regions_enabled=regions_enabled) -        if regions_enabled: -            assert_equal(results, default_predicates + [REGION_PREDICATE]) -        else: -            assert_equal(results, default_predicates) - -    def test_openshift_version(self): -        for regions_enabled in (True, False): -            for release, deployment_type, default_predicates in TEST_VARS: -                release = release + '.1' -                yield self.check_defaults_version, release, deployment_type, default_predicates, regions_enabled - -    def test_v_release_defaults(self): -        for regions_enabled in (True, False): -            for release, deployment_type, default_predicates in TEST_VARS: -                yield self.check_defaults_release, 'v' + release, deployment_type, default_predicates, regions_enabled - -    def test_release_defaults(self): -        for regions_enabled in (True, False): -            for release, deployment_type, default_predicates in TEST_VARS: -                yield self.check_defaults_release, release, deployment_type, default_predicates, regions_enabled - -    def test_short_version_defaults(self): -        for regions_enabled in (True, False): -            for release, deployment_type, default_predicates in TEST_VARS: -                yield self.check_defaults_short_version, release, deployment_type, default_predicates, regions_enabled - -    def test_short_version_kwarg(self): -        for regions_enabled in (True, False): -            for release, deployment_type, default_predicates in TEST_VARS: -                yield self.check_defaults_short_version_kwarg, release, deployment_type, default_predicates, regions_enabled - -    def test_only_kwargs(self): -        for regions_enabled in (True, False): -            for release, deployment_type, default_predicates in TEST_VARS: -                yield self.check_defaults_only_kwargs, release, deployment_type, default_predicates, regions_enabled - -    def test_deployment_type_kwarg(self): -        for regions_enabled in (True, False): -            for release, deployment_type, default_predicates in TEST_VARS: -                yield self.check_defaults_deployment_type_kwarg, release, deployment_type, default_predicates, regions_enabled - -    def test_trunc_openshift_release(self): -        for release, deployment_type, default_predicates in TEST_VARS: -            release = release + '.1' -            yield self.check_defaults_release, release, deployment_type, default_predicates, False - -    @raises(AnsibleError) -    def test_unknown_deployment_types(self): -        facts = copy.deepcopy(self.default_facts) -        facts['openshift']['common']['short_version'] = '1.1' -        facts['openshift']['common']['deployment_type'] = 'bogus' -        self.lookup.run(None, variables=facts) - -    @raises(AnsibleError) -    def test_unknown_origin_version(self): -        facts = copy.deepcopy(self.default_facts) -        facts['openshift']['common']['short_version'] = '0.1' -        facts['openshift']['common']['deployment_type'] = 'origin' -        self.lookup.run(None, variables=facts) - -    @raises(AnsibleError) -    def test_unknown_ocp_version(self): -        facts = copy.deepcopy(self.default_facts) -        facts['openshift']['common']['short_version'] = '0.1' -        facts['openshift']['common']['deployment_type'] = 'openshift-enterprise' -        self.lookup.run(None, variables=facts) - -    @raises(AnsibleError) -    def test_missing_deployment_type(self): -        facts = copy.deepcopy(self.default_facts) -        facts['openshift']['common']['short_version'] = '10.10' -        self.lookup.run(None, variables=facts) - -    @raises(AnsibleError) -    def testMissingOpenShiftFacts(self): -        facts = {} -        self.lookup.run(None, variables=facts) +@pytest.fixture(params=TEST_VARS) +def short_version_deployment_type_kwargs_fixture(request): +    return request.param diff --git a/roles/openshift_master_facts/test/openshift_master_facts_default_priorities_tests.py b/roles/openshift_master_facts/test/openshift_master_facts_default_priorities_tests.py index 7ddc5dcb2..cec44faa4 100644 --- a/roles/openshift_master_facts/test/openshift_master_facts_default_priorities_tests.py +++ b/roles/openshift_master_facts/test/openshift_master_facts_default_priorities_tests.py @@ -1,13 +1,5 @@ -import copy -import os -import sys +import pytest -from ansible.errors import AnsibleError -from nose.tools import raises, assert_equal - -sys.path = [os.path.abspath(os.path.dirname(__file__) + "/../lookup_plugins/")] + sys.path - -from openshift_master_facts_default_priorities import LookupModule  # noqa: E402  DEFAULT_PRIORITIES_1_1 = [      {'name': 'LeastRequestedPriority', 'weight': 1}, @@ -76,160 +68,83 @@ TEST_VARS = [  ] -class TestOpenShiftMasterFactsDefaultPredicates(object): -    def setUp(self): -        self.lookup = LookupModule() -        self.default_facts = { -            'openshift': { -                'common': {} -            } -        } +def assert_ok(priorities_lookup, default_priorities, zones_enabled, **kwargs): +    results = priorities_lookup.run(None, zones_enabled=zones_enabled, **kwargs) +    if zones_enabled: +        assert results == default_priorities + [ZONE_PRIORITY] +    else: +        assert results == default_priorities + + +def test_openshift_version(priorities_lookup, openshift_version_fixture, zones_enabled): +    facts, default_priorities = openshift_version_fixture +    assert_ok(priorities_lookup, default_priorities, variables=facts, zones_enabled=zones_enabled) + + +@pytest.fixture(params=TEST_VARS) +def openshift_version_fixture(request, facts): +    version, deployment_type, default_priorities = request.param +    version += '.1' +    facts['openshift_version'] = version +    facts['openshift']['common']['deployment_type'] = deployment_type +    return facts, default_priorities + + +def test_openshift_release(priorities_lookup, openshift_release_fixture, zones_enabled): +    facts, default_priorities = openshift_release_fixture +    assert_ok(priorities_lookup, default_priorities, variables=facts, zones_enabled=zones_enabled) + + +@pytest.fixture(params=TEST_VARS) +def openshift_release_fixture(request, facts, release_mod): +    release, deployment_type, default_priorities = request.param +    facts['openshift_release'] = release_mod(release) +    facts['openshift']['common']['deployment_type'] = deployment_type +    return facts, default_priorities + + +def test_short_version(priorities_lookup, short_version_fixture, zones_enabled): +    facts, default_priorities = short_version_fixture +    assert_ok(priorities_lookup, default_priorities, variables=facts, zones_enabled=zones_enabled) + + +@pytest.fixture(params=TEST_VARS) +def short_version_fixture(request, facts): +    short_version, deployment_type, default_priorities = request.param +    facts['openshift']['common']['short_version'] = short_version +    facts['openshift']['common']['deployment_type'] = deployment_type +    return facts, default_priorities + + +def test_short_version_kwarg(priorities_lookup, short_version_kwarg_fixture, zones_enabled): +    facts, short_version, default_priorities = short_version_kwarg_fixture +    assert_ok(priorities_lookup, default_priorities, variables=facts, zones_enabled=zones_enabled, short_version=short_version) + + +@pytest.fixture(params=TEST_VARS) +def short_version_kwarg_fixture(request, facts): +    short_version, deployment_type, default_priorities = request.param +    facts['openshift']['common']['deployment_type'] = deployment_type +    return facts, short_version, default_priorities + + +def test_deployment_type_kwarg(priorities_lookup, deployment_type_kwarg_fixture, zones_enabled): +    facts, deployment_type, default_priorities = deployment_type_kwarg_fixture +    assert_ok(priorities_lookup, default_priorities, variables=facts, zones_enabled=zones_enabled, deployment_type=deployment_type) + + +@pytest.fixture(params=TEST_VARS) +def deployment_type_kwarg_fixture(request, facts): +    short_version, deployment_type, default_priorities = request.param +    facts['openshift']['common']['short_version'] = short_version +    return facts, deployment_type, default_priorities + + +def test_short_version_deployment_type_kwargs(priorities_lookup, short_version_deployment_type_kwargs_fixture, zones_enabled): +    short_version, deployment_type, default_priorities = short_version_deployment_type_kwargs_fixture +    assert_ok(priorities_lookup, default_priorities, zones_enabled=zones_enabled, short_version=short_version, deployment_type=deployment_type) + -    @raises(AnsibleError) -    def test_missing_short_version_and_missing_openshift_release(self): -        facts = copy.deepcopy(self.default_facts) -        facts['openshift']['common']['deployment_type'] = 'origin' -        self.lookup.run(None, variables=facts) - -    def check_defaults_short_version(self, release, deployment_type, -                                     default_priorities, zones_enabled): -        facts = copy.deepcopy(self.default_facts) -        facts['openshift']['common']['short_version'] = release -        facts['openshift']['common']['deployment_type'] = deployment_type -        results = self.lookup.run(None, variables=facts, zones_enabled=zones_enabled) -        if zones_enabled: -            assert_equal(results, default_priorities + [ZONE_PRIORITY]) -        else: -            assert_equal(results, default_priorities) - -    def check_defaults_short_version_kwarg(self, release, deployment_type, -                                           default_priorities, zones_enabled): -        facts = copy.deepcopy(self.default_facts) -        facts['openshift']['common']['deployment_type'] = deployment_type -        results = self.lookup.run(None, variables=facts, -                                  zones_enabled=zones_enabled, -                                  short_version=release) -        if zones_enabled: -            assert_equal(results, default_priorities + [ZONE_PRIORITY]) -        else: -            assert_equal(results, default_priorities) - -    def check_defaults_deployment_type_kwarg(self, release, deployment_type, -                                             default_priorities, zones_enabled): -        facts = copy.deepcopy(self.default_facts) -        facts['openshift']['common']['short_version'] = release -        results = self.lookup.run(None, variables=facts, -                                  zones_enabled=zones_enabled, -                                  deployment_type=deployment_type) -        if zones_enabled: -            assert_equal(results, default_priorities + [ZONE_PRIORITY]) -        else: -            assert_equal(results, default_priorities) - -    def check_defaults_only_kwargs(self, release, deployment_type, -                                   default_priorities, zones_enabled): -        facts = copy.deepcopy(self.default_facts) -        results = self.lookup.run(None, variables=facts, -                                  zones_enabled=zones_enabled, -                                  short_version=release, -                                  deployment_type=deployment_type) -        if zones_enabled: -            assert_equal(results, default_priorities + [ZONE_PRIORITY]) -        else: -            assert_equal(results, default_priorities) - -    def check_defaults_release(self, release, deployment_type, default_priorities, -                               zones_enabled): -        facts = copy.deepcopy(self.default_facts) -        facts['openshift_release'] = release -        facts['openshift']['common']['deployment_type'] = deployment_type -        results = self.lookup.run(None, variables=facts, zones_enabled=zones_enabled) -        if zones_enabled: -            assert_equal(results, default_priorities + [ZONE_PRIORITY]) -        else: -            assert_equal(results, default_priorities) - -    def check_defaults_version(self, release, deployment_type, default_priorities, -                               zones_enabled): -        facts = copy.deepcopy(self.default_facts) -        facts['openshift_version'] = release -        facts['openshift']['common']['deployment_type'] = deployment_type -        results = self.lookup.run(None, variables=facts, zones_enabled=zones_enabled) -        if zones_enabled: -            assert_equal(results, default_priorities + [ZONE_PRIORITY]) -        else: -            assert_equal(results, default_priorities) - -    def test_openshift_version(self): -        for zones_enabled in (True, False): -            for release, deployment_type, default_priorities in TEST_VARS: -                release = release + '.1' -                yield self.check_defaults_version, release, deployment_type, default_priorities, zones_enabled - -    def test_v_release_defaults(self): -        for zones_enabled in (True, False): -            for release, deployment_type, default_priorities in TEST_VARS: -                release = 'v' + release -                yield self.check_defaults_release, release, deployment_type, default_priorities, zones_enabled - -    def test_release_defaults(self): -        for zones_enabled in (True, False): -            for release, deployment_type, default_priorities in TEST_VARS: -                yield self.check_defaults_release, release, deployment_type, default_priorities, zones_enabled - -    def test_short_version_defaults(self): -        for zones_enabled in (True, False): -            for short_version, deployment_type, default_priorities in TEST_VARS: -                yield self.check_defaults_short_version, short_version, deployment_type, default_priorities, zones_enabled - -    def test_only_kwargs(self): -        for zones_enabled in (True, False): -            for short_version, deployment_type, default_priorities in TEST_VARS: -                yield self.check_defaults_only_kwargs, short_version, deployment_type, default_priorities, zones_enabled - -    def test_deployment_type_kwarg(self): -        for zones_enabled in (True, False): -            for short_version, deployment_type, default_priorities in TEST_VARS: -                yield self.check_defaults_deployment_type_kwarg, short_version, deployment_type, default_priorities, zones_enabled - -    def test_release_kwarg(self): -        for zones_enabled in (True, False): -            for short_version, deployment_type, default_priorities in TEST_VARS: -                yield self.check_defaults_short_version_kwarg, short_version, deployment_type, default_priorities, zones_enabled - -    def test_trunc_openshift_release(self): -        for release, deployment_type, default_priorities in TEST_VARS: -            release = release + '.1' -            yield self.check_defaults_release, release, deployment_type, default_priorities, False - -    @raises(AnsibleError) -    def test_unknown_origin_version(self): -        facts = copy.deepcopy(self.default_facts) -        facts['openshift']['common']['short_version'] = '0.1' -        facts['openshift']['common']['deployment_type'] = 'origin' -        self.lookup.run(None, variables=facts) - -    @raises(AnsibleError) -    def test_unknown_ocp_version(self): -        facts = copy.deepcopy(self.default_facts) -        facts['openshift']['common']['short_version'] = '0.1' -        facts['openshift']['common']['deployment_type'] = 'openshift-enterprise' -        self.lookup.run(None, variables=facts) - -    @raises(AnsibleError) -    def test_unknown_deployment_types(self): -        facts = copy.deepcopy(self.default_facts) -        facts['openshift']['common']['short_version'] = '1.1' -        facts['openshift']['common']['deployment_type'] = 'bogus' -        self.lookup.run(None, variables=facts) - -    @raises(AnsibleError) -    def test_missing_deployment_type(self): -        facts = copy.deepcopy(self.default_facts) -        facts['openshift']['common']['short_version'] = '10.10' -        self.lookup.run(None, variables=facts) - -    @raises(AnsibleError) -    def test_missing_openshift_facts(self): -        facts = {} -        self.lookup.run(None, variables=facts) +@pytest.fixture(params=TEST_VARS) +def short_version_deployment_type_kwargs_fixture(request): +    return request.param diff --git a/roles/openshift_node_upgrade/tasks/main.yml b/roles/openshift_node_upgrade/tasks/main.yml index 609ca2a6e..96e296a3b 100644 --- a/roles/openshift_node_upgrade/tasks/main.yml +++ b/roles/openshift_node_upgrade/tasks/main.yml @@ -13,7 +13,10 @@    vars:      # We will restart Docker ourselves after everything is ready:      skip_docker_restart: True -  when: l_docker_upgrade is defined and l_docker_upgrade | bool and not openshift.common.is_atomic | bool +  when: +  - l_docker_upgrade is defined +  - l_docker_upgrade | bool +  - not openshift.common.is_containerized | bool  - include: "{{ node_config_hook }}"    when: node_config_hook is defined @@ -25,14 +28,19 @@    when: not openshift.common.is_containerized | bool  - name: Remove obsolete docker-sdn-ovs.conf -  file: path=/etc/systemd/system/docker.service.d/docker-sdn-ovs.conf state=absent -  when: (deployment_type == 'openshift-enterprise' and openshift_release | version_compare('3.4', '>=')) or (deployment_type == 'origin' and openshift_release | version_compare('1.4', '>=')) +  file: +    path: "/etc/systemd/system/docker.service.d/docker-sdn-ovs.conf" +    state: absent +  when: (deployment_type == 'openshift-enterprise' and openshift_release | version_compare('3.4', '>=')) +     or (deployment_type == 'origin' and openshift_release | version_compare('1.4', '>='))  - include: containerized_node_upgrade.yml    when: openshift.common.is_containerized | bool  - name: Ensure containerized services stopped before Docker restart -  service: name={{ item }} state=stopped +  service: +    name: "{{ item }}" +    state: stopped    with_items:    - etcd_container    - openvswitch @@ -62,22 +70,19 @@  - include: docker/restart.yml  - name: Restart rpm node service -  service: name="{{ openshift.common.service_type }}-node" state=restarted +  service: +    name: "{{ openshift.common.service_type }}-node" +    state: restarted    when: not openshift.common.is_containerized | bool  - name: Wait for node to be ready -  command: > -    {{ hostvars[groups.oo_first_master.0].openshift.common.client_binary }} get node {{ openshift.common.hostname | lower }} --no-headers +  oc_obj: +    state: list +    kind: node +    name: "{{ openshift.common.hostname | lower }}"    register: node_output    delegate_to: "{{ groups.oo_first_master.0 }}" -  until: "{{ node_output.stdout.split()[1].startswith('Ready')}}" -  # Give the node two minutes to come back online. Note that we pre-pull images now -  # so containerized services should restart quickly as well. +  until: node_output.results.results[0].status.conditions | selectattr('type', 'equalto', 'Ready') | map(attribute='status') | join | bool == True +  # Give the node two minutes to come back online.    retries: 24    delay: 5 -  # AUDIT:changed_when: `false` because we are only inspecting the -  # state of the node, we aren't changing anything (we changed node -  # service state in the previous task). You could say we shouldn't -  # override this because something will be changing (the state of a -  # service), but that should be part of the last task. -  changed_when: false | 
