Пример #1
0
 def test_provision_sandbox_instance(self, mock_instance_provision):
     """
     Create sandbox instance
     """
     instance = OpenEdXInstanceFactory()
     tasks.provision_instance(instance.pk)
     self.assertEqual(mock_instance_provision.call_count, 1)
     self.assertEqual(mock_instance_provision.mock_calls[0][1][0].pk, instance.pk)
Пример #2
0
 def test_provision_instance(self):
     """
     Provision an instance
     """
     SingleVMOpenEdXInstanceFactory(name='Integration - test_provision_instance')
     instance = SingleVMOpenEdXInstance.objects.get()
     provision_instance(instance.pk)
     self.assert_instance_up(instance)
Пример #3
0
 def test_provision_instance(self):
     """
     Provision an instance
     """
     OpenEdXInstanceFactory(name="Integration - test_provision_instance")
     instance = OpenEdXInstance.objects.get()
     provision_instance(instance.pk)
     self.assertEqual(instance.status, "ready")
Пример #4
0
 def test_provision_instance(self):
     """
     Provision an instance
     """
     OpenEdXInstanceFactory(name='Integration - test_provision_instance')
     instance = OpenEdXInstance.objects.get()
     provision_instance(instance.pk)
     self.assert_instance_up(instance)
Пример #5
0
 def test_provision_sandbox_instance(self, mock_instance_provision):
     """
     Create sandbox instance
     """
     instance = OpenEdXInstanceFactory()
     tasks.provision_instance(instance.pk)
     self.assertEqual(mock_instance_provision.call_count, 1)
     self.assertEqual(mock_instance_provision.mock_calls[0][1][0].pk,
                      instance.pk)
     self.mock_db_connection_close.assert_called_once_with()
Пример #6
0
    def test_ansible_failure(self, git_checkout, git_working_dir):
        """
        Ensure failures in the ansible flow are reflected in the instance
        """
        git_working_dir.return_value = os.path.join(os.path.dirname(__file__), "ansible")

        OpenEdXInstanceFactory(name="Integration - test_ansible_failure", ansible_playbook_name="failure")
        instance = OpenEdXInstance.objects.get()
        provision_instance(instance.pk)
        self.assertEqual(instance.status, OpenEdXInstance.PROVISIONING)
        self.assertEqual(instance.progress, OpenEdXInstance.PROGRESS_FAILED)
Пример #7
0
    def test_ansible_failignore(self, git_checkout, git_working_dir):
        """
        Ensure failures that are ignored doesn't reflect in the instance
        """
        git_working_dir.return_value = os.path.join(os.path.dirname(__file__), "ansible")

        OpenEdXInstanceFactory(name="Integration - test_ansible_failignore", ansible_playbook_name="failignore")
        instance = OpenEdXInstance.objects.get()
        provision_instance(instance.pk)
        self.assertEqual(instance.status, OpenEdXInstance.READY)
        self.assertEqual(instance.progress, OpenEdXInstance.PROGRESS_SUCCESS)
Пример #8
0
    def test_ansible_failignore(self, git_checkout, git_working_dir):
        """
        Ensure failures that are ignored doesn't reflect in the instance
        """
        git_working_dir.return_value = os.path.join(os.path.dirname(__file__), "ansible")

        OpenEdXInstanceFactory(name='Integration - test_ansible_failignore',
                               ansible_playbook_name='failignore')
        instance = OpenEdXInstance.objects.get()
        provision_instance(instance.pk)
        self.assertEqual(instance.status, Status.Ready)
        self.assertEqual(instance.progress, Progress.Success)
Пример #9
0
    def test_ansible_failure(self, git_checkout, git_working_dir):
        """
        Ensure failures in the ansible flow are reflected in the instance
        """
        git_working_dir.return_value = os.path.join(os.path.dirname(__file__), "ansible")

        OpenEdXInstanceFactory(name='Integration - test_ansible_failure',
                               ansible_playbook_name='failure')
        instance = OpenEdXInstance.objects.get()
        provision_instance(instance.pk)
        self.assertEqual(instance.status, Status.Provisioning)
        self.assertEqual(instance.progress, Progress.Failed)
Пример #10
0
    def provision(self, request, pk=None):
        """
        Start the (re-)provisioning of an instance
        """
        instance = self.get_object()
        if instance.progress == instance.PROGRESS_RUNNING:
            return Response({'status': 'Instance is not ready for reprovisioning'},
                            status=status.HTTP_403_FORBIDDEN)

        instance.set_to_branch_tip()
        provision_instance(pk)

        return Response({'status': 'Instance provisioning started'})
Пример #11
0
 def test_external_databases(self):
     """
     Ensure that the instance can connect to external databases
     """
     if not settings.INSTANCE_MYSQL_URL or not settings.INSTANCE_MONGO_URL:
         print('External databases not configured, skipping integration test')
         return
     OpenEdXInstanceFactory(name='Integration - test_external_databases',
                            use_ephemeral_databases=False)
     instance = OpenEdXInstance.objects.get()
     provision_instance(instance.pk)
     self.assert_swift_container_provisioned(instance)
     self.assert_instance_up(instance)
Пример #12
0
 def test_external_databases(self):
     """
     Ensure that the instance can connect to external databases
     """
     if not settings.INSTANCE_MYSQL_URL or not settings.INSTANCE_MONGO_URL:
         print('External databases not configured, skipping integration test')
         return
     SingleVMOpenEdXInstanceFactory(name='Integration - test_external_databases',
                                    use_ephemeral_databases=False)
     instance = SingleVMOpenEdXInstance.objects.get()
     provision_instance(instance.pk)
     self.assert_swift_container_provisioned(instance)
     self.assert_instance_up(instance)
Пример #13
0
    def test_ansible_failignore(self, git_checkout, git_working_dir):
        """
        Ensure failures that are ignored doesn't reflect in the instance
        """
        git_working_dir.return_value = os.path.join(os.path.dirname(__file__), "ansible")

        SingleVMOpenEdXInstanceFactory(name='Integration - test_ansible_failignore',
                                       ansible_playbook_name='failignore')
        instance = SingleVMOpenEdXInstance.objects.get()
        provision_instance(instance.pk)
        instance.refresh_from_db()
        self.assertEqual(instance.status, InstanceStatus.Running)
        self.assertEqual(instance.server_status, ServerStatus.Ready)
Пример #14
0
    def provision(self, request, pk=None):
        """
        Start the (re-)provisioning of an instance
        """
        instance = self.get_object()
        if instance.status not in (instance.EMPTY, instance.READY):
            return Response({'status': 'Instance is not ready for reprovisioning'},
                            status=status.HTTP_403_FORBIDDEN)

        instance.set_to_branch_tip()
        provision_instance(pk)

        return Response({'status': 'Instance provisioning started'})
Пример #15
0
    def provision(self, request, pk=None):
        """
        Start the (re-)provisioning of an instance
        """
        instance = self.get_object()
        if instance.status in (Instance.Status.WaitingForServer, Instance.Status.ConfiguringServer):
            return Response({'status': 'Instance is not ready for reprovisioning'},
                            status=status.HTTP_400_BAD_REQUEST)

        try:
            instance.set_to_branch_tip()
        except github.ObjectDoesNotExist:
            return Response({
                'status': ("Branch '{0}' not found."
                           'Has it been deleted on GitHub?'.format(instance.branch_name))
            }, status=status.HTTP_400_BAD_REQUEST)

        provision_instance(pk)
        return Response({'status': 'Instance provisioning started'})
Пример #16
0
 def test_provision_instance(self):
     """
     Provision an instance
     """
     uid = str(uuid.uuid4())[:8]
     instance = OpenEdXInstance.objects.create(
         sub_domain='{}.integration'.format(uid),
         name='Integration - test_provision_instance',
         fork_name='edx/edx-platform',
         ref_type='tags',
         branch_name='named-release/cypress', # Use a known working version
         ansible_source_repo_url='https://github.com/open-craft/configuration.git',
         configuration_version='integration',
         ansible_playbook_name='opencraft_integration',
         forum_version='named-release/cypress',
         notifier_version='named-release/cypress',
         xqueue_version='named-release/cypress',
         certs_version='named-release/cypress',
     )
     provision_instance(instance.pk)
     self.assertEqual(instance.status, 'ready')
Пример #17
0
    def provision(self, request, pk=None):
        """
        Start the (re-)provisioning of an instance
        """
        instance = self.get_object()
        if instance.progress == Server.Progress.Running:
            return Response(
                {'status': 'Instance is not ready for reprovisioning'},
                status=status.HTTP_400_BAD_REQUEST)

        try:
            instance.set_to_branch_tip()
        except github.ObjectDoesNotExist:
            return Response(
                {
                    'status': ("Branch '{0}' not found."
                               'Has it been deleted on GitHub?'.format(
                                   instance.branch_name))
                },
                status=status.HTTP_400_BAD_REQUEST)

        provision_instance(pk)
        return Response({'status': 'Instance provisioning started'})