Example #1
0
    def test_controller_create_success(self):
        cloud = CmdbCloudConfig()
        tracker_class = cloud.task_tracker

        full_cloud_task_class_name = "%s.%s" % (MockVpsControlTask.__module__, MockVpsControlTask.__name__)

        task_tracker1 = tracker_class(task_class=full_cloud_task_class_name)
        task_tracker1.context = {'some': 'value'}
        task_tracker1.save()

        task_tracker2 = tracker_class(task_class=full_cloud_task_class_name)
        task_tracker2.context = {'some': 'value'}
        task_tracker2.failed('some error')
        task_tracker2.save()

        response_err = self.client.patch('/v1/cloud_tasks/%s/' % task_tracker1.id)
        self.assertEqual(405, response_err.status_code)

        response1 = self.client.get('/v1/cloud_tasks/%s/' % task_tracker1.id)
        self.assertEqual(200, response1.status_code)
        self.assertEqual(task_tracker1.id, response1.data['id'])
        self.assertEqual('success', response1.data['status'])

        response2 = self.client.get('/v1/cloud_tasks/%s/' % task_tracker2.id)
        self.assertEqual(200, response2.status_code)
        self.assertEqual(task_tracker2.id, response2.data['id'])
        self.assertEqual('failed', response2.data['status'])
        self.assertEqual('some error', response2.data['error'])
Example #2
0
    def test_controller_create_success(self):
        cloud = CmdbCloudConfig()
        tracker_class = cloud.task_tracker

        task_tracker1 = tracker_class(task_class='SomeClassName')
        task_tracker1.context = {'some': 'value'}
        task_tracker1.save()

        task_tracker2 = tracker_class(task_class='SomeClassName')
        task_tracker2.context = {'some': 'value'}
        task_tracker2.failed('some error')
        task_tracker2.save()

        self.assertEqual(task_tracker1.id,
                         tracker_class.get(task_tracker1.id).id)
        self.assertEqual(task_tracker2.id,
                         tracker_class.get(task_tracker2.id).id)
        self.assertEqual(2, len(tracker_class.find()))
        self.assertEqual(
            1, len(tracker_class.find(status=TaskTrackerStatus.STATUS_NEW)))
        self.assertEqual(
            1, len(tracker_class.find(status=TaskTrackerStatus.STATUS_FAILED)))
        self.assertEqual(
            0,
            len(tracker_class.find(status=TaskTrackerStatus.STATUS_SUCCESS)))
Example #3
0
    def setUp(self):
        super(ResourcesAPITests, self).setUp()

        user_name = 'admin'
        user, created = User.objects.get_or_create(username=user_name,
                                                   password=user_name,
                                                   email='*****@*****.**',
                                                   is_staff=True)
        token, created = Token.objects.get_or_create(user=user)
        self.client.credentials(HTTP_AUTHORIZATION='Token ' + token.key)

        Resource.objects.all().delete()

        self.moscow = RegionResource.objects.create(name='Moscow')
        self.dc1 = Datacenter.objects.create(name='Test DC 1',
                                             parent=self.moscow)
        self.rack1 = Rack.objects.create(name='Test Rack 1', parent=self.dc1)
        self.srv1 = Server.objects.create(name='Test hypervisor 1',
                                          role='hypervisor',
                                          parent=self.rack1)
        self.pools_group1 = RegionResource.objects.create(
            name='Test DC 1 IP Pools', parent=self.dc1)

        self.pool1 = IPAddressPoolFactory.from_network(
            '192.168.0.0/23',
            parent=self.pools_group1,
            dns1='46.17.46.200',
            dns2='46.17.40.200')

        GlobalIPManager.get_ip('192.168.0.1').lock()

        self.pool11 = IPAddressPoolFactory.from_network(
            '192.169.0.0/23',
            parent=self.pools_group1,
            dns1='46.17.46.200',
            dns2='46.17.40.200')
        self.pool11.use()

        GlobalIPManager.get_ip('192.169.0.1').lock()

        self.srv1.set_option('agentd_taskqueue', 'test_task_queue')

        MockVpsControlTask.REMOTE_WORKER.sent_tasks = []

        self.cloud = CmdbCloudConfig()
        self.backend = ProxMoxJBONServiceBackend(self.cloud)
        ProxMoxJBONServiceBackend.TASK_CREATE = MockVpsControlTask
        ProxMoxJBONServiceBackend.TASK_START = MockVpsControlTask
        ProxMoxJBONServiceBackend.TASK_STOP = MockVpsControlTask
Example #4
0
    def stop(self, request, pk=None):
        indata = StartStopSerializer(data=request.data)
        if not indata.is_valid():
            return Response(indata.errors, status=status.HTTP_400_BAD_REQUEST)

        logger.info("Stopping VPS: %s" % indata.data)

        # hardcoded backend
        cloud = CmdbCloudConfig()
        backend = ProxMoxJBONServiceBackend(cloud)

        tracker = backend.stop_vps(**indata.data)

        serializer = CloudTaskTrackerSerializer(tracker)

        return Response(serializer.data)
Example #5
0
    def create(self, request, *args, **kwargs):
        indata = CreateVpsSerializer(data=request.data)
        if not indata.is_valid():
            return Response(indata.errors, status=status.HTTP_400_BAD_REQUEST)

        logger.info("Creating VPS: %s" % indata.data)

        # hardcoded backend
        cloud = CmdbCloudConfig()
        backend = ProxMoxJBONServiceBackend(cloud)

        tracker = backend.create_vps(**indata.data)

        serializer = CloudTaskTrackerSerializer(tracker)

        return Response(serializer.data)
Example #6
0
    def setUp(self):
        Resource.objects.all().delete()

        self.moscow = RegionResource.objects.create(name='Moscow')
        self.dc1 = Datacenter.objects.create(name='Test DC 1', parent=self.moscow)
        self.rack1 = Rack.objects.create(name='Test Rack 1', parent=self.dc1)
        self.srv1 = Server.objects.create(name='Test hypervisor 1', role='hypervisor', parent=self.rack1)
        self.pools_group1 = RegionResource.objects.create(name='Test DC 1 IP Pools', parent=self.dc1)
        self.pool1 = IPNetworkPool.objects.create(network='192.168.0.0/23', parent=self.pools_group1,
                                                  status=Resource.STATUS_FREE)
        self.pool11 = IPNetworkPool.objects.create(network='192.169.0.0/23', parent=self.pools_group1,
                                                   status=Resource.STATUS_INUSE)

        self.srv1.set_option('agentd_taskqueue', 'test_task_queue')

        MockVpsControlTask.REMOTE_WORKER.sent_tasks = []

        self.cloud = CmdbCloudConfig()
        self.backend = ProxMoxJBONServiceBackend(self.cloud)
        ProxMoxJBONServiceBackend.TASK_CREATE = MockVpsControlTask
        ProxMoxJBONServiceBackend.TASK_START = MockVpsControlTask
        ProxMoxJBONServiceBackend.TASK_STOP = MockVpsControlTask
Example #7
0
    def setUp(self):
        Resource.objects.all().delete()

        self.moscow = RegionResource.objects.create(name='Moscow')
        self.dc1 = Datacenter.objects.create(name='Test DC 1',
                                             parent=self.moscow)
        self.rack1 = Rack.objects.create(name='Test Rack 1', parent=self.dc1)
        self.srv1 = Server.objects.create(name='Test hypervisor 1',
                                          role='hypervisor',
                                          parent=self.rack1)
        self.pools_group1 = RegionResource.objects.create(
            name='Test DC 1 IP Pools', parent=self.dc1)

        self.pool1 = IPAddressPoolFactory.from_network(
            '192.168.0.0/23',
            parent=self.pools_group1,
            dns1='46.17.46.200',
            dns2='46.17.40.200')

        GlobalIPManager.get_ip('192.168.0.1').lock()

        self.pool11 = IPAddressPoolFactory.from_network(
            '192.169.0.0/23',
            parent=self.pools_group1,
            dns1='46.17.46.200',
            dns2='46.17.40.200')
        self.pool11.use()

        GlobalIPManager.get_ip('192.169.0.1').lock()

        self.srv1.set_option('agentd_taskqueue', 'test_task_queue')

        MockVpsControlTask.REMOTE_WORKER.sent_tasks = []

        self.cloud = CmdbCloudConfig()
        self.backend = ProxMoxJBONServiceBackend(self.cloud)
        ProxMoxJBONServiceBackend.TASK_CREATE = MockVpsControlTask
        ProxMoxJBONServiceBackend.TASK_START = MockVpsControlTask
        ProxMoxJBONServiceBackend.TASK_STOP = MockVpsControlTask
Example #8
0
    def setUp(self):
        Resource.objects.all().delete()

        self.cloud = CmdbCloudConfig()
Example #9
0
    def __init__(self, stdout=None, stderr=None, no_color=False):
        super(Command, self).__init__(stdout, stderr, no_color)

        self.cloud = CmdbCloudConfig()
        self.task_tracker = self.cloud.task_tracker
        self.backend = ProxMoxJBONServiceBackend(self.cloud)