Exemple #1
0
    def test_update_lease_reservations(self, lease_update, lease_get):
        lease = self.leases.get(name='lease-1')
        form_data = {
            'lease_id':
            lease['id'],
            'reservations':
            '[{"id": "087bc740-6d2d-410b-9d47-c7b2b55a9d36",'
            ' "max": 3}]'
        }
        lease_get.return_value = lease

        res = self.client.post(reverse(UPDATE_URL_BASE, args=[lease['id']]),
                               form_data)

        lease_get.assert_called_once_with(test.IsHttpRequest(), lease['id'])
        lease_update.assert_called_once_with(
            test.IsHttpRequest(),
            lease_id=lease['id'],
            reservations=[{
                "id": "087bc740-6d2d-410b-9d47-c7b2b55a9d36",
                "max": 3
            }])
        self.assertNoFormErrors(res)
        self.assertMessageCount(success=1)
        self.assertRedirectsNoFollow(res, INDEX_URL)
Exemple #2
0
    def test_create_hosts_with_extra_caps(self, hypervisor_list, host_create,
                                          host_list):
        hv_hostnames = [
            hv.hypervisor_hostname for hv in self.hypervisors.list()
        ]
        calls = []
        for host_name in hv_hostnames:
            calls.append(
                mock.call(test.IsHttpRequest(),
                          name=host_name,
                          extracap="strong"))
        form_data = {
            'select_hosts_role_member': hv_hostnames,
            'extra_caps': '{"extracap": "strong"}'
        }
        host_list.return_value = []
        host_create.return_value = []
        hypervisor_list.return_value = self.hypervisors.list()

        res = self.client.post(CREATE_URL, form_data)

        host_list.assert_called_once_with(test.IsHttpRequest())
        host_create.assert_has_calls(calls)
        self.assertEqual(len(hv_hostnames), host_create.call_count)
        hypervisor_list.assert_called_once_with(test.IsHttpRequest())
        self.assertNoFormErrors(res)
        self.assertMessageCount(success=(len(hv_hostnames) + 1))
        self.assertRedirectsNoFollow(res, INDEX_URL)
Exemple #3
0
    def test_delete_lease(self, lease_delete, lease_list):
        leases = self.leases.list()
        lease = self.leases.get(name='lease-1')
        action = 'leases__delete__%s' % lease['id']
        form_data = {'action': action}
        lease_list.return_value = leases

        res = self.client.post(INDEX_URL, form_data)

        lease_list.assert_called_once_with(test.IsHttpRequest())
        lease_delete.assert_called_once_with(test.IsHttpRequest(), lease['id'])
        self.assertMessageCount(success=1)
        self.assertRedirectsNoFollow(res, INDEX_URL)
Exemple #4
0
    def test_delete_host(self, host_delete, host_list):
        hosts = self.hosts.list()
        host = self.hosts.get(hypervisor_hostname='compute-1')
        action = 'hosts__delete__%s' % host['id']
        form_data = {'action': action}
        host_list.return_value = hosts

        res = self.client.post(INDEX_URL, form_data)

        host_list.assert_called_once_with(test.IsHttpRequest())
        host_delete.assert_called_once_with(test.IsHttpRequest(), host['id'])
        self.assertMessageCount(success=1)
        self.assertRedirectsNoFollow(res, INDEX_URL)
Exemple #5
0
    def test_update_host_error(self, host_update, host_get):
        host = self.hosts.get(hypervisor_hostname='compute-1')
        form_data = {'host_id': host['id'], 'values': '{"key": "updated"}'}
        host_get.return_value = host
        host_update.side_effect = self.exceptions.blazar

        res = self.client.post(reverse(UPDATE_URL_BASE, args=[host['id']]),
                               form_data)

        host_get.assert_called_once_with(test.IsHttpRequest(), host['id'])
        host_update.assert_called_once_with(test.IsHttpRequest(),
                                            host_id=host['id'],
                                            values={"key": "updated"})
        self.assertNoFormErrors(res)
        self.assertContains(res, 'An error occurred while updating')
Exemple #6
0
    def test_update_host(self, host_update, host_get):
        host = self.hosts.get(hypervisor_hostname='compute-1')
        form_data = {'host_id': host['id'], 'values': '{"key": "updated"}'}
        host_get.return_value = host
        host_update.return_value = []

        res = self.client.post(reverse(UPDATE_URL_BASE, args=[host['id']]),
                               form_data)

        host_get.assert_called_once_with(test.IsHttpRequest(), host['id'])
        host_update.assert_called_once_with(test.IsHttpRequest(),
                                            host_id=host['id'],
                                            values={"key": "updated"})
        self.assertNoFormErrors(res)
        self.assertMessageCount(success=1)
        self.assertRedirectsNoFollow(res, INDEX_URL)
Exemple #7
0
    def test_create_lease_client_error(self, lease_create):
        start_date = datetime(2030, 6, 27, 18, 0, tzinfo=pytz.utc)
        end_date = datetime(2030, 6, 30, 18, 0, tzinfo=pytz.utc)
        form_data = {
            'name': 'lease-1',
            'start_date': start_date.strftime('%Y-%m-%d %H:%M'),
            'end_date': end_date.strftime('%Y-%m-%d %H:%M'),
            'resource_type': 'host',
            'min_hosts': 1,
            'max_hosts': 1,
        }
        lease_create.side_effect = self.exceptions.blazar

        res = self.client.post(CREATE_URL, form_data)

        lease_create.assert_called_once_with(
            test.IsHttpRequest(), 'lease-1',
            start_date.strftime('%Y-%m-%d %H:%M'),
            end_date.strftime('%Y-%m-%d %H:%M'),
            [{
                'min': 1,
                'max': 1,
                'hypervisor_properties': '',
                'resource_properties': '',
                'resource_type': 'physical:host',
            }], [])
        self.assertTemplateUsed(res, CREATE_TEMPLATE)
        self.assertNoFormErrors(res)
        self.assertContains(res, 'An error occurred while creating')
Exemple #8
0
    def test_create_lease_host_reservation(self, lease_create):
        start_date = datetime(2030, 6, 27, 18, 0, tzinfo=pytz.utc)
        end_date = datetime(2030, 6, 30, 18, 0, tzinfo=pytz.utc)
        new_lease = self.leases.get(name='lease-1')
        form_data = {
            'name': 'lease-1',
            'start_date': start_date.strftime('%Y-%m-%d %H:%M'),
            'end_date': end_date.strftime('%Y-%m-%d %H:%M'),
            'resource_type': 'host',
            'min_hosts': 1,
            'max_hosts': 1,
            'hypervisor_properties': '[">=", "$vcpus", "2"]'
        }
        lease_create.return_value = new_lease

        res = self.client.post(CREATE_URL, form_data)

        lease_create.assert_called_once_with(
            test.IsHttpRequest(), 'lease-1',
            start_date.strftime('%Y-%m-%d %H:%M'),
            end_date.strftime('%Y-%m-%d %H:%M'),
            [{
                'min': 1,
                'max': 1,
                'hypervisor_properties': '[">=", "$vcpus", "2"]',
                'resource_properties': '',
                'resource_type': 'physical:host',
            }], [])
        self.assertNoFormErrors(res)
        self.assertMessageCount(success=1)
        self.assertRedirectsNoFollow(res, INDEX_URL)
Exemple #9
0
    def test_index_error(self, lease_list):
        lease_list.side_effect = self.exceptions.blazar

        res = self.client.get(INDEX_URL)

        lease_list.assert_called_once_with(test.IsHttpRequest())
        self.assertTemplateUsed(res, INDEX_TEMPLATE)
        self.assertMessageCount(res, error=1)
Exemple #10
0
    def test_lease_detail_error(self, lease_get):
        lease_get.side_effect = self.exceptions.blazar

        res = self.client.get(reverse(DETAIL_URL_BASE, args=['invalid']))

        lease_get.assert_called_once_with(test.IsHttpRequest(), 'invalid')
        self.assertTemplateNotUsed(res, DETAIL_TEMPLATE)
        self.assertMessageCount(error=1)
        self.assertRedirectsNoFollow(res, INDEX_URL)
Exemple #11
0
    def test_lease_detail(self, lease_get):
        lease = self.leases.get(name='lease-1')
        lease_get.return_value = lease

        res = self.client.get(reverse(DETAIL_URL_BASE, args=[lease['id']]))

        lease_get.assert_called_once_with(test.IsHttpRequest(), lease['id'])
        self.assertTemplateUsed(res, DETAIL_TEMPLATE)
        self.assertContains(res, 'lease-1')
Exemple #12
0
    def test_index_no_leases(self, lease_list):
        leases = []
        lease_list.return_value = leases

        res = self.client.get(INDEX_URL)

        lease_list.assert_called_once_with(test.IsHttpRequest())
        self.assertTemplateUsed(res, INDEX_TEMPLATE)
        self.assertNoMessages(res)
        self.assertContains(res, 'No items to display')
Exemple #13
0
    def test_host_detail(self, host_get):
        host = self.hosts.get(hypervisor_hostname='compute-1')
        host_get.return_value = host

        res = self.client.get(reverse(DETAIL_URL_BASE, args=[host['id']]))

        host_get.assert_called_once_with(test.IsHttpRequest(), host['id'])
        self.assertTemplateUsed(res, DETAIL_TEMPLATE)
        self.assertContains(res, 'compute-1')
        self.assertContains(res, 'ex1')
Exemple #14
0
    def test_index(self, lease_list):
        leases = self.leases.list()
        lease_list.return_value = leases

        res = self.client.get(INDEX_URL)

        lease_list.assert_called_once_with(test.IsHttpRequest())
        self.assertTemplateUsed(res, INDEX_TEMPLATE)
        self.assertNoMessages(res)
        self.assertContains(res, 'lease-2')
        self.assertContains(res, 'lease-1')
Exemple #15
0
    def test_index(self, host_list):
        hosts = self.hosts.list()
        host_list.return_value = hosts

        res = self.client.get(INDEX_URL)

        host_list.assert_called_once_with(test.IsHttpRequest())
        self.assertTemplateUsed(res, INDEX_TEMPLATE)
        self.assertNoMessages(res)
        self.assertContains(res, 'compute-1')
        self.assertContains(res, 'compute-2')
Exemple #16
0
    def test_update_lease_name_and_date(self, lease_update, lease_get):
        lease = self.leases.get(name='lease-1')
        form_data = {
            'lease_id': lease['id'],
            'lease_name': 'newname',
            'end_time': '+1h'
        }
        lease_get.return_value = lease

        res = self.client.post(reverse(UPDATE_URL_BASE, args=[lease['id']]),
                               form_data)

        lease_get.assert_called_once_with(test.IsHttpRequest(), lease['id'])
        lease_update.assert_called_once_with(test.IsHttpRequest(),
                                             lease_id=lease['id'],
                                             name='newname',
                                             prolong_for='1h')
        self.assertNoFormErrors(res)
        self.assertMessageCount(success=1)
        self.assertRedirectsNoFollow(res, INDEX_URL)
Exemple #17
0
    def test_update_lease_error(self, lease_update, lease_get):
        lease = self.leases.get(name='lease-1')
        form_data = {
            'lease_id': lease['id'],
            'lease_name': 'newname',
            'end_time': '+1h'
        }
        lease_get.return_value = lease
        lease_update.side_effect = self.exceptions.blazar

        res = self.client.post(reverse(UPDATE_URL_BASE, args=[lease['id']]),
                               form_data)

        lease_get.assert_called_once_with(test.IsHttpRequest(), lease['id'])
        lease_update.assert_called_once_with(test.IsHttpRequest(),
                                             lease_id=lease['id'],
                                             name='newname',
                                             prolong_for='1h')
        self.assertTemplateUsed(UPDATE_TEMPLATE)
        self.assertNoFormErrors(res)
        self.assertContains(res, 'An error occurred while updating')
Exemple #18
0
    def test_create_lease_instance_reservation(self, lease_create):
        start_date = datetime(2030, 6, 27, 18, 0, tzinfo=pytz.utc)
        end_date = datetime(2030, 6, 30, 18, 0, tzinfo=pytz.utc)
        dummy_lease = {}
        form_data = {
            'name': 'lease-1',
            'start_date': start_date.strftime('%Y-%m-%d %H:%M'),
            'end_date': end_date.strftime('%Y-%m-%d %H:%M'),
            'resource_type': 'instance',
            'amount': 3,
            'vcpus': 2,
            'memory_mb': 4096,
            'disk_gb': 128,
            'affinity': False,
            'resource_properties': '["==", "$energy", "clean"]'
        }
        lease_create.return_value = dummy_lease

        res = self.client.post(CREATE_URL, form_data)

        lease_create.assert_called_once_with(
            test.IsHttpRequest(),
            'lease-1',
            start_date.strftime('%Y-%m-%d %H:%M'),
            end_date.strftime('%Y-%m-%d %H:%M'),
            [
                {
                    'resource_type': 'virtual:instance',
                    'amount': 3,
                    'vcpus': 2,
                    'memory_mb': 4096,
                    'disk_gb': 128,
                    'affinity': 'False',
                    'resource_properties': '["==", "$energy", "clean"]'
                }
            ],
            [])
        self.assertNoFormErrors(res)
        self.assertMessageCount(success=1)
        self.assertRedirectsNoFollow(res, INDEX_URL)