def test_health_monitor_update_with_flavor_task(self, mock_hm_name): mock_hm_name.return_value = a10constants.MOCK_HM_ID flavor = { "health_monitor": { "retry": 5, "method": { "http": { "http_response_code": "201" } } } } update_dict = {} hm_task = task.UpdateHealthMonitor() hm_task.axapi_client = self.client_mock mock_hm = copy.deepcopy(HM) mock_hm.delay = 30 mock_hm.name = "hm1" hm_task.execute(LISTENERS, mock_hm, VTHUNDER, update_dict, flavor=flavor) self.client_mock.slb.hm.update.assert_called_with( a10constants.MOCK_HM_ID, self.client_mock.slb.hm.TCP, mock_hm.delay, mock_hm.timeout, mock_hm.rise_threshold, method=None, port=mock.ANY, url=None, post_data=None, expect_code=None, **FLAVOR_ARGS)
def test_health_monitor_update_task(self, mock_hm_name): mock_hm_name.return_value = a10constants.MOCK_HM_ID hm_task = task.UpdateHealthMonitor() hm_task.axapi_client = self.client_mock update_dict = {'delay': '10'} mock_hm = copy.deepcopy(HM) hm_task.execute(LISTENERS, mock_hm, VTHUNDER, update_dict) self.client_mock.slb.hm.update.assert_called_with( a10constants.MOCK_HM_ID, self.client_mock.slb.hm.TCP, mock_hm.delay, mock_hm.timeout, mock_hm.rise_threshold, method=None, port=mock.ANY, url=None, expect_code=None, post_data=None, **ARGS) self.conf.config(group=a10constants.HEALTH_MONITOR_SECTION, post_data='abc=1') hm_task.execute(LISTENERS, mock_hm, VTHUNDER, update_dict) self.client_mock.slb.hm.update.assert_called_with( a10constants.MOCK_HM_ID, self.client_mock.slb.hm.TCP, mock_hm.delay, mock_hm.timeout, mock_hm.rise_threshold, method=None, port=mock.ANY, url=None, expect_code=None, post_data='abc=1', **ARGS)
def get_update_health_monitor_flow(self): """Create a flow to update a health monitor :returns: The flow for updating a health monitor """ update_hm_flow = linear_flow.Flow(constants.UPDATE_HEALTH_MONITOR_FLOW) update_hm_flow.add( lifecycle_tasks.HealthMonitorToErrorOnRevertTask(requires=[ constants.HEALTH_MON, constants.LISTENERS, constants.LOADBALANCER ])) update_hm_flow.add( database_tasks.MarkHealthMonitorPendingUpdateInDB( requires=constants.HEALTH_MON)) update_hm_flow.add( a10_database_tasks.GetVThunderByLoadBalancer( requires=constants.LOADBALANCER, provides=a10constants.VTHUNDER)) update_hm_flow.add( a10_database_tasks.GetFlavorData( rebind={a10constants.LB_RESOURCE: constants.LOADBALANCER}, provides=constants.FLAVOR)) update_hm_flow.add( health_monitor_tasks.UpdateHealthMonitor(requires=[ constants.LISTENERS, constants.HEALTH_MON, a10constants.VTHUNDER, constants.UPDATE_DICT, constants.FLAVOR ])) update_hm_flow.add( database_tasks.UpdateHealthMonInDB( requires=[constants.HEALTH_MON, constants.UPDATE_DICT])) update_hm_flow.add( database_tasks.MarkHealthMonitorActiveInDB( requires=constants.HEALTH_MON)) update_hm_flow.add( database_tasks.MarkPoolActiveInDB(requires=constants.POOL)) update_hm_flow.add( database_tasks.MarkLBAndListenersActiveInDB( requires=[constants.LOADBALANCER, constants.LISTENERS])) update_hm_flow.add( vthunder_tasks.WriteMemory( name=a10constants.WRITE_MEM_FOR_LOCAL_PARTITION, requires=(a10constants.VTHUNDER))) update_hm_flow.add( vthunder_tasks.WriteMemory( name=a10constants.WRITE_MEM_FOR_SHARED_PARTITION, requires=(a10constants.VTHUNDER, a10constants.WRITE_MEM_SHARED_PART))) update_hm_flow.add( a10_database_tasks.SetThunderUpdatedAt( requires=(a10constants.VTHUNDER))) return update_hm_flow
def test_health_monitor_update_with_regex_overwrite_flavor_task(self): flavor = { "health_monitor": { "retry": 5, "timeout": 90, "method": { "http": { "http_response_code": "201" } }, "name_expressions": [{ "regex": "hm1", "json": { "timeout": 8, "method": { "http": { "http_host": "my.test.com" } } } }] } } update_dict = {} hm_task = task.UpdateHealthMonitor() hm_task.axapi_client = self.client_mock mock_hm = copy.deepcopy(HM) mock_hm.delay = 30 mock_hm.name = "hm1" hm_task.execute(LISTENERS, mock_hm, VTHUNDER, update_dict, flavor=flavor) self.client_mock.slb.hm.update.assert_called_with( a10constants.MOCK_HM_ID, self.client_mock.slb.hm.TCP, mock_hm.delay, mock_hm.timeout, mock_hm.rise_threshold, method=None, port=mock.ANY, url=None, expect_code=None, post_data=None, **FLAVOR_WITH_REGEX_ARGS)
def test_health_monitor_update_task(self): mock_hm = task.UpdateHealthMonitor() mock_hm.axapi_client = self.client_mock update_dict = {'delay': '10'} hm = copy.deepcopy(HM) mock_hm.execute(LISTENERS, hm, VTHUNDER, update_dict) self.client_mock.slb.hm.update.assert_called_with( a10constants.MOCK_HM_ID, self.client_mock.slb.hm.TCP, hm.delay, hm.timeout, hm.rise_threshold, method=None, port=mock.ANY, url=None, expect_code=None, axapi_args=ARGS)
def get_update_health_monitor_flow(self): """Create a flow to update a health monitor :returns: The flow for updating a health monitor """ update_hm_flow = linear_flow.Flow(constants.UPDATE_HEALTH_MONITOR_FLOW) update_hm_flow.add( lifecycle_tasks.HealthMonitorToErrorOnRevertTask(requires=[ constants.HEALTH_MON, constants.LISTENERS, constants.LOADBALANCER ])) update_hm_flow.add( database_tasks.MarkHealthMonitorPendingUpdateInDB( requires=constants.HEALTH_MON)) update_hm_flow.add( a10_database_tasks.GetVThunderByLoadBalancer( requires=constants.LOADBALANCER, provides=a10constants.VTHUNDER)) update_hm_flow.add( health_monitor_tasks.UpdateHealthMonitor(requires=[ constants.LISTENERS, constants.HEALTH_MON, a10constants.VTHUNDER, constants.UPDATE_DICT ])) update_hm_flow.add( database_tasks.UpdateHealthMonInDB( requires=[constants.HEALTH_MON, constants.UPDATE_DICT])) update_hm_flow.add( database_tasks.MarkHealthMonitorActiveInDB( requires=constants.HEALTH_MON)) update_hm_flow.add( database_tasks.MarkPoolActiveInDB(requires=constants.POOL)) update_hm_flow.add( database_tasks.MarkLBAndListenersActiveInDB( requires=[constants.LOADBALANCER, constants.LISTENERS])) update_hm_flow.add( vthunder_tasks.WriteMemory(requires=a10constants.VTHUNDER)) return update_hm_flow