コード例 #1
0
    def test_create_upgrade_path_not_supported(self):
        # Test creation of upgrade when upgrade path is not supported
        create_dict = dbutils.post_get_test_kube_upgrade(to_version='v1.43.3')
        result = self.post_json('/kube_upgrade', create_dict,
                                headers={'User-Agent': 'sysinv-test'},
                                expect_errors=True)

        # Verify the failure
        self.assertEqual(result.content_type, 'application/json')
        self.assertEqual(http_client.BAD_REQUEST, result.status_int)
        self.assertIn("version v1.43.1 cannot upgrade to",
                      result.json['error_message'])
コード例 #2
0
    def test_create_target_version_does_not_exist(self):
        # Test creation of upgrade when target version doesn't exist
        create_dict = dbutils.post_get_test_kube_upgrade(to_version='v1.45.45')
        result = self.post_json('/kube_upgrade', create_dict,
                                headers={'User-Agent': 'sysinv-test'},
                                expect_errors=True)

        # Verify the failure
        self.assertEqual(result.content_type, 'application/json')
        self.assertEqual(http_client.BAD_REQUEST, result.status_int)
        self.assertIn("version v1.45.45 is not available",
                      result.json['error_message'])
コード例 #3
0
    def test_create_available_patch_missing(self):
        # Test creation of upgrade when available patch is missing
        self.mock_patch_is_available_result = False
        create_dict = dbutils.post_get_test_kube_upgrade(to_version='v1.43.2')
        result = self.post_json('/kube_upgrade', create_dict,
                                headers={'User-Agent': 'sysinv-test'},
                                expect_errors=True)

        # Verify the failure
        self.assertEqual(result.content_type, 'application/json')
        self.assertEqual(http_client.BAD_REQUEST, result.status_int)
        self.assertIn("The following patches must be available",
                      result.json['error_message'])
コード例 #4
0
    def test_create_system_unhealthy(self):
        # Test creation of upgrade when system health check fails
        self.fake_conductor_api.get_system_health_return = (
            False, "System is very very unhealthy")
        create_dict = dbutils.post_get_test_kube_upgrade(to_version='v1.43.2')
        result = self.post_json('/kube_upgrade', create_dict,
                                headers={'User-Agent': 'sysinv-test'},
                                expect_errors=True)

        # Verify the failure
        self.assertEqual(result.content_type, 'application/json')
        self.assertEqual(http_client.BAD_REQUEST, result.status_int)
        self.assertIn("System is not in a valid state",
                      result.json['error_message'])
コード例 #5
0
ファイル: test_kube_upgrade.py プロジェクト: rudwo5924/config
    def test_create_system_unhealthy_force(self):
        # Test creation of upgrade when system health check fails but
        # overridden with force
        self.fake_conductor_api.get_system_health_return = (
            False, "System is very very unhealthy")
        create_dict = dbutils.post_get_test_kube_upgrade(to_version='v1.43.2')
        create_dict['force'] = True
        result = self.post_json('/kube_upgrade',
                                create_dict,
                                headers={'User-Agent': 'sysinv-test'})

        # Verify that the upgrade has the expected attributes
        self.assertEqual(result.json['from_version'], 'v1.43.1')
        self.assertEqual(result.json['to_version'], 'v1.43.2')
        self.assertEqual(result.json['state'], kubernetes.KUBE_UPGRADE_STARTED)
コード例 #6
0
ファイル: test_kube_upgrade.py プロジェクト: rudwo5924/config
    def test_create(self):
        # Test creation of upgrade
        create_dict = dbutils.post_get_test_kube_upgrade(to_version='v1.43.2')
        result = self.post_json('/kube_upgrade',
                                create_dict,
                                headers={'User-Agent': 'sysinv-test'})

        # Verify that the upgrade has the expected attributes
        self.assertEqual(result.json['from_version'], 'v1.43.1')
        self.assertEqual(result.json['to_version'], 'v1.43.2')
        self.assertEqual(result.json['state'], kubernetes.KUBE_UPGRADE_STARTED)
        # Verify that the target version for the host was updated
        kube_host_upgrade = self.dbapi.kube_host_upgrade_get_by_host(
            self.host.id)
        self.assertEqual('v1.43.1', kube_host_upgrade.target_version)
コード例 #7
0
    def test_create_system_unhealthy_from_alarms(self):
        """Test creation of a kube upgrade while there are alarms"""
        # Test creation of upgrade when system health check fails
        # 1 alarm, when force is not specified will return False
        self.mock_check_alarms.return_value = (False, 1, 0)

        create_dict = dbutils.post_get_test_kube_upgrade(to_version='v1.43.2')
        result = self.post_json('/kube_upgrade', create_dict,
                                headers={'User-Agent': 'sysinv-test'},
                                expect_errors=True)

        # Verify the failure
        self.assertEqual(result.content_type, 'application/json')
        self.assertEqual(http_client.BAD_REQUEST, result.status_int)
        self.assertIn("System is not in a valid state",
                      result.json['error_message'])
コード例 #8
0
    def test_create_current_version_not_active(self):
        # Test creation of upgrade when current version is not active
        self.kube_get_version_states_result = {'v1.42.1': 'available',
                                               'v1.42.2': 'available',
                                               'v1.43.1': 'partial',
                                               'v1.43.2': 'available',
                                               'v1.43.3': 'available'}
        create_dict = dbutils.post_get_test_kube_upgrade(to_version='v1.43.2')
        result = self.post_json('/kube_upgrade', create_dict,
                                headers={'User-Agent': 'sysinv-test'},
                                expect_errors=True)

        # Verify the failure
        self.assertEqual(result.content_type, 'application/json')
        self.assertEqual(http_client.BAD_REQUEST, result.status_int)
        self.assertIn("version v1.43.1 is not active",
                      result.json['error_message'])
コード例 #9
0
    def test_create_upgrade_exists(self):
        # Test creation of upgrade when upgrade already exists
        dbutils.create_test_kube_upgrade(
            from_version='v1.42.1',
            to_version='v1.42.2',
            state=kubernetes.KUBE_UPGRADING_FIRST_MASTER,
        )
        create_dict = dbutils.post_get_test_kube_upgrade(to_version='v1.43.2')
        result = self.post_json('/kube_upgrade', create_dict,
                                headers={'User-Agent': 'sysinv-test'},
                                expect_errors=True)

        # Verify the failure
        self.assertEqual(result.content_type, 'application/json')
        self.assertEqual(http_client.BAD_REQUEST, result.status_int)
        self.assertIn("upgrade is already in progress",
                      result.json['error_message'])
コード例 #10
0
    def test_create_platform_upgrade_exists(self):
        # Test creation of upgrade when platform upgrade in progress
        dbutils.create_test_load(software_version=dbutils.SW_VERSION_NEW,
                                 compatible_version=dbutils.SW_VERSION,
                                 state=constants.IMPORTED_LOAD_STATE)
        dbutils.create_test_upgrade()

        create_dict = dbutils.post_get_test_kube_upgrade(to_version='v1.43.2')
        result = self.post_json('/kube_upgrade', create_dict,
                                headers={'User-Agent': 'sysinv-test'},
                                expect_errors=True)

        # Verify the failure
        self.assertEqual(result.content_type, 'application/json')
        self.assertEqual(http_client.BAD_REQUEST, result.status_int)
        self.assertIn("upgrade cannot be done while a platform upgrade",
                      result.json['error_message'])
コード例 #11
0
ファイル: test_kube_upgrade.py プロジェクト: starlingx/config
    def test_force_create_system_unhealthy_from_alarms(self):
        # Test creation of upgrade when system health check fails but
        # overridden with force

        # mock a 'non' mgmt_affecting alarm, upgrade can be forced
        self.fake_fm_client.alarm.list.return_value = \
            [FAKE_NON_MGMT_AFFECTING_ALARM, ]
        create_dict = dbutils.post_get_test_kube_upgrade(to_version='v1.43.2')
        create_dict['force'] = True
        result = self.post_json('/kube_upgrade',
                                create_dict,
                                headers={'User-Agent': 'sysinv-test'})

        # Verify that the upgrade has the expected attributes
        self.assertEqual(result.json['from_version'], 'v1.43.1')
        self.assertEqual(result.json['to_version'], 'v1.43.2')
        self.assertEqual(result.json['state'], kubernetes.KUBE_UPGRADE_STARTED)
コード例 #12
0
    def test_force_create_system_unhealthy_from_mgmt_affecting_alarms(self):
        """ Test kube upgrade create fails when mgmt affecting alarms found"""

        # mock a mgmt_affecting alarm, upgrade cannot be forced
        self.mock_check_alarms.return_value = (False, 0, 1)
        create_dict = dbutils.post_get_test_kube_upgrade(
            to_version='v1.43.2')
        create_dict['force'] = True
        result = self.post_json('/kube_upgrade', create_dict,
                                headers={'User-Agent': 'sysinv-test'},
                                expect_errors=True)

        # Verify that the upgrade has the expected attributes
        self.assertEqual(result.content_type, 'application/json')
        self.assertEqual(http_client.BAD_REQUEST, result.status_int)
        self.assertIn("System is not in a valid state",
                      result.json['error_message'])
コード例 #13
0
    def test_create_no_patches_required(self):
        # Test creation of upgrade when no applied patches are required
        self.mock_patch_is_applied_result = False
        self.mock_patch_is_available_result = False
        self.kube_get_kubernetes_version_result = 'v1.43.2'
        self.kube_get_version_states_result = {'v1.42.1': 'available',
                                               'v1.42.2': 'available',
                                               'v1.43.1': 'available',
                                               'v1.43.2': 'active',
                                               'v1.43.3': 'available'}
        create_dict = dbutils.post_get_test_kube_upgrade(to_version='v1.43.3')
        result = self.post_json('/kube_upgrade', create_dict,
                                headers={'User-Agent': 'sysinv-test'})

        # Verify that the upgrade has the expected attributes
        self.assertEqual(result.json['from_version'], 'v1.43.2')
        self.assertEqual(result.json['to_version'], 'v1.43.3')
        self.assertEqual(result.json['state'],
                         kubernetes.KUBE_UPGRADE_STARTED)
コード例 #14
0
ファイル: test_kube_upgrade.py プロジェクト: rudwo5924/config
    def test_create_installed_app_not_compatible(self):
        # Test creation of upgrade when the installed application isn't
        # compatible with the new kubernetes version

        # Create application
        dbutils.create_test_app(name='stx-openstack',
                                app_version='1.0-19',
                                manifest_name='openstack-armada-manifest',
                                manifest_file='stx-openstack.yaml',
                                status='applied',
                                active=True)

        create_dict = dbutils.post_get_test_kube_upgrade(to_version='v1.43.2')
        result = self.post_json('/kube_upgrade',
                                create_dict,
                                headers={'User-Agent': 'sysinv-test'},
                                expect_errors=True)

        # Verify the failure
        self.assertEqual(result.content_type, 'application/json')
        self.assertEqual(http_client.BAD_REQUEST, result.status_int)
        self.assertIn("incompatible with the new Kubernetes version v1.43.2",
                      result.json['error_message'])
コード例 #15
0
ファイル: test_kube_upgrade.py プロジェクト: starlingx/config
    def test_create_system_unhealthy_from_bad_apps(self):
        """ Test kube upgrade create fails when invalid kube app found"""

        # The app is not fully setup, health query should fail
        dbutils.create_test_app(name='broken-app',
                                status=constants.APP_APPLY_IN_PROGRESS)

        # Test creation of upgrade when system health check fails from bad app
        create_dict = dbutils.post_get_test_kube_upgrade(to_version='v1.43.2')
        create_dict['force'] = True
        result = self.post_json('/kube_upgrade',
                                create_dict,
                                headers={'User-Agent': 'sysinv-test'},
                                expect_errors=True)

        # Verify that the upgrade has the expected attributes
        self.assertEqual(result.content_type, 'application/json')
        self.assertEqual(http_client.BAD_REQUEST, result.status_int)
        # The error should contain the following:
        #   System is not in a valid state for kubernetes upgrade.
        #   Run system health-query-kube-upgrade for more details.
        self.assertIn("Run system health-query-kube-upgrade for more details.",
                      result.json['error_message'])