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 3ba87e5b authored by Daniele Tafani's avatar Daniele Tafani
Browse files

Working version of the MontblancPusher - still needs timestamp fix

parent ef2bdc63
......@@ -18,6 +18,9 @@
#include "simplemqttserver.h"
#include "messaging.h"
#define __STDC_FORMAT_MACROS
#include <inttypes.h>
using namespace std;
int keepRunning;
......@@ -53,17 +56,21 @@ void mqttCallback(SimpleMQTTMessage *msg)
//In the 64 bit message case, the collect agent provides a timestamp
if(msg->getPayloadLength()==sizeof(uint64_t)) {
//printf("Providing timestamp...\n");
val = *((uint64_t*)msg->getPayload());
ts = Messaging::calculateTimestamp();
//printf("Val = %" PRIu64 ", timestamp = %" PRIu64 "\n", val, ts);
}
//...otherwise it just retrieves it from the MQTT message payload.
else if((msg->getPayloadLength()%sizeof(mqttPayload)==0) && (msg->getPayloadLength()>0)){
//printf("Retrieving timestamp...\n");
mqttPayload *payload = (mqttPayload*)msg->getPayload();
val = payload->value; // payload[n].value
ts = payload->timestamp;
//printf("Val = %" PRIu64 ", timestamp = %" PRIu64 "\n", val, ts);
}
/*
......@@ -72,6 +79,7 @@ void mqttCallback(SimpleMQTTMessage *msg)
* the record in the database.
*/
SensorId sid;
mySensorDataStore->topicToSid(&sid,msg->getTopic());
if (mySensorDataStore->topicToSid(&sid,msg->getTopic())) {
#if 0
cout << "Topic decode successful:"
......@@ -81,9 +89,8 @@ void mqttCallback(SimpleMQTTMessage *msg)
<< "\nrack_id_msb: " << hex << (uint32_t)sid.dl.rack_id_msb
<< "\nrack_id_lsb: " << hex << (uint32_t)sid.dl.rack_id_lsb
<< "\nchassis_id: " << hex << (uint32_t)sid.dl.chassis_id
<< "\nbic_id: " << hex << (uint32_t)sid.dl.bic_id
<< "\nbnc_id: " << hex << (uint32_t)sid.dl.bnc_id
<< "\nknc_id: " << hex << (uint32_t)sid.dl.knc_id
<< "\nbmc_id: " << hex << (uint32_t)sid.dl.bmc_id
<< "\nsdb_id: " << hex << (uint32_t)sid.dl.sdb_id
<< "\ndevice_id: " << hex << sid.dsid.device_id
<< "\nsensor_id: " << hex << sid.dsid.sensor_id
<< "\n";
......
......@@ -39,9 +39,8 @@
typedef union {
uint64_t raw; /**< The raw bit-field representing the DeviceLocation */
struct {
uint8_t knc_id;
uint8_t bnc_id;
uint8_t bic_id;
uint16_t sdb_id;
uint8_t bmc_id;
uint8_t chassis_id;
uint8_t rack_id_lsb;
uint8_t rack_id_msb;
......@@ -61,7 +60,8 @@ typedef union {
* approach is, for example, to use MAC addresses as the device_id.
*/
typedef struct {
uint64_t sensor_number : 16; /**< The sensor_number of the sensor */
//uint64_t sensor_number : 16; /**< The sensor_number of the sensor */
uint64_t sensor_id : 16; /**< The sensor_number of the sensor */
uint64_t rsvd : 16; /**< Reserved */
uint64_t device_id : 32; /**< The location-independent device_id */
} DeviceSensorId;
......@@ -120,6 +120,7 @@ public:
* @return Returns true if the topic string was valid and the SensorId object was populated.
*/
bool topicToSid(SensorId* sid, std::string topic);
//template <typename T> bool topicToSid(T* sid, uint64_t ts, uint64_t value)
/**
* @brief This function inserts a single sensor reading into
......@@ -129,6 +130,7 @@ public:
* @param value The value of the sensor reading.
*/
void insert(SensorId* sid, uint64_t ts, uint64_t value);
//template <typename T> void insert(T* sid, uint64_t ts, uint64_t value)
/**
* @brief A shortcut constructor for a SensorDataStore object
......
......@@ -59,6 +59,7 @@ string SensorDataStoreImpl::sidConvert(SensorId *sid)
* SensorDataStore class.
*/
bool SensorDataStoreImpl::topicToSid(SensorId* sid, string topic)
//template <typename T> bool SensorDataStoreImpl::topicToSid(T* sid, string topic)
{
uint64_t pos = 0;
const char* buf = topic.c_str();
......@@ -214,6 +215,7 @@ bool SensorDataStore::topicToSid(SensorId* sid, std::string topic)
* class.
*/
void SensorDataStore::insert(SensorId* sid, uint64_t ts, uint64_t value)
//template <typename T> void SensorDataStore::insert(T* sid, uint64_t ts, uint64_t value)
{
impl->insert(sid, ts, value);
}
......
......@@ -108,7 +108,7 @@ $(DCDBDEPSPATH)/.prerequesites: $(DCDBDEPSPATH)/.extract-distfiles
echo "Building OpenIPMI library..."; \
if [ -e $(DCDBDEPSPATH)/patches/$(O).patch ]; then echo "Patching OpenIPMI..."; cd $(DCDBDEPSPATH)/$(O) && (patch -N -p1 < $(DCDBDEPSPATH)/patches/$(O).patch || true); fi; \
if [ "$(X)" = "Darwin" ]; then echo "Fixing OpenIPMI for Mac OS..."; cd $(DCDBDEPSPATH)/$(O) && find . -name 'Makefile*' | xargs sed -i '' -e 's/Map/map/g'; fi; \
cd $(DCDBDEPSPATH)/$(O) && ./configure --prefix=$(DCDBDEPLOYPATH) --with-swig=no --with-perl=no --with-python=no; \
cd $(DCDBDEPSPATH)/$(O) && ./configure --prefix=$(DCDBDEPLOYPATH) --with-swig=no --with-perl=no --with-python=no CFLAGS="$(CFLAGS)"; \
cd $(DCDBDEPSPATH)/$(O) && make -j $(MAKETHREADS) && make install && touch $(DCDBDEPSPATH)/$(O)/.installed; \
else \
echo "Skipping OpenIPMI library (already built)..."; \
......
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