Extract out deployment rollout and add tests
This commit is contained in:
parent
128cf0a28d
commit
a6ffe49cba
5 changed files with 140 additions and 72 deletions
|
@ -2,10 +2,58 @@ import pytest
|
|||
|
||||
from httmock import urlmatch, HTTMock, response
|
||||
|
||||
from config_app.config_util.k8saccessor import KubernetesAccessorSingleton
|
||||
from config_app.config_util.k8saccessor import KubernetesAccessorSingleton, _deployment_rollout_status_message
|
||||
from config_app.config_util.k8sconfig import KubernetesConfig
|
||||
|
||||
|
||||
@pytest.mark.parametrize('deployment_object, expected_status, expected_message', [
|
||||
({'metadata': {'generation': 1},
|
||||
'status': {'observedGeneration': 0, 'conditions': []},
|
||||
'spec': {'replicas': 0}},
|
||||
'progressing',
|
||||
'Waiting for deployment spec to be updated...'),
|
||||
({'metadata': {'generation': 0},
|
||||
'status': {'observedGeneration': 0, 'conditions': [{'type': 'Progressing', 'reason': 'ProgressDeadlineExceeded'}]},
|
||||
'spec': {'replicas': 0}},
|
||||
'failed',
|
||||
"Deployment my-deployment's rollout failed. Please try again later."),
|
||||
({'metadata': {'generation': 0},
|
||||
'status': {'observedGeneration': 0, 'conditions': []},
|
||||
'spec': {'replicas': 0}},
|
||||
'available',
|
||||
'Deployment my-deployment updated (no replicas, so nothing to roll out)'),
|
||||
({'metadata': {'generation': 0},
|
||||
'status': {'observedGeneration': 0, 'conditions': [], 'replicas': 1},
|
||||
'spec': {'replicas': 2}},
|
||||
'progressing',
|
||||
'Waiting for rollout to finish: 0 out of 2 new replicas have been updated...'),
|
||||
({'metadata': {'generation': 0},
|
||||
'status': {'observedGeneration': 0, 'conditions': [], 'replicas': 1, 'updatedReplicas': 1},
|
||||
'spec': {'replicas': 2}},
|
||||
'progressing',
|
||||
'Waiting for rollout to finish: 1 out of 2 new replicas have been updated...'),
|
||||
({'metadata': {'generation': 0},
|
||||
'status': {'observedGeneration': 0, 'conditions': [], 'replicas': 2, 'updatedReplicas': 1},
|
||||
'spec': {'replicas': 1}},
|
||||
'progressing',
|
||||
'Waiting for rollout to finish: 1 old replicas are pending termination...'),
|
||||
({'metadata': {'generation': 0},
|
||||
'status': {'observedGeneration': 0, 'conditions': [], 'replicas': 1, 'updatedReplicas': 2, 'availableReplicas': 0},
|
||||
'spec': {'replicas': 0}},
|
||||
'progressing',
|
||||
'Waiting for rollout to finish: 0 of 2 updated replicas are available...'),
|
||||
({'metadata': {'generation': 0},
|
||||
'status': {'observedGeneration': 0, 'conditions': [], 'replicas': 1, 'updatedReplicas': 2, 'availableReplicas': 2},
|
||||
'spec': {'replicas': 0}},
|
||||
'available',
|
||||
'Deployment my-deployment successfully rolled out.'),
|
||||
])
|
||||
def test_deployment_rollout_status_message(deployment_object, expected_status, expected_message):
|
||||
deployment_status = _deployment_rollout_status_message(deployment_object, 'my-deployment')
|
||||
assert deployment_status.status == expected_status
|
||||
assert deployment_status.message == expected_message
|
||||
|
||||
|
||||
@pytest.mark.parametrize('kube_config, expected_api, expected_query', [
|
||||
({'api_host': 'www.customhost.com'},
|
||||
'/apis/extensions/v1beta1/namespaces/quay-enterprise/deployments', 'labelSelector=quay-enterprise-component%3Dapp'),
|
||||
|
|
Reference in a new issue