Currently job artifacts in CI/CD pipelines on LRZ GitLab never expire. Starting from Wed 26.1.2022 the default expiration time will be 30 days (GitLab default). Currently existing artifacts in already completed jobs will not be affected by the change. The latest artifacts for all jobs in the latest successful pipelines will be kept. More information: https://gitlab.lrz.de/help/user/admin_area/settings/continuous_integration.html#default-artifacts-expiration

Commit 9b49a6d2 authored by Alessio Netti's avatar Alessio Netti
Browse files

Added dcdbconfig clearOperations action

- Allows to remove all existing operations from a certain sensor
parent 835657e6
......@@ -288,6 +288,14 @@ public:
*/
SCError setOperations(std::string publicName, std::set<std::string> operations);
/**
* @brief Removes all operations of the sensor.
*
* @param publicName Name of the sensor.
* @return See SCError.
*/
SCError clearOperations(std::string publicName);
/**
* @brief Set a new sensor expression for a virtual sensor.
*
......
......@@ -81,6 +81,7 @@ public:
SCError setSensorUnit(std::string publicName, std::string unit);
SCError setSensorMask(std::string publicName, uint64_t mask);
SCError setOperations(std::string publicName, std::set<std::string> operations);
SCError clearOperations(std::string publicName);
SCError setTimeToLive(std::string publicName, uint64_t ttl);
SCError setSensorInterval(std::string publicName, uint64_t interval);
......
......@@ -176,6 +176,11 @@ SCError SensorConfig::setOperations(std::string publicName, std::set<std::string
return impl->setOperations(publicName,operations);
}
SCError SensorConfig::clearOperations(std::string publicName)
{
return impl->clearOperations(publicName);
}
SCError SensorConfig::setTimeToLive(std::string publicName, uint64_t ttl)
{
return impl->setTimeToLive(publicName, ttl);
......@@ -1520,6 +1525,50 @@ SCError SensorConfigImpl::setOperations(std::string publicName, std::set<std::st
return error;
}
SCError SensorConfigImpl::clearOperations(std::string publicName)
{
SCError error = SC_UNKNOWNERROR;
CassError rc = CASS_OK;
CassStatement* statement = nullptr;
CassFuture* future = nullptr;
const CassPrepared* prepared = nullptr;
const char* query = "UPDATE " CONFIG_KEYSPACE_NAME "." CF_PUBLISHEDSENSORS " SET operations = {} WHERE name = ? ;";
future = cass_session_prepare(session, query);
cass_future_wait(future);
rc = cass_future_error_code(future);
if (rc != CASS_OK) {
connection->printError(future);
return SC_UNKNOWNERROR;
}
prepared = cass_future_get_prepared(future);
cass_future_free(future);
statement = cass_prepared_bind(prepared);
cass_statement_bind_string(statement, 0, publicName.c_str());
future = cass_session_execute(session, statement);
cass_future_wait(future);
rc = cass_future_error_code(future);
if (rc != CASS_OK) {
connection->printError(future);
error = SC_UNKNOWNERROR;
}
else {
error = SC_OK;
}
cass_statement_free(statement);
cass_prepared_free(prepared);
return error;
}
SCError SensorConfigImpl::setTimeToLive(std::string publicName, uint64_t ttl)
{
SCError error = SC_UNKNOWNERROR;
......
......@@ -70,6 +70,7 @@ void SensorAction::printHelp(int argc, char* argv[])
std::cout << " TTL <public name> <ttl> - Change time to live of a sensor." << std::endl;
std::cout << " OPERATIONS <public name> <operation>,<operation>,..." << std::endl;
std::cout << " - Set operations for the sensor (e.g., avg, stddev,...)." << std::endl;
std::cout << " CLEAROPERATIONS <public name> - Remove all existing operations for the sensor." << std::endl;
std::cout << " UNPUBLISH <public name> - Unpublish a sensor." << std::endl;
}
......@@ -187,6 +188,14 @@ int SensorAction::executeCommand(int argc, char* argv[], int argvidx, const char
}
doOperations(argv[argvidx+1], argv[argvidx+2]);
}
else if (strcasecmp(argv[argvidx], "CLEAROPERATIONS") == 0) {
/* CLEAROPERATIONS needs one more parameter */
if (argvidx+1 >= argc) {
std::cout << "CLEAROPERATIONS needs one more parameter!" << std::endl;
goto executeCommandError;
}
doClearOperations(argv[argvidx+1]);
}
else if (strcasecmp(argv[argvidx], "UNPUBLISH") == 0) {
/* UNPUBLISH needs one more parameter */
if (argvidx+1 >= argc) {
......@@ -583,6 +592,25 @@ void SensorAction::doOperations(const char* publicName, const char *operations)
}
}
void SensorAction::doClearOperations(const char* publicName)
{
DCDB::SensorConfig sensorConfig(connection);
DCDB::SCError err = sensorConfig.clearOperations(publicName);
switch (err) {
case DCDB::SC_OK:
break;
case DCDB::SC_UNKNOWNSENSOR:
std::cout << "Unknown sensor name: " << publicName << std::endl;
break;
case DCDB::SC_INVALIDSESSION:
std::cout << "Invalid session!" << std::endl;
break;
default:
std::cout << "Internal error." << std::endl;
}
}
/*
* Unpublish a sensor
*/
......
......@@ -58,6 +58,7 @@ protected:
void doInterval(const char* publicName, const char *interval);
void doTTL(const char* publicName, const char *ttl);
void doOperations(const char* publicName, const char *operations);
void doClearOperations(const char* publicName);
void doUnPublishSensor(const char* publicName);
};
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment