Browse Source

HUE-5304 [solr] Fix creating aliases

Romain Rigaux 8 years ago
parent
commit
3715e9980c

+ 10 - 15
desktop/libs/indexer/src/indexer/solr_api.py

@@ -110,13 +110,13 @@ def delete_indexes(request):
   if not indexes:
     response['message'] = _('No indexes to remove.')
   else:
-    searcher = SolrClient(request.user)
+    client = SolrClient(request.user)
 
     for index in indexes:
       if index['type'] == 'collection':
-        searcher.delete_index(index['name'])
+        client.delete_index(index['name'])
       elif index['type'] == 'alias':
-        searcher.delete_alias(index['name'])
+        client.delete_alias(index['name'])
       else:
         LOG.warn('We could not delete: %s' % index)
 
@@ -126,28 +126,23 @@ def delete_indexes(request):
   return JsonResponse(response)
 
 
-def create_or_edit_alias(request):
-  if request.method != 'POST':
-    raise PopupException(_('POST request required.'))
-
+@require_POST
+@api_error_handler
+def create_alias(request):
   response = {'status': -1}
 
   alias = request.POST.get('alias', '')
   collections = json.loads(request.POST.get('collections', '[]'))
 
-  api = SolrApi(SOLR_URL.get(), request.user, SECURITY_ENABLED.get())
+  client = SolrClient(request.user)
 
-  try:
-    api.create_or_modify_alias(alias, collections)
-    response['status'] = 0
-    response['message'] = _('Alias created or modified!')
-  except Exception, e:
-    response['message'] = _('Alias could not be created or modified: %s') % e
+  client.create_alias(alias, collections)
+  response['status'] = 0
+  response['message'] = _('Alias created or modified!')
 
   return JsonResponse(response)
 
 
-
 def design_schema(request, index):
   if request.method == 'POST':
     pass # TODO: Support POST for update?

+ 2 - 2
desktop/libs/indexer/src/indexer/templates/indexes.mako

@@ -114,7 +114,7 @@ ${ commonheader(_("Index Browser"), "search", user, request, "60px") | n,unicode
     <select data-bind="options: alias.availableCollections, selectedOptions: alias.chosenCollections, optionsText: 'name', optionsValue: 'name'" size="5" multiple="true"></select>
 
     <a href="javascript:void(0)" class="btn" data-bind="click: alias.create, visible: alias.chosenCollections().length > 0">
-      <i class="fa fa-plus-circle"></i> ${ _('Create or edit') }
+      <i class="fa fa-plus-circle"></i> ${ _('Create') }
     </a>
     <a href="javascript:void(0)" class="btn" data-bind="click: function() { alias.showCreateModal(false) }">
       <i class="fa fa-plus-circle"></i> ${ _('Cancel') }
@@ -182,7 +182,7 @@ ${ commonheader(_("Index Browser"), "search", user, request, "60px") | n,unicode
     });
 
     self.create = function() {
-      $.post("${ url('indexer:create_or_edit_alias') }", {
+      $.post("${ url('indexer:create_alias') }", {
         "alias": self.name,
         "collections": ko.mapping.toJSON(self.chosenCollections)
       }, function() {

+ 1 - 1
desktop/libs/indexer/src/indexer/urls.py

@@ -46,7 +46,7 @@ urlpatterns += patterns('indexer.api',
 
 urlpatterns += patterns('indexer.solr_api',
   # V2
-  url(r'^api/aliases/create_or_edit/$', 'create_or_edit_alias', name='create_or_edit_alias'),
+  url(r'^api/aliases/create/$', 'create_alias', name='create_alias'),
   url(r'^api/indexes/create/$', 'create_index', name='create_index'),
   url(r'^api/indexes/delete/$', 'delete_indexes', name='delete_indexes'),
   url(r'^api/indexes/(?P<index>\w+)/schema/$', 'design_schema', name='design_schema')

+ 6 - 5
desktop/libs/libsolr/src/libsolr/api.py

@@ -446,7 +446,7 @@ class SolrApi(object):
       else:
         raise PopupException(e, title=_('Error while accessing Solr'))
 
-  def create_or_modify_alias(self, name, collections):
+  def create_alias(self, name, collections):
     try:
       params = self._get_params() + (
         ('action', 'CREATEALIAS'),
@@ -457,11 +457,12 @@ class SolrApi(object):
 
       response = self._root.post('admin/collections', params=params, contenttype='application/json')
       if response.get('responseHeader', {}).get('status', -1) != 0:
-        msg = _("Could not create or edit alias. Check response:\n%s") % json.dumps(response, indent=2)
-        LOG.error(msg)
-        raise PopupException(msg)
+        raise PopupException(_("Could not create or edit alias: %s") % response)
+      else:
+        return response
     except RestException, e:
-        raise PopupException(e, title=_('Error while accessing Solr'))
+      raise PopupException(e, title=_('Error while accessing Solr'))
+
 
   def delete_alias(self, name):
     try: