def import_coordinator(request): coordinator = Coordinator(owner=request.user, schema_version="uri:oozie:coordinator:0.2") if request.method == 'POST': coordinator_form = ImportCoordinatorForm(request.POST, request.FILES, instance=coordinator, user=request.user) if coordinator_form.is_valid(): coordinator_definition = coordinator_form.cleaned_data['definition_file'].read() try: _import_coordinator(coordinator=coordinator, coordinator_definition=coordinator_definition) coordinator.managed = True coordinator.name = coordinator_form.cleaned_data.get('name') coordinator.save() except Exception, e: request.error(_('Could not import coordinator: %s' % e)) raise PopupException(_('Could not import coordinator.'), detail=e) if coordinator_form.cleaned_data.get('resource_archive'): # Upload resources to workspace source = coordinator_form.cleaned_data.get('resource_archive') if source.name.endswith('.zip'): temp_path = archive_factory(source).extract() request.fs.copyFromLocal(temp_path, coordinator.deployment_dir) shutil.rmtree(temp_path) else: Coordinator.objects.filter(id=coordinator.id).delete() raise PopupException(_('Archive should be a Zip.')) Document.objects.link(coordinator, owner=request.user, name=coordinator.name, description=coordinator.description) request.info(_('Coordinator imported')) return redirect(reverse('oozie:edit_coordinator', kwargs={'coordinator': coordinator.id})) else: request.error(_('Errors on the form'))
def _import_coordinators(self, directory): for example_directory_name in os.listdir(directory): if os.path.isdir(os.path.join(directory, example_directory_name)): with open( os.path.join(directory, example_directory_name, 'coordinator.zip')) as fp: coordinator_xml, metadata = Coordinator.decompress(fp) coordinator_root = etree.fromstring(coordinator_xml) try: Coordinator.objects.get(name=coordinator_root.get('name')) except Coordinator.DoesNotExist: LOG.info( _("Installing coordinator %s") % coordinator_root.get('name')) LOG.debug("Coordinator definition:\n%s" % coordinator_xml) coordinator = Coordinator(owner=self.user, is_shared=True) coordinator.name = coordinator_root.get('name') coordinator.save() import_coordinator_root( coordinator=coordinator, coordinator_definition_root=coordinator_root, metadata=metadata)
def _import_coordinators(self, directory): for example_directory_name in os.listdir(directory): if os.path.isdir(os.path.join(directory, example_directory_name)): with open(os.path.join(directory, example_directory_name, 'coordinator.zip')) as fp: coordinator_xml, metadata = Coordinator.decompress(fp) coordinator_root = etree.fromstring(coordinator_xml) try: Coordinator.objects.get(name=coordinator_root.get('name')) except Coordinator.DoesNotExist: LOG.info(_("Installing coordinator %s") % coordinator_root.get('name')) LOG.debug("Coordinator definition:\n%s" % coordinator_xml) coordinator = Coordinator(owner=self.user, is_shared=True) coordinator.name = coordinator_root.get('name') coordinator.save() import_coordinator_root(coordinator=coordinator, coordinator_definition_root=coordinator_root, metadata=metadata)