示例#1
0
    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))
示例#2
0
    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)
示例#3
0
    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))
示例#4
0
    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))
示例#5
0
    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))
示例#6
0
 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))
示例#7
0
    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))
示例#8
0
    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')
示例#9
0
    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))
示例#10
0
    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))
示例#11
0
    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))
示例#12
0
    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))
示例#13
0
    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))