コード例 #1
0
    def test_patch_404(self, mock_patch_namespaced_deployment, mock_list_namespaced_replica_set, mock_read_namespaced_replica_set, mock_delete_replica_set, mock_delete_deployment, mock_logging):
        # Mock patch deployment side effect
        mock_patch_namespaced_deployment.side_effect = client.rest.ApiException(status=404)

        # Mock list return value
        list_return_value = deepcopy(self.correct_list_replica_set)
        mock_list_namespaced_replica_set.return_value = list_return_value

        # Mock read return value
        read_return_value = deepcopy(list_return_value.items[0])
        read_return_value.status = client.V1beta1ReplicaSetStatus()
        read_return_value.status.replicas = 0
        mock_read_namespaced_replica_set.return_value = read_return_value

        # Mock delete replica set return value
        mock_delete_replica_set.return_value = True

        # Mock delete deployment return value
        mock_delete_deployment.return_value = True

        response = reap_deployment(self.name, self.namespace)

        mock_logging.debug.assert_called_once_with('can not gracefully delete nonexistent deploy/{} from ns/{}'.format(self.name, self.namespace))

        rs_name = self.correct_list_replica_set.items[0].metadata.name
        mock_delete_replica_set.assert_called_once_with(rs_name, self.namespace)

        mock_delete_deployment.assert_called_once_with(self.name, self.namespace)

        assert response is True
コード例 #2
0
    def test_delete_deploy_only_after_rs(self, mock_patch_namespaced_deployment, mock_list_namespaced_replica_set, mock_read_namespaced_replica_set, mock_delete_replica_set, mock_delete_deployment, mock_sleep, mock_logging):
        # Mock list return value
        list_return_value = deepcopy(self.correct_list_replica_set)
        mock_list_namespaced_replica_set.return_value = list_return_value

        # Mock read return value
        read_return_value = deepcopy(list_return_value.items[0])
        read_return_value.status = client.V1beta1ReplicaSetStatus()
        read_return_value.status.replicas = 0
        mock_read_namespaced_replica_set.return_value = read_return_value

        # Mock delete replica set return value
        mock_delete_replica_set.return_value = False

        response = reap_deployment(self.name, self.namespace)

        assert response is False
        assert mock_delete_replica_set.called is True
        assert mock_delete_deployment.called is False
コード例 #3
0
    def test_no_more_retries(self, mock_patch_namespaced_deployment, mock_list_namespaced_replica_set, mock_read_namespaced_replica_set, mock_delete_replica_set, mock_delete_deployment, mock_sleep):
        # Mock list return value
        list_return_value = deepcopy(self.correct_list_replica_set)
        mock_list_namespaced_replica_set.return_value = list_return_value

        # Mock read return value
        read_return_value = deepcopy(list_return_value.items[0])
        read_return_value.status = client.V1beta1ReplicaSetStatus()
        read_return_value.status.replicas = 0
        mock_read_namespaced_replica_set.return_value = read_return_value

        # Mock delete replica set return value
        mock_delete_replica_set.return_value = False

        response = reap_deployment(self.name, self.namespace)

        sleep_calls = [call(0), call(2), call(4), call(6), call(8)]
        mock_sleep.assert_has_calls(sleep_calls)

        assert response is False
        assert mock_delete_replica_set.call_count == 5
        assert mock_delete_deployment.called is False
コード例 #4
0
    def test_success(self, mock_patch_namespaced_deployment, mock_list_namespaced_replica_set, mock_read_namespaced_replica_set, mock_delete_replica_set, mock_delete_deployment, mock_logging):
        # Mock list return value
        list_return_value = deepcopy(self.correct_list_replica_set)
        mock_list_namespaced_replica_set.return_value = list_return_value

        # Mock read return value
        read_return_value = deepcopy(list_return_value.items[0])
        read_return_value.status = client.V1beta1ReplicaSetStatus()
        read_return_value.status.replicas = 0
        mock_read_namespaced_replica_set.return_value = read_return_value

        # Mock delete replica set return value
        mock_delete_replica_set.return_value = True

        # Mock delete deployment return value
        mock_delete_deployment.return_value = True

        response = reap_deployment(self.name, self.namespace)

        body = {'spec': {
                    'replicas': 0,
                    'revision_history_limit': 0,
                    'paused': True}}
        mock_patch_namespaced_deployment.assert_called_once_with(
            self.name, self.namespace, body)

        label_selector = get_default_label_selector(name=self.name)
        mock_list_namespaced_replica_set.assert_called_once_with(
            self.namespace, label_selector=label_selector)

        rs_name = self.correct_list_replica_set.items[0].metadata.name
        mock_read_namespaced_replica_set.assert_called_once_with(
            rs_name, self.namespace)

        mock_delete_replica_set.assert_called_once_with(rs_name, self.namespace)
        mock_delete_deployment.assert_called_once_with(self.name, self.namespace)

        assert response is True
コード例 #5
0
    def test_both_deletes_end_loop(self, mock_patch_namespaced_deployment, mock_list_namespaced_replica_set, mock_read_namespaced_replica_set, mock_delete_replica_set, mock_delete_deployment, mock_sleep, mock_logging):
        # Mock list return value
        list_return_value = deepcopy(self.correct_list_replica_set)
        mock_list_namespaced_replica_set.return_value = list_return_value

        # Mock read return value
        read_return_value = deepcopy(list_return_value.items[0])
        read_return_value.status = client.V1beta1ReplicaSetStatus()
        read_return_value.status.replicas = 0
        mock_read_namespaced_replica_set.return_value = read_return_value

        # Mock delete replica set return value
        mock_delete_replica_set.return_value = True

        # Mock delete deployment return value
        mock_delete_replica_set.return_value = True

        response = reap_deployment(self.name, self.namespace)

        mock_sleep.assert_called_once_with(0)
        assert response is True
        assert mock_delete_replica_set.called is True
        assert mock_delete_deployment.called is True