Restoring Ranger Audit Solr schema and collection

If you encounter any failure during the upgrade, you must restore the Ranger audits Solr schema and collection to their previous state.

Delete the newly added fields

ps -ef | grep rangeradmin | awk '{split($0, array,"-cp"); print array[2]}' | cut -d: -f1
#Note down the path for RANGER_ADMIN_CONF_DIR

klist -kt <RANGER_ADMIN_CONF_DIR>/../ranger.keytab
#Note down RANGER_ADMIN_PRINCIPAL, it must starts with 'rangeradmin' by default

kinit -kt <RANGER_ADMIN_CONF_DIR>/../ranger.keytab <RANGER_ADMIN_PRINCIPAL>
#No output will be returned on successful authentication

# Delete ‘datasets’
curl -k --negotiate -u : -X POST "${SOLR_HTTP_SCHEME}://${SOLR_HOST}:${SOLR_PORT}/solr/ranger_audits/schema" \
  -H "Content-Type: application/json" \
  --data-binary '{
    "delete-field": { "name": "datasets" }
  }'

# Delete ‘projects’
curl -k --negotiate -u : -X POST "${SOLR_HTTP_SCHEME}://${SOLR_HOST}:${SOLR_PORT}/solr/ranger_audits/schema" \
  -H "Content-Type: application/json" \
  --data-binary '{
    "delete-field": { "name": "projects" }
  }'

# Delete 'datasetIds'
curl -k --negotiate -u : -X POST "${SOLR_HTTP_SCHEME}://${SOLR_HOST}:${SOLR_PORT}/solr/ranger_audits/schema" \
  -H "Content-Type: application/json" \
  --data-binary '{
    "delete-field": { "name": "datasetIds" }
  }'

Delete existing ranger_audits schema collection and configuration set

curl -i -k --negotiate -u : "${SOLR_HTTP_SCHEME}://${SOLR_HOST}:${SOLR_PORT}/solr/admin/collections?action=DELETE&name=ranger_audits"

curl -i -k --negotiate -u : "${SOLR_HTTP_SCHEME}://${SOLR_HOST}:${SOLR_PORT}/solr/admin/configs?action=DELETE&name=ranger_audits&omitHeader=true"

Restore the Solr collection and associated configurations

Use the Solr Collections API RESTORE action to restore from the backup created earlier.
ps -ef | grep rangeradmin | awk '{split($0, array,"-cp"); print array[2]}' | cut -d: -f1
#Note down the path for RANGER_ADMIN_CONF_DIR

klist -kt <RANGER_ADMIN_CONF_DIR>/../ranger.keytab
#Note down RANGER_ADMIN_PRINCIPAL, it must starts with 'rangeradmin' by default

kinit -kt <RANGER_ADMIN_CONF_DIR>/../ranger.keytab <RANGER_ADMIN_PRINCIPAL>
#No output will be returned on successful authentication

curl -k --negotiate -u :  "${SOLR_HTTP_SCHEME}://${SOLR_HOST}:${SOLR_PORT}/solr/admin/collections" \
     --get \
     --data-urlencode "action=RESTORE" \
     --data-urlencode "name=${BACKUP_NAME}" \
     --data-urlencode "collection=${COLLECTION}" \
     --data-urlencode "location=${LOCATION}"

Reload collection using Solr collections API

curl -k --negotiate -u : "${SOLR_HTTP_SCHEME}://${SOLR_HOST}:${SOLR_PORT}/solr/admin/collections?action=RELOAD&name=ranger_audits"