Prevent upgrade strategy creation on un-upgraded controller-0
Preventing the creation of an upgrade orchestration strategy from controller-0, if controller-0 has not yet been upgraded. Orchestration only works after controller-1 has been upgraded and made active. Change-Id: Ic6a8dcf35ddf7d748645837127c3b170dd24c119
This commit is contained in:
parent
5ba2ddc9dd
commit
ad8c7d1d2b
|
@ -1 +1 @@
|
||||||
TIS_PATCH_VER=71
|
TIS_PATCH_VER=72
|
||||||
|
|
|
@ -277,10 +277,14 @@ def fake_timer(a, b, c, d):
|
||||||
return 1234
|
return 1234
|
||||||
|
|
||||||
|
|
||||||
def fake_host_name():
|
def fake_host_name_controller_1():
|
||||||
return 'controller-1'
|
return 'controller-1'
|
||||||
|
|
||||||
|
|
||||||
|
def fake_host_name_controller_0():
|
||||||
|
return 'controller-0'
|
||||||
|
|
||||||
|
|
||||||
def fake_event_issue(a, b, c, d):
|
def fake_event_issue(a, b, c, d):
|
||||||
"""
|
"""
|
||||||
Mock out the _event_issue function because it is being called when instance
|
Mock out the _event_issue function because it is being called when instance
|
||||||
|
@ -300,7 +304,6 @@ def fake_event_issue(a, b, c, d):
|
||||||
@mock.patch('nfv_vim.tables._host_group_table._host_group_table', _host_group_table)
|
@mock.patch('nfv_vim.tables._host_group_table._host_group_table', _host_group_table)
|
||||||
@mock.patch('nfv_vim.tables._host_aggregate_table._host_aggregate_table', _host_aggregate_table)
|
@mock.patch('nfv_vim.tables._host_aggregate_table._host_aggregate_table', _host_aggregate_table)
|
||||||
@mock.patch('nfv_vim.tables._instance_table._instance_table', _instance_table)
|
@mock.patch('nfv_vim.tables._instance_table._instance_table', _instance_table)
|
||||||
@mock.patch('nfv_vim.strategy._strategy.get_local_host_name', fake_host_name)
|
|
||||||
class TestSwUpgradeStrategy:
|
class TestSwUpgradeStrategy:
|
||||||
|
|
||||||
def setup(self):
|
def setup(self):
|
||||||
|
@ -333,6 +336,8 @@ class TestSwUpgradeStrategy:
|
||||||
_host_group_table.clear()
|
_host_group_table.clear()
|
||||||
_host_aggregate_table.clear()
|
_host_aggregate_table.clear()
|
||||||
|
|
||||||
|
@mock.patch('nfv_vim.strategy._strategy.get_local_host_name',
|
||||||
|
fake_host_name_controller_1)
|
||||||
def test_sw_upgrade_strategy_compute_stages_ignore(self):
|
def test_sw_upgrade_strategy_compute_stages_ignore(self):
|
||||||
"""
|
"""
|
||||||
Test the sw_upgrade strategy add compute strategy stages:
|
Test the sw_upgrade strategy add compute strategy stages:
|
||||||
|
@ -382,6 +387,8 @@ class TestSwUpgradeStrategy:
|
||||||
validate_strategy_persists(strategy)
|
validate_strategy_persists(strategy)
|
||||||
validate_phase(apply_phase, expected_results)
|
validate_phase(apply_phase, expected_results)
|
||||||
|
|
||||||
|
@mock.patch('nfv_vim.strategy._strategy.get_local_host_name',
|
||||||
|
fake_host_name_controller_1)
|
||||||
def test_sw_upgrade_strategy_compute_stages_parallel_migrate_anti_affinity(self):
|
def test_sw_upgrade_strategy_compute_stages_parallel_migrate_anti_affinity(self):
|
||||||
"""
|
"""
|
||||||
Test the sw_upgrade strategy add compute strategy stages:
|
Test the sw_upgrade strategy add compute strategy stages:
|
||||||
|
@ -479,6 +486,8 @@ class TestSwUpgradeStrategy:
|
||||||
validate_strategy_persists(strategy)
|
validate_strategy_persists(strategy)
|
||||||
validate_phase(apply_phase, expected_results)
|
validate_phase(apply_phase, expected_results)
|
||||||
|
|
||||||
|
@mock.patch('nfv_vim.strategy._strategy.get_local_host_name',
|
||||||
|
fake_host_name_controller_1)
|
||||||
def test_sw_upgrade_strategy_compute_stages_parallel_migrate_ten_hosts(self):
|
def test_sw_upgrade_strategy_compute_stages_parallel_migrate_ten_hosts(self):
|
||||||
"""
|
"""
|
||||||
Test the sw_upgrade strategy add compute strategy stages:
|
Test the sw_upgrade strategy add compute strategy stages:
|
||||||
|
@ -601,6 +610,8 @@ class TestSwUpgradeStrategy:
|
||||||
validate_strategy_persists(strategy)
|
validate_strategy_persists(strategy)
|
||||||
validate_phase(apply_phase, expected_results)
|
validate_phase(apply_phase, expected_results)
|
||||||
|
|
||||||
|
@mock.patch('nfv_vim.strategy._strategy.get_local_host_name',
|
||||||
|
fake_host_name_controller_1)
|
||||||
def test_sw_upgrade_strategy_compute_stages_parallel_migrate_fifty_hosts(self):
|
def test_sw_upgrade_strategy_compute_stages_parallel_migrate_fifty_hosts(self):
|
||||||
"""
|
"""
|
||||||
Test the sw_upgrade strategy add compute strategy stages:
|
Test the sw_upgrade strategy add compute strategy stages:
|
||||||
|
@ -708,6 +719,8 @@ class TestSwUpgradeStrategy:
|
||||||
validate_strategy_persists(strategy)
|
validate_strategy_persists(strategy)
|
||||||
validate_phase(apply_phase, expected_results)
|
validate_phase(apply_phase, expected_results)
|
||||||
|
|
||||||
|
@mock.patch('nfv_vim.strategy._strategy.get_local_host_name',
|
||||||
|
fake_host_name_controller_1)
|
||||||
def test_sw_upgrade_strategy_compute_stages_serial_migrate(self):
|
def test_sw_upgrade_strategy_compute_stages_serial_migrate(self):
|
||||||
"""
|
"""
|
||||||
Test the sw_upgrade strategy add compute strategy stages:
|
Test the sw_upgrade strategy add compute strategy stages:
|
||||||
|
@ -813,6 +826,8 @@ class TestSwUpgradeStrategy:
|
||||||
validate_strategy_persists(strategy)
|
validate_strategy_persists(strategy)
|
||||||
validate_phase(apply_phase, expected_results)
|
validate_phase(apply_phase, expected_results)
|
||||||
|
|
||||||
|
@mock.patch('nfv_vim.strategy._strategy.get_local_host_name',
|
||||||
|
fake_host_name_controller_1)
|
||||||
def test_sw_upgrade_strategy_compute_stages_serial_migrate_locked_instance(self):
|
def test_sw_upgrade_strategy_compute_stages_serial_migrate_locked_instance(self):
|
||||||
"""
|
"""
|
||||||
Test the sw_upgrade strategy add compute strategy stages:
|
Test the sw_upgrade strategy add compute strategy stages:
|
||||||
|
@ -856,6 +871,8 @@ class TestSwUpgradeStrategy:
|
||||||
|
|
||||||
assert success == False, "Strategy creation did not fail"
|
assert success == False, "Strategy creation did not fail"
|
||||||
|
|
||||||
|
@mock.patch('nfv_vim.strategy._strategy.get_local_host_name',
|
||||||
|
fake_host_name_controller_1)
|
||||||
def test_sw_upgrade_strategy_storage_stages_ignore(self):
|
def test_sw_upgrade_strategy_storage_stages_ignore(self):
|
||||||
"""
|
"""
|
||||||
Test the sw_upgrade strategy add storage strategy stages:
|
Test the sw_upgrade strategy add storage strategy stages:
|
||||||
|
@ -901,6 +918,8 @@ class TestSwUpgradeStrategy:
|
||||||
validate_strategy_persists(strategy)
|
validate_strategy_persists(strategy)
|
||||||
validate_phase(apply_phase, expected_results)
|
validate_phase(apply_phase, expected_results)
|
||||||
|
|
||||||
|
@mock.patch('nfv_vim.strategy._strategy.get_local_host_name',
|
||||||
|
fake_host_name_controller_1)
|
||||||
def test_sw_upgrade_strategy_storage_stages_parallel_host_group(self):
|
def test_sw_upgrade_strategy_storage_stages_parallel_host_group(self):
|
||||||
"""
|
"""
|
||||||
Test the sw_upgrade strategy add storage strategy stages:
|
Test the sw_upgrade strategy add storage strategy stages:
|
||||||
|
@ -988,6 +1007,8 @@ class TestSwUpgradeStrategy:
|
||||||
validate_strategy_persists(strategy)
|
validate_strategy_persists(strategy)
|
||||||
validate_phase(apply_phase, expected_results)
|
validate_phase(apply_phase, expected_results)
|
||||||
|
|
||||||
|
@mock.patch('nfv_vim.strategy._strategy.get_local_host_name',
|
||||||
|
fake_host_name_controller_1)
|
||||||
def test_sw_upgrade_strategy_storage_stages_serial(self):
|
def test_sw_upgrade_strategy_storage_stages_serial(self):
|
||||||
"""
|
"""
|
||||||
Test the sw_upgrade strategy add storage strategy stages:
|
Test the sw_upgrade strategy add storage strategy stages:
|
||||||
|
@ -1090,6 +1111,8 @@ class TestSwUpgradeStrategy:
|
||||||
validate_strategy_persists(strategy)
|
validate_strategy_persists(strategy)
|
||||||
validate_phase(apply_phase, expected_results)
|
validate_phase(apply_phase, expected_results)
|
||||||
|
|
||||||
|
@mock.patch('nfv_vim.strategy._strategy.get_local_host_name',
|
||||||
|
fake_host_name_controller_1)
|
||||||
def test_sw_upgrade_strategy_controller_stages_serial(self):
|
def test_sw_upgrade_strategy_controller_stages_serial(self):
|
||||||
"""
|
"""
|
||||||
Test the sw_upgrade strategy add controller strategy stages:
|
Test the sw_upgrade strategy add controller strategy stages:
|
||||||
|
@ -1137,6 +1160,8 @@ class TestSwUpgradeStrategy:
|
||||||
validate_strategy_persists(strategy)
|
validate_strategy_persists(strategy)
|
||||||
validate_phase(apply_phase, expected_results)
|
validate_phase(apply_phase, expected_results)
|
||||||
|
|
||||||
|
@mock.patch('nfv_vim.strategy._strategy.get_local_host_name',
|
||||||
|
fake_host_name_controller_1)
|
||||||
def test_sw_upgrade_strategy_controller_stages_serial_start_upgrade(self):
|
def test_sw_upgrade_strategy_controller_stages_serial_start_upgrade(self):
|
||||||
"""
|
"""
|
||||||
Test the sw_upgrade strategy add controller strategy stages:
|
Test the sw_upgrade strategy add controller strategy stages:
|
||||||
|
@ -1200,6 +1225,8 @@ class TestSwUpgradeStrategy:
|
||||||
validate_strategy_persists(strategy)
|
validate_strategy_persists(strategy)
|
||||||
validate_phase(apply_phase, expected_results)
|
validate_phase(apply_phase, expected_results)
|
||||||
|
|
||||||
|
@mock.patch('nfv_vim.strategy._strategy.get_local_host_name',
|
||||||
|
fake_host_name_controller_1)
|
||||||
def test_sw_upgrade_strategy_cpe_stages_serial(self):
|
def test_sw_upgrade_strategy_cpe_stages_serial(self):
|
||||||
"""
|
"""
|
||||||
Test the sw_upgrade strategy add controller strategy stages:
|
Test the sw_upgrade strategy add controller strategy stages:
|
||||||
|
@ -1385,6 +1412,8 @@ class TestSwUpgradeStrategy:
|
||||||
validate_strategy_persists(strategy)
|
validate_strategy_persists(strategy)
|
||||||
validate_phase(apply_phase, expected_results)
|
validate_phase(apply_phase, expected_results)
|
||||||
|
|
||||||
|
@mock.patch('nfv_vim.strategy._strategy.get_local_host_name',
|
||||||
|
fake_host_name_controller_1)
|
||||||
def test_sw_upgrade_strategy_build_complete_serial_migrate(self):
|
def test_sw_upgrade_strategy_build_complete_serial_migrate(self):
|
||||||
"""
|
"""
|
||||||
Test the sw_upgrade strategy build_complete:
|
Test the sw_upgrade strategy build_complete:
|
||||||
|
@ -1487,6 +1516,8 @@ class TestSwUpgradeStrategy:
|
||||||
validate_strategy_persists(strategy)
|
validate_strategy_persists(strategy)
|
||||||
validate_phase(apply_phase, expected_results)
|
validate_phase(apply_phase, expected_results)
|
||||||
|
|
||||||
|
@mock.patch('nfv_vim.strategy._strategy.get_local_host_name',
|
||||||
|
fake_host_name_controller_1)
|
||||||
def test_sw_upgrade_strategy_build_complete_invalid_state(self):
|
def test_sw_upgrade_strategy_build_complete_invalid_state(self):
|
||||||
"""
|
"""
|
||||||
Test the sw_upgrade strategy build_complete:
|
Test the sw_upgrade strategy build_complete:
|
||||||
|
@ -1530,6 +1561,8 @@ class TestSwUpgradeStrategy:
|
||||||
|
|
||||||
validate_phase(build_phase, expected_results)
|
validate_phase(build_phase, expected_results)
|
||||||
|
|
||||||
|
@mock.patch('nfv_vim.strategy._strategy.get_local_host_name',
|
||||||
|
fake_host_name_controller_1)
|
||||||
def test_sw_upgrade_strategy_build_complete_no_upgrade_required(self):
|
def test_sw_upgrade_strategy_build_complete_no_upgrade_required(self):
|
||||||
"""
|
"""
|
||||||
Test the sw_upgrade strategy build_complete:
|
Test the sw_upgrade strategy build_complete:
|
||||||
|
@ -1569,6 +1602,8 @@ class TestSwUpgradeStrategy:
|
||||||
|
|
||||||
validate_phase(build_phase, expected_results)
|
validate_phase(build_phase, expected_results)
|
||||||
|
|
||||||
|
@mock.patch('nfv_vim.strategy._strategy.get_local_host_name',
|
||||||
|
fake_host_name_controller_1)
|
||||||
def test_sw_upgrade_strategy_build_complete_unupgraded_controller_1(self):
|
def test_sw_upgrade_strategy_build_complete_unupgraded_controller_1(self):
|
||||||
"""
|
"""
|
||||||
Test the sw_upgrade strategy build_complete:
|
Test the sw_upgrade strategy build_complete:
|
||||||
|
@ -1612,6 +1647,54 @@ class TestSwUpgradeStrategy:
|
||||||
|
|
||||||
validate_phase(build_phase, expected_results)
|
validate_phase(build_phase, expected_results)
|
||||||
|
|
||||||
|
@mock.patch('nfv_vim.strategy._strategy.get_local_host_name',
|
||||||
|
fake_host_name_controller_0)
|
||||||
|
def test_sw_upgrade_strategy_build_complete_from_controller_0(self):
|
||||||
|
"""
|
||||||
|
Test the sw_upgrade strategy build_complete:
|
||||||
|
- attempting build from controller-0
|
||||||
|
Verify:
|
||||||
|
- build fails
|
||||||
|
"""
|
||||||
|
create_host('controller-0')
|
||||||
|
create_host('controller-1')
|
||||||
|
create_host('compute-0')
|
||||||
|
create_host('compute-1')
|
||||||
|
create_host('compute-2')
|
||||||
|
create_host('compute-3')
|
||||||
|
|
||||||
|
create_instance('small',
|
||||||
|
"test_instance_0",
|
||||||
|
'compute-0')
|
||||||
|
create_instance('small',
|
||||||
|
"test_instance_1",
|
||||||
|
'compute-1')
|
||||||
|
|
||||||
|
strategy = create_sw_upgrade_strategy(
|
||||||
|
compute_apply_type=SW_UPDATE_APPLY_TYPE.SERIAL,
|
||||||
|
nfvi_upgrade = nfvi.objects.v1.Upgrade(
|
||||||
|
UPGRADE_STATE.UPGRADING_CONTROLLERS,
|
||||||
|
'12.01',
|
||||||
|
'13.01')
|
||||||
|
)
|
||||||
|
|
||||||
|
fake_upgrade_obj = SwUpgrade()
|
||||||
|
strategy.sw_update_obj = fake_upgrade_obj
|
||||||
|
strategy.build_complete(common_strategy.STRATEGY_RESULT.SUCCESS, "")
|
||||||
|
|
||||||
|
build_phase = strategy.build_phase.as_dict()
|
||||||
|
|
||||||
|
expected_results = {
|
||||||
|
'total_stages': 0,
|
||||||
|
'result': 'failed',
|
||||||
|
'result_reason': 'controller-1 must be active for orchestration '
|
||||||
|
'to upgrade controller-0'
|
||||||
|
}
|
||||||
|
|
||||||
|
validate_phase(build_phase, expected_results)
|
||||||
|
|
||||||
|
@mock.patch('nfv_vim.strategy._strategy.get_local_host_name',
|
||||||
|
fake_host_name_controller_1)
|
||||||
def test_sw_upgrade_strategy_build_complete_locked_controller(self):
|
def test_sw_upgrade_strategy_build_complete_locked_controller(self):
|
||||||
"""
|
"""
|
||||||
Test the sw_upgrade strategy build_complete:
|
Test the sw_upgrade strategy build_complete:
|
||||||
|
@ -1656,6 +1739,8 @@ class TestSwUpgradeStrategy:
|
||||||
|
|
||||||
validate_phase(build_phase, expected_results)
|
validate_phase(build_phase, expected_results)
|
||||||
|
|
||||||
|
@mock.patch('nfv_vim.strategy._strategy.get_local_host_name',
|
||||||
|
fake_host_name_controller_1)
|
||||||
def test_sw_upgrade_strategy_build_complete_locked_compute(self):
|
def test_sw_upgrade_strategy_build_complete_locked_compute(self):
|
||||||
"""
|
"""
|
||||||
Test the sw_upgrade strategy build_complete:
|
Test the sw_upgrade strategy build_complete:
|
||||||
|
|
|
@ -1428,6 +1428,24 @@ class SwUpgradeStrategy(SwUpdateStrategy):
|
||||||
self.save()
|
self.save()
|
||||||
return
|
return
|
||||||
|
|
||||||
|
# If controller-1 has been upgraded and we have yet to upgrade
|
||||||
|
# controller-0, then controller-1 must be active.
|
||||||
|
if UPGRADE_STATE.UPGRADING_CONTROLLERS == self.nfvi_upgrade.state:
|
||||||
|
if HOST_NAME.CONTROLLER_1 != get_local_host_name():
|
||||||
|
DLOG.warn(
|
||||||
|
"Controller-1 must be active for orchestration to "
|
||||||
|
"upgrade controller-0.")
|
||||||
|
self._state = strategy.STRATEGY_STATE.BUILD_FAILED
|
||||||
|
self.build_phase.result = \
|
||||||
|
strategy.STRATEGY_PHASE_RESULT.FAILED
|
||||||
|
self.build_phase.result_reason = (
|
||||||
|
'controller-1 must be active for orchestration to '
|
||||||
|
'upgrade controller-0')
|
||||||
|
self.sw_update_obj.strategy_build_complete(
|
||||||
|
False, self.build_phase.result_reason)
|
||||||
|
self.save()
|
||||||
|
return
|
||||||
|
|
||||||
if self._nfvi_alarms:
|
if self._nfvi_alarms:
|
||||||
DLOG.warn(
|
DLOG.warn(
|
||||||
"Active alarms found, can't apply software upgrade.")
|
"Active alarms found, can't apply software upgrade.")
|
||||||
|
|
Loading…
Reference in New Issue