//------------------------------------------------ // Remove a UDF function from the database. // bool example_remove_udf(aerospike* p_as, const char* udf_file_path) { as_error err; char* base = basename(udf_file_path); if (aerospike_udf_remove(p_as, &err, NULL, base) != AEROSPIKE_OK) { LOG("aerospike_udf_remove() returned %d - %s", err.code, err.message); return false; } // Wait for the system metadata to spread to all nodes. usleep(100 * 1000); return true; }
bool udf_remove(const char * filename) { as_error err; as_error_reset(&err); as_string filename_string; const char * base = as_basename(&filename_string, filename); if ( aerospike_udf_remove(as, &err, NULL, base) != AEROSPIKE_OK ) { error("error caused by aerospike_udf_remove(): (%d) %s @ %s[%s:%d]", err.code, err.message, err.func, err.file, err.line); } as_string_destroy(&filename_string); WAIT_MS(100); return err.code == AEROSPIKE_OK; }
/* ****************************************************************************************************** Remove a UDF module from the aerospike DB. * * @param aerospike_obj_p The C client's aerospike object. * @param error_p The C client's as_error to be set to the encountered error. * @param module_p The name of the UDF module to remove from the Aerospike DB. * @param module_len The module name length. * @param options_p The optional policy. * * @return AEROSPIKE_OK if success. Otherwise AEROSPIKE_x. ****************************************************************************************************** */ extern as_status aerospike_udf_deregister(Aerospike_object* aerospike_obj_p, as_error* error_p, char* module_p, zval* options_p) { as_policy_info info_policy; set_policy(NULL, NULL, NULL, NULL, &info_policy, NULL, options_p, error_p); if (AEROSPIKE_OK != (error_p->code)) { DEBUG_PHP_EXT_DEBUG("Unable to set policy"); goto exit; } if (AEROSPIKE_OK != aerospike_udf_remove(aerospike_obj_p->as_ref_p->as_p, error_p, NULL, module_p)) { DEBUG_PHP_EXT_ERROR(error_p->message); goto exit; } exit: return error_p->code; }
// ---------------------------------------------------------------------------------- // // drop udf for given server_path // // def drop_udf(server_path, options = {}) // // params: // server_path - where is udf on the server (name) // // ------ // RETURN: // 1. true if succesfull // // @TODO options policy // static VALUE drop_udf(int argc, VALUE * argv, VALUE self) { rb_aero_TIMED(tm); as_error err; aerospike * as = rb_aero_CLIENT; VALUE server_path; VALUE options; rb_scan_args(argc, argv, "11", &server_path, &options); // default values for optional arguments if ( NIL_P(options) ) options = rb_hash_new(); if ( aerospike_udf_remove(as, &err, NULL, StringValueCStr(server_path)) != AEROSPIKE_OK ) raise_as_error(err); rb_aero_logger(AS_LOG_LEVEL_DEBUG, &tm, 1, rb_str_new2("[Client][drop_udf] done")); return Qtrue; }
/** ******************************************************************************************************* * Removes a UDF module from the Aerospike DB * * @param self AerospikeClient object * @param args The args is a tuple object containing an argument * list passed from Python to a C function * @param kwds Dictionary of keywords * * Returns an integer status. 0(Zero) is success value. * In case of error,appropriate exceptions will be raised. ******************************************************************************************************* */ PyObject * AerospikeClient_UDF_Remove(AerospikeClient * self, PyObject *args, PyObject * kwds) { // Initialize error as_error err; as_error_init(&err); // Python Function Arguments PyObject * py_policy = NULL; PyObject * py_filename = NULL; PyObject * py_ustr = NULL; as_policy_info info_policy; as_policy_info *info_policy_p = NULL; // Python Function Keyword Arguments static char * kwlist[] = {"filename", "policy", NULL}; // Python Function Argument Parsing if ( PyArg_ParseTupleAndKeywords(args, kwds, "O|O:udf_remove", kwlist, &py_filename, &py_policy) == false ) { return NULL; } if (!self || !self->as) { as_error_update(&err, AEROSPIKE_ERR_PARAM, "Invalid aerospike object"); goto CLEANUP; } if (!self->is_conn_16) { as_error_update(&err, AEROSPIKE_ERR_CLUSTER, "No connection to aerospike cluster"); goto CLEANUP; } if ( err.code != AEROSPIKE_OK ) { goto CLEANUP; } // Convert PyObject into a filename string char *filename = NULL; if (PyUnicode_Check(py_filename)) { py_ustr = PyUnicode_AsUTF8String(py_filename); filename = PyString_AsString(py_ustr); } else if (PyString_Check(py_filename)) { filename = PyString_AsString(py_filename); } else { as_error_update(&err, AEROSPIKE_ERR_PARAM, "Filename should be a string"); goto CLEANUP; } // Convert python object to policy_info pyobject_to_policy_info( &err, py_policy, &info_policy, &info_policy_p, &self->as->config.policies.info); // Invoke operation Py_BEGIN_ALLOW_THREADS aerospike_udf_remove(self->as, &err, info_policy_p, filename); Py_END_ALLOW_THREADS if ( err.code != AEROSPIKE_OK ) { as_error_update(&err, err.code, NULL); goto CLEANUP; } CLEANUP: if (py_ustr) { Py_DECREF(py_ustr); } if ( err.code != AEROSPIKE_OK ) { PyObject * py_err = NULL; error_to_pyobject(&err, &py_err); PyObject *exception_type = raise_exception(&err); if(PyObject_HasAttrString(exception_type, "module")) { PyObject_SetAttrString(exception_type, "module", py_filename); } if(PyObject_HasAttrString(exception_type, "func")) { PyObject_SetAttrString(exception_type, "func", Py_None); } PyErr_SetObject(exception_type, py_err); Py_DECREF(py_err); return NULL; } return PyLong_FromLong(0); }