示例#1
0
    def test_terminate_server_not_found(self, openstack_id, server_status):
        """
        Terminate a server for which the corresponding VM doesn't exist anymore
        """
        server = OpenStackServerFactory(openstack_id=openstack_id, status=server_status)

        def raise_not_found(): #pylint: disable=missing-docstring
            raise novaclient.exceptions.NotFound('not-found')
        server.os_server.delete.side_effect = raise_not_found
        server.logger = Mock()
        mock_logger = server.logger

        server.terminate()
        self.assertEqual(server.status, ServerStatus.Terminated)
        server.os_server.delete.assert_called_once_with()
        mock_logger.error.assert_called_once_with(AnyStringMatching('Error while attempting to terminate server'))
示例#2
0
    def test_terminate_server_openstack_api_error(self, exception):
        """
        Terminate a server when there are errors connecting to the OpenStack API
        """
        server = OpenStackServerFactory()

        def raise_openstack_api_error():  #pylint: disable=missing-docstring
            raise exception

        server.os_server.delete.side_effect = raise_openstack_api_error

        server.logger = Mock()
        mock_logger = server.logger

        server.terminate()
        self.assertEqual(server.status, ServerStatus.Unknown)
        server.os_server.delete.assert_called_once_with()
        mock_logger.error.assert_called_once_with(
            AnyStringMatching('Unable to reach the OpenStack API due to'),
            exception)
示例#3
0
    def test_start_server(self, mock_create_server):
        """
        Start a new server
        """
        mock_create_server.return_value.id = 'pending-server-id'
        server = OpenStackServerFactory()

        self.assertEqual(server.status, ServerStatus.Pending)
        server.start()
        mock_create_server.assert_called_once_with(
            server.nova,
            AnyStringMatching(r'test-inst-\d+'),
            flavor_selector=settings.OPENSTACK_SANDBOX_FLAVOR,
            image_selector=settings.OPENSTACK_SANDBOX_BASE_IMAGE,
            key_name=settings.OPENSTACK_SANDBOX_SSH_KEYNAME,
        )

        server = OpenStackServer.objects.get(pk=server.pk)
        self.assertEqual(server.status, ServerStatus.Building)
        self.assertEqual(server.openstack_id, 'pending-server-id')
        self.assertEqual(str(server), 'pending-server-id')
示例#4
0
    def test_start_server(self, mock_create_server):
        """
        Start a new server
        """
        mock_create_server.return_value.id = 'new-server-id'
        server = OpenStackServerFactory()

        self.assertEqual(server.status, ServerStatus.New)
        self.assertEqual(server.progress, ServerProgress.Running)
        server.start()
        mock_create_server.assert_called_once_with(
            server.nova,
            AnyStringMatching(r'instance\d+\.test'),
            {"ram": 4096, "disk": 40},
            {"name": "Ubuntu 12.04"},
            key_name='opencraft',
        )

        server = OpenStackServer.objects.get(pk=server.pk)
        self.assertEqual(server.status, ServerStatus.Started)
        self.assertEqual(server.progress, ServerProgress.Success)
        self.assertEqual(server.openstack_id, 'new-server-id')
        self.assertEqual(str(server), 'new-server-id')