Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

pyCSW single microservice #27

Closed
mwallschlaeger opened this issue Jul 24, 2023 · 1 comment · Fixed by #68
Closed

pyCSW single microservice #27

mwallschlaeger opened this issue Jul 24, 2023 · 1 comment · Fixed by #68
Assignees
Labels
feature new required feature

Comments

@mwallschlaeger
Copy link
Contributor

pycsw is currently used as a library inside of GeoNode. To reduce the complexity of the code and improve microservice design pattern, to improve scalability and resource management pycsw setup as a single deployment running pycsw. GeoNode already supports external pycsw service by settings.py parameters

@mwallschlaeger mwallschlaeger added the feature new required feature label Jul 24, 2023
@mwallschlaeger mwallschlaeger self-assigned this Jul 24, 2023
@mwallschlaeger
Copy link
Contributor Author

mwallschlaeger commented Jul 31, 2023

running pycsw as single service beside geonode has an issue uploading documents currently.

Internal Server Error: /documents/upload
Traceback (most recent call last):
  File "/usr/local/lib/python3.10/dist-packages/django/db/models/query.py", line 581, in get_or_create
    return self.get(**kwargs), False
  File "/usr/local/lib/python3.10/dist-packages/django/db/models/query.py", line 435, in get
    raise self.model.DoesNotExist(
geonode.documents.models.Document.DoesNotExist: Document matching query does not exist.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.10/dist-packages/django/template/backends/django.py", line 61, in render
    return self.template.render(context)
  File "/usr/local/lib/python3.10/dist-packages/django/template/base.py", line 170, in render
    return self._render(context)
  File "/usr/local/lib/python3.10/dist-packages/django/template/base.py", line 162, in _render
    return self.nodelist.render(context)
  File "/usr/local/lib/python3.10/dist-packages/django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "/usr/local/lib/python3.10/dist-packages/django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "/usr/local/lib/python3.10/dist-packages/django/template/loader_tags.py", line 183, in render
    template = context.template.engine.select_template(template_name)
  File "/usr/local/lib/python3.10/dist-packages/django/template/engine.py", line 170, in select_template
    raise TemplateDoesNotExist("No template names provided")
django.template.exceptions.TemplateDoesNotExist: No template names provided

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/src/geonode/./geonode/documents/views.py", line 127, in post
    return super().post(request, *args, **kwargs)
  File "/usr/local/lib/python3.10/dist-packages/django/views/generic/edit.py", line 172, in post
    return super().post(request, *args, **kwargs)
  File "/usr/local/lib/python3.10/dist-packages/django/views/generic/edit.py", line 142, in post
    return self.form_valid(form)
  File "/usr/src/geonode/./geonode/documents/views.py", line 170, in form_valid
    self.object = resource_manager.create(
  File "/usr/src/geonode/./geonode/resource/manager.py", line 329, in create
    _resource, _created = resource_type.objects.get_or_create(uuid=uuid, defaults=defaults)
  File "/usr/local/lib/python3.10/dist-packages/django/db/models/manager.py", line 85, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/usr/local/lib/python3.10/dist-packages/modeltranslation/manager.py", line 419, in get_or_create
    return super().get_or_create(*args, **kwargs)
  File "/usr/local/lib/python3.10/dist-packages/django/db/models/query.py", line 588, in get_or_create
    return self.create(**params), True
  File "/usr/local/lib/python3.10/dist-packages/modeltranslation/manager.py", line 411, in create
    return super().create(**kwargs)
  File "/usr/local/lib/python3.10/dist-packages/django/db/models/query.py", line 453, in create
    obj.save(force_insert=True, using=self.db)
  File "/usr/src/geonode/./geonode/base/models.py", line 1089, in save
    super().save(*args, **kwargs)
  File "/usr/local/lib/python3.10/dist-packages/polymorphic/models.py", line 87, in save
    return super().save(*args, **kwargs)
  File "/usr/local/lib/python3.10/dist-packages/django/db/models/base.py", line 739, in save
    self.save_base(using=using, force_insert=force_insert,
  File "/usr/local/lib/python3.10/dist-packages/django/db/models/base.py", line 787, in save_base
    post_save.send(
  File "/usr/local/lib/python3.10/dist-packages/django/dispatch/dispatcher.py", line 180, in send
    return [
  File "/usr/local/lib/python3.10/dist-packages/django/dispatch/dispatcher.py", line 181, in <listcomp>
    (receiver, receiver(signal=self, sender=sender, **named))
  File "/usr/src/geonode/./geonode/catalogue/models.py", line 49, in catalogue_post_save
    catalogue.create_record(instance)
  File "/usr/src/geonode/./geonode/catalogue/backends/generic.py", line 298, in create_record
    md_link = self.catalogue.create_from_dataset(item)
  File "/usr/src/geonode/./geonode/catalogue/backends/generic.py", line 146, in create_from_dataset
    response = self.csw_request(layer, "catalogue/transaction_insert.xml")  # noqa
  File "/usr/src/geonode/./geonode/catalogue/backends/generic.py", line 141, in csw_request
    md_doc = self.csw_gen_xml(layer, template)
  File "/usr/src/geonode/./geonode/catalogue/backends/generic.py", line 132, in csw_gen_xml
    md_doc = tpl.render(context=ctx)
  File "/usr/local/lib/python3.10/dist-packages/django/template/backends/django.py", line 63, in render
    reraise(exc, self.backend)
  File "/usr/local/lib/python3.10/dist-packages/django/template/backends/django.py", line 84, in reraise
    raise new from exc
django.template.exceptions.TemplateDoesNotExist: No template names provided

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.10/dist-packages/django/core/handlers/exception.py", line 47, in inner
    response = get_response(request)
  File "/usr/local/lib/python3.10/dist-packages/django/core/handlers/base.py", line 181, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/usr/local/lib/python3.10/dist-packages/django/contrib/auth/decorators.py", line 21, in _wrapped_view
    return view_func(request, *args, **kwargs)
  File "/usr/local/lib/python3.10/dist-packages/django/views/generic/base.py", line 70, in view
    return self.dispatch(request, *args, **kwargs)
  File "/usr/local/lib/python3.10/dist-packages/django/views/generic/base.py", line 98, in dispatch
    return handler(request, *args, **kwargs)
  File "/usr/src/geonode/./geonode/documents/views.py", line 131, in post
    json.dumps(exception_response.data),
AttributeError: 'NoneType' object has no attribute 'data'
[pid: 261|app: 0|req: 1/1] 10.244.0.1 () {76 vars in 1530 bytes} [Mon Jul 31 12:57:45 2023] POST /documents/upload?no__redirect=true => generated 318559 bytes in 355 msecs (HTTP/1.1 500) 8 headers in 295 bytes (2 switches on core 0)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature new required feature
Projects
None yet
1 participant