def test_update(self): self._create_stack() self.healthmonitor.resource_id_set('1234') self.octavia_client.health_monitor_show.side_effect = [ { 'provisioning_status': 'PENDING_UPDATE' }, { 'provisioning_status': 'PENDING_UPDATE' }, { 'provisioning_status': 'ACTIVE' }, ] self.octavia_client.health_monitor_set.side_effect = [ exceptions.Conflict(409), None ] prop_diff = { 'admin_state_up': False, } prop_diff = self.healthmonitor.handle_update(None, None, prop_diff) self.assertFalse(self.healthmonitor.check_update_complete(prop_diff)) self.assertFalse(self.healthmonitor._update_called) self.octavia_client.health_monitor_set.assert_called_with( '1234', json={'healthmonitor': prop_diff}) self.assertFalse(self.healthmonitor.check_update_complete(prop_diff)) self.assertTrue(self.healthmonitor._update_called) self.octavia_client.health_monitor_set.assert_called_with( '1234', json={'healthmonitor': prop_diff}) self.assertFalse(self.healthmonitor.check_update_complete(prop_diff)) self.assertTrue(self.healthmonitor.check_update_complete(prop_diff))
def test_delete(self): self._create_stack() self.octavia_client.load_balancer_show.side_effect = [ { 'provisioning_status': 'DELETE_PENDING' }, { 'provisioning_status': 'DELETE_PENDING' }, { 'provisioning_status': 'DELETED' }, ] self.octavia_client.load_balancer_delete.side_effect = [ exceptions.Conflict(409), None ] self.lb.handle_delete() self.assertFalse(self.lb.check_delete_complete(None)) self.assertFalse(self.lb._delete_called) self.assertFalse(self.lb.check_delete_complete(None)) self.assertTrue(self.lb._delete_called) self.assertTrue(self.lb.check_delete_complete(None)) self.octavia_client.load_balancer_delete.assert_called_with('1234') self.assertEqual(2, self.octavia_client.load_balancer_delete.call_count)
def test_delete(self): self._create_stack() self.healthmonitor.resource_id_set('1234') self.octavia_client.health_monitor_show.side_effect = [ { 'provisioning_status': 'PENDING_DELETE' }, { 'provisioning_status': 'PENDING_DELETE' }, { 'provisioning_status': 'DELETED' }, ] self.octavia_client.health_monitor_delete.side_effect = [ exceptions.Conflict(409), None ] self.healthmonitor.handle_delete() self.assertFalse(self.healthmonitor.check_delete_complete(None)) self.assertFalse(self.healthmonitor._delete_called) self.octavia_client.health_monitor_delete.assert_called_with('1234') self.assertFalse(self.healthmonitor.check_delete_complete(None)) self.assertTrue(self.healthmonitor._delete_called) self.octavia_client.health_monitor_delete.assert_called_with('1234') self.assertTrue(self.healthmonitor.check_delete_complete(None))
def test_update(self): self._create_stack() self.l7rule.resource_id_set('1234') self.octavia_client.l7rule_show.side_effect = [ { 'provisioning_status': 'PENDING_UPDATE' }, { 'provisioning_status': 'PENDING_UPDATE' }, { 'provisioning_status': 'ACTIVE' }, ] self.octavia_client.l7rule_set.side_effect = [ exceptions.Conflict(409), None ] prop_diff = { 'admin_state_up': False, 'name': 'your_l7policy', 'redirect_url': 'http://www.google.com' } prop_diff = self.l7rule.handle_update(None, None, prop_diff) self.assertFalse(self.l7rule.check_update_complete(prop_diff)) self.assertFalse(self.l7rule._update_called) self.octavia_client.l7rule_set.assert_called_with( '1234', '123', json={'rule': prop_diff}) self.assertFalse(self.l7rule.check_update_complete(prop_diff)) self.assertTrue(self.l7rule._update_called) self.octavia_client.l7rule_set.assert_called_with( '1234', '123', json={'rule': prop_diff}) self.assertFalse(self.l7rule.check_update_complete(prop_diff)) self.assertTrue(self.l7rule.check_update_complete(prop_diff))
def test_update(self): self._create_stack() self.pool.resource_id_set('1234') self.octavia_client.pool_show.side_effect = [ { 'provisioning_status': 'PENDING_UPDATE' }, { 'provisioning_status': 'PENDING_UPDATE' }, { 'provisioning_status': 'ACTIVE' }, ] self.octavia_client.pool_set.side_effect = [ exceptions.Conflict(409), None ] prop_diff = { 'admin_state_up': False, 'name': 'your_pool', 'lb_algorithm': 'SOURCE_IP' } prop_diff = self.pool.handle_update(None, None, prop_diff) self.assertFalse(self.pool.check_update_complete(prop_diff)) self.assertFalse(self.pool._update_called) self.octavia_client.pool_set.assert_called_with( '1234', json={'pool': prop_diff}) self.assertFalse(self.pool.check_update_complete(prop_diff)) self.assertTrue(self.pool._update_called) self.octavia_client.pool_set.assert_called_with( '1234', json={'pool': prop_diff}) self.assertFalse(self.pool.check_update_complete(prop_diff)) self.assertTrue(self.pool.check_update_complete(prop_diff))
def test_create(self): self._create_stack() self.octavia_client.member_show.side_effect = [ {'provisioning_status': 'PENDING_CREATE'}, {'provisioning_status': 'PENDING_CREATE'}, {'provisioning_status': 'ACTIVE'}, ] self.octavia_client.member_create.side_effect = [ exceptions.Conflict(409), {'member': {'id': '1234'}}] expected = { 'member': { 'address': '1.2.3.4', 'protocol_port': 80, 'weight': 1, 'subnet_id': '123', 'admin_state_up': True, } } props = self.member.handle_create() self.assertFalse(self.member.check_create_complete(props)) self.octavia_client.member_create.assert_called_with('123', json=expected) self.assertFalse(self.member.check_create_complete(props)) self.octavia_client.member_create.assert_called_with('123', json=expected) self.assertFalse(self.member.check_create_complete(props)) self.assertTrue(self.member.check_create_complete(props))
def test_create(self): self._create_stack() self.octavia_client.listener_show.side_effect = [ {'provisioning_status': 'PENDING_CREATE'}, {'provisioning_status': 'PENDING_CREATE'}, {'provisioning_status': 'ACTIVE'}, ] self.octavia_client.listener_create.side_effect = [ exceptions.Conflict(409), {'listener': {'id': '1234'}} ] expected = { 'listener': { 'protocol_port': 80, 'protocol': 'TCP', 'loadbalancer_id': '123', 'default_pool_id': 'my_pool', 'name': 'my_listener', 'description': 'my listener', 'admin_state_up': True, 'default_tls_container_ref': 'ref', 'sni_container_refs': ['ref1', 'ref2'], 'connection_limit': -1, 'tenant_id': '1234', 'allowed_cidrs': ['10.10.0.0/16', '192.168.0.0/16'] } } props = self.listener.handle_create() self.assertFalse(self.listener.check_create_complete(props)) self.octavia_client.listener_create.assert_called_with(json=expected) self.assertFalse(self.listener.check_create_complete(props)) self.octavia_client.listener_create.assert_called_with(json=expected) self.assertFalse(self.listener.check_create_complete(props)) self.assertTrue(self.listener.check_create_complete(props))
def test_delete_not_found(self): self._create_stack() self.listener.resource_id_set('1234') self.octavia_client.listener_show.side_effect = [ {'provisioning_status': 'PENDING_DELETE'}, ] self.octavia_client.listener_delete.side_effect = [ exceptions.Conflict(409), exceptions.NotFound(404)] self.listener.handle_delete() self.assertFalse(self.listener.check_delete_complete(None)) self.assertFalse(self.listener._delete_called) self.octavia_client.listener_delete.assert_called_with('1234') self.assertTrue(self.listener.check_delete_complete(None)) self.octavia_client.listener_delete.assert_called_with('1234')
def test_create(self): self._create_stack() self.octavia_client.health_monitor_show.side_effect = [ { 'provisioning_status': 'PENDING_CREATE' }, { 'provisioning_status': 'PENDING_CREATE' }, { 'provisioning_status': 'ACTIVE' }, ] self.octavia_client.health_monitor_create.side_effect = [ exceptions.Conflict(409), { 'healthmonitor': { 'id': '1234' } } ] expected = { 'healthmonitor': { 'admin_state_up': True, 'delay': 3, 'expected_codes': '200-202', 'http_method': 'HEAD', 'max_retries': 5, 'pool_id': '123', 'timeout': 10, 'type': 'HTTP', 'url_path': '/health' } } props = self.healthmonitor.handle_create() self.assertFalse(self.healthmonitor.check_create_complete(props)) self.octavia_client.health_monitor_create.assert_called_with( json=expected) self.assertFalse(self.healthmonitor.check_create_complete(props)) self.octavia_client.health_monitor_create.assert_called_with( json=expected) self.assertFalse(self.healthmonitor.check_create_complete(props)) self.assertTrue(self.healthmonitor.check_create_complete(props))
def test_create(self): self._create_stack() self.octavia_client.pool_show.side_effect = [ { 'provisioning_status': 'PENDING_CREATE' }, { 'provisioning_status': 'PENDING_CREATE' }, { 'provisioning_status': 'ACTIVE' }, ] self.octavia_client.pool_create.side_effect = [ exceptions.Conflict(409), { 'pool': { 'id': '1234' } } ] expected = { 'pool': { 'name': 'my_pool', 'description': 'my pool', 'session_persistence': { 'type': 'HTTP_COOKIE' }, 'lb_algorithm': 'ROUND_ROBIN', 'listener_id': '123', 'loadbalancer_id': 'my_lb', 'protocol': 'HTTP', 'admin_state_up': True, 'tls_enabled': False, } } props = self.pool.handle_create() self.assertFalse(self.pool.check_create_complete(props)) self.octavia_client.pool_create.assert_called_with(json=expected) self.assertFalse(self.pool.check_create_complete(props)) self.octavia_client.pool_create.assert_called_with(json=expected) self.assertFalse(self.pool.check_create_complete(props)) self.assertTrue(self.pool.check_create_complete(props))
def test_create(self): self._create_stack() self.octavia_client.l7rule_show.side_effect = [ { 'provisioning_status': 'PENDING_CREATE' }, { 'provisioning_status': 'PENDING_CREATE' }, { 'provisioning_status': 'ACTIVE' }, ] self.octavia_client.l7rule_create.side_effect = [ exceptions.Conflict(409), { 'rule': { 'id': '1234' } } ] expected = { 'rule': { 'admin_state_up': True, 'invert': False, 'type': u'HEADER', 'compare_type': u'ENDS_WITH', 'key': u'test_key', 'value': u'test_value', 'invert': False } } props = self.l7rule.handle_create() self.assertFalse(self.l7rule.check_create_complete(props)) self.octavia_client.l7rule_create.assert_called_with('123', json=expected) self.assertFalse(self.l7rule.check_create_complete(props)) self.octavia_client.l7rule_create.assert_called_with('123', json=expected) self.assertFalse(self.l7rule.check_create_complete(props)) self.assertTrue(self.l7rule.check_create_complete(props))
def test_update_redirect_pool_prop_name(self): self._create_stack() self.l7policy.resource_id_set('1234') self.octavia_client.l7policy_show.side_effect = [ { 'provisioning_status': 'PENDING_UPDATE' }, { 'provisioning_status': 'PENDING_UPDATE' }, { 'provisioning_status': 'ACTIVE' }, ] self.octavia_client.l7policy_set.side_effect = [ exceptions.Conflict(409), None ] unresolved_diff = { 'redirect_url': None, 'action': 'REDIRECT_TO_POOL', 'redirect_pool': 'UNRESOLVED_POOL' } resolved_diff = { 'redirect_url': None, 'action': 'REDIRECT_TO_POOL', 'redirect_pool_id': '123' } self.l7policy.handle_update(None, None, unresolved_diff) self.assertFalse(self.l7policy.check_update_complete(resolved_diff)) self.assertFalse(self.l7policy._update_called) self.octavia_client.l7policy_set.assert_called_with( '1234', json={'l7policy': resolved_diff}) self.assertFalse(self.l7policy.check_update_complete(resolved_diff)) self.assertTrue(self.l7policy._update_called) self.octavia_client.l7policy_set.assert_called_with( '1234', json={'l7policy': resolved_diff}) self.assertFalse(self.l7policy.check_update_complete(resolved_diff)) self.assertTrue(self.l7policy.check_update_complete(resolved_diff))
def test_create(self): self._create_stack() self.octavia_client.l7policy_show.side_effect = [ { 'provisioning_status': 'PENDING_CREATE' }, { 'provisioning_status': 'PENDING_CREATE' }, { 'provisioning_status': 'ACTIVE' }, ] self.octavia_client.l7policy_create.side_effect = [ exceptions.Conflict(409), { 'l7policy': { 'id': '1234' } } ] expected = { 'l7policy': { 'name': u'test_l7policy', 'description': u'test l7policy resource', 'action': u'REDIRECT_TO_URL', 'listener_id': u'123', 'redirect_url': u'http://www.mirantis.com', 'position': 1, 'admin_state_up': True } } props = self.l7policy.handle_create() self.assertFalse(self.l7policy.check_create_complete(props)) self.octavia_client.l7policy_create.assert_called_with(json=expected) self.assertFalse(self.l7policy.check_create_complete(props)) self.octavia_client.l7policy_create.assert_called_with(json=expected) self.assertFalse(self.l7policy.check_create_complete(props)) self.assertTrue(self.l7policy.check_create_complete(props))