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)
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)
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")
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)
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()
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)
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)
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)
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)
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'})
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)
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)
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)
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'})
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'})
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')
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'})