18 Commits

Author SHA1 Message Date
7578746d2f make it explicit that no device-controller is loaded down with this version 2024-01-25 15:46:46 +01:00
0b1ed62df1 Optimization: if customer repository does not exist, do noy check the
ISMAS trigger, but proceed with the update procedure.
2024-01-25 15:14:42 +01:00
76ec41c291 Minor: add some comment. 2024-01-25 15:13:56 +01:00
630cd36f13 Minor: removed typo 2024-01-25 11:54:13 +01:00
cbe8bb7aeb Minor: add comment 2024-01-25 09:01:04 +01:00
e04636e3f7 Minor: add debug output 2024-01-24 13:07:39 +01:00
728185ddb9 Set
m_lastFailedUpdateStep = UPDATE_STEP::NONE
as last step in case of a successful update.
2024-01-24 08:31:22 +01:00
aaa485e2fc Send messages to ISMAS for checking/repairing the customer repository 2024-01-23 16:09:15 +01:00
9a9480035b Improve output, esecially to ISMAS 2024-01-23 15:31:12 +01:00
0a43654f9b Improve output, esecially to ISMAS 2024-01-23 15:30:31 +01:00
4dba36a420 Add and use UPDATE_STEP::UPDATE_FINALIZE in debug output. 2024-01-23 15:29:19 +01:00
f9ce6a6c1b Minor: remove obsolete line. 2024-01-23 12:22:48 +01:00
c2c6bc3f8a Minor: removed typo. 2024-01-23 12:18:10 +01:00
8c02ebcf15 Minor: debug output to GUI. 2024-01-23 12:07:42 +01:00
100bfd63ab Do not write to GUO when running in loop to check ISMAS trigger button 2024-01-23 12:03:46 +01:00
23ff4977d9 Disable exit button after checking update trigger button. 2024-01-23 12:02:18 +01:00
8da6443833 Send additional messages to ISMAS about recovering the customer-repository 2024-01-19 13:58:08 +01:00
6b3ebde2b5 Check for automatic update and add a hint in SEND-LAST-MESSAGE. 2024-01-19 13:40:24 +01:00
4 changed files with 217 additions and 91 deletions

View File

@@ -95,10 +95,14 @@ DEFINES += QT_DEPRECATED_WARNINGS
# 1.4.0 : Start with version at 1.4.0 (mainly to see a difference with Szeged)
# Set hash-value in EVENT-objects. Set location (project), version
# and info in send-last-version.
# Check the ISMAS update-trigger as very first step.
# If the customer repository does not exist, then do not check the
# ISMAS trigger, but proceed with the update procedure. Otherwise,
# check the ISMAS update-trigger as first step.
# If the current time is between 0.00 - 4.00 o'clock, then a wrong
# trigger-value wil result in an UPDATE_STEP_NOT_NECESSARY.
# trigger-value will result in an UPDATE_STEP_NOT_NECESSARY.
# Move final processing to subclass UpdateProcessRunning.
# Disable EXIT-button for the whole update-process, except for the
# checking of the ISMAS-trigger-button (aka WAIT-button).
VERSION="1.4.0"
# PLANNED TODOS:

View File

@@ -605,19 +605,19 @@ bool Update::doUpdate(int &displayIndex, QStringList const &filesToWorkOn) {
// CONSOLE()
m_hw->dc_autoRequest(false);// default: turn auto-request setting off
QThread::sleep(1); // wait to be sure that there are no more
// commands sent to dc-hardware
if ((updateBinaryRes = updateBinary(fToWorkOn)) == true) {
// m_hw->dc_autoRequest(false);// default: turn auto-request setting off
// QThread::sleep(1); // wait to be sure that there are no more
// // commands sent to dc-hardware
// if ((updateBinaryRes = updateBinary(fToWorkOn)) == true) {
//
// qCritical() << "downloaded binary" << fToWorkOn;
++displayIndex;
emit m_worker->appendText(QString("\n(") + QString("%1").arg(displayIndex).rightJustified(2, ' ') + QString(")")
+ QString(" Update ") + QFileInfo(fToWorkOn).fileName(),
Worker::UPDATE_STEP_DONE);
}
// ++displayIndex;
// emit m_worker->appendText(QString("\n(") + QString("%1").arg(displayIndex).rightJustified(2, ' ') + QString(")")
// + QString(" Update ") + QFileInfo(fToWorkOn).fileName(),
// Worker::UPDATE_STEP_DONE);
//}
m_hw->dc_autoRequest(true); // turn auto-request setting on

View File

@@ -96,6 +96,7 @@ const QMap<UPDATE_STEP, const char*> Worker::smap (
INSERT_ELEMENT(UPDATE_STEP::SAVE_LOGS_SUCCESS),
INSERT_ELEMENT(UPDATE_STEP::SAVE_LOGS_FAILURE),
INSERT_ELEMENT(UPDATE_STEP::SEND_LAST_VERSION),
INSERT_ELEMENT(UPDATE_STEP::UPDATE_FINALIZE),
INSERT_ELEMENT(UPDATE_STEP::UPDATE_SUCCEEDED),
INSERT_ELEMENT(UPDATE_STEP::UPDATE_NOT_NECESSARY),
INSERT_ELEMENT(UPDATE_STEP::UPDATE_FAILED),
@@ -259,6 +260,7 @@ void Worker::privateUpdate() {
GUI() << (ISMAS() << (CONSOLE() << UPDATE_STEP::STARTED));
QScopedPointer<UpdateProcessRunning> upr(new UpdateProcessRunning(this));
QStringList lst;
////////////////////////////////////////////////////////////////////////////
//
@@ -270,28 +272,50 @@ void Worker::privateUpdate() {
m_ismasTriggerActive = false;
m_updateNotNecessary = false;
if (QDir(m_customerRepository).exists()) { // ignore a possibly corrupted repository
m_ismasTriggerActive = updateTriggerSet();
if (m_ismasTriggerActive == false) {
if (QDir(m_customerRepository).exists()) { // ignore a possibly corrupted repository
m_versionInfo = m_gc.gitShowReason(m_branchName);
QDateTime const &current = QDateTime::currentDateTime();
if (current.time().hour() < 4) { // update has been triggered within [00:00:00, 00:03:59]
m_automaticUpdate = (current.time().hour() < 4);
m_versionInfo = m_gc.gitShowReason(m_branchName);
qCritical() << "***";
qCritical() << "privateUpdate ............. m_versionInfo:" << m_versionInfo;
qCritical() << "privateUpdate ......... m_automaticUpdate:" << m_automaticUpdate;
if (m_automaticUpdate) { // update has been triggered within [00:00:00, 00:03:59]
m_updateNotNecessary = true;
m_ismasTriggerStatusMessage = QStringList(QString("NO UPDATE NECESSARY (%1)").arg(current.toString(Qt::ISODate)));
qCritical() << "privateUpdate m_ismasTriggerStatusMessage:" << QStringList(QString("NO UPDATE NECESSARY (%1)").arg(current.toString(Qt::ISODate)));
qCritical() << "***";
// the customer-repository does exist, but the ISMAS-trigger is
// *NOT* "WAIT", but from 00:00:00 - 00:03:59 this counts as an
// automatic update
m_lastFailedUpdateStep = UPDATE_STEP::NONE;
return;
}
qCritical() << "***";
// the customer-repository does exist, but the ISMAS-trigger is
// *NOT* "WAIT", so STOP the update procedure
return;
}
// in case the customer-repository does not exist, so PROCEED with the
// the customer-repository does exist, and the ISMAS-trigger is "WAIT",
// so continue the update procedure
} else {
// the customer-repository does not exist, so PROCEED with the
// update procedure, even if ISMAS-trigger is not correctly set ("WAIT")
}
QDir customerRepository(m_customerRepository);
QDir customerRepositoryEtc(QDir::cleanPath(m_customerRepository + QDir::separator() + "etc/"));
emit this->disableExit();
CONSOLE() << UPDATE_STEP::CHECK_SANITY;
QDir customerRepository(m_customerRepository);
CONSOLE() << (ISMAS() << UPDATE_STEP::CHECK_SANITY);
m_clone = false;
m_repairClone = false;
@@ -314,22 +338,22 @@ void Worker::privateUpdate() {
if (isRepositoryCorrupted()) { // a not-existing repository is not meant
// to be corrupted
CONSOLE() << (m_lastFailedUpdateStep = UPDATE_STEP::CHECK_SANITY_FAILURE);
CONSOLE() << (ISMAS() << UPDATE_STEP::CHECK_SANITY_FAILURE);
if ((continueUpdate = repairCorruptedRepository()) == true) {
m_repairClone = true;
CONSOLE() << UPDATE_STEP::REPOSITORY_RECOVERED_SUCCESS;
CONSOLE() << (ISMAS() << UPDATE_STEP::REPOSITORY_RECOVERED_SUCCESS);
} else {
ISMAS() << (GUI() << (CONSOLE() << (m_lastFailedUpdateStep = UPDATE_STEP::REPOSITORY_RECOVERED_FAILURE)));
ISMAS() << (GUI() << (CONSOLE() << UPDATE_STEP::REPOSITORY_RECOVERED_FAILURE));
return;
}
}
CONSOLE() << UPDATE_STEP::CHECK_SANITY_SUCCESS;
CONSOLE() << (ISMAS() << UPDATE_STEP::CHECK_SANITY_SUCCESS);
if (continueUpdate) {
if ((continueUpdate = customerRepository.exists()) == false) {
m_initialClone = (m_repairClone == false);
GUI() << (CONSOLE() << UPDATE_STEP::CLONE_REPOSITORY);
ISMAS() << (GUI() << (CONSOLE() << UPDATE_STEP::CLONE_REPOSITORY));
for (int i = 0; i < 5; ++i) { // try to checkout git repository
setProgress(i); // and switch to branch
if (m_gc.gitCloneAndCheckoutBranch()) {
@@ -374,7 +398,6 @@ void Worker::privateUpdate() {
CONSOLE() << UPDATE_STEP::CHECK_REPOSITORY_SUCCESS;
setProgress(_CHECKOUT_REPOSITORY_SUCCESS);
if (m_clone == false) {
if (m_ismasTriggerActive == false) {
return;
@@ -409,7 +432,8 @@ void Worker::privateUpdate() {
if ((continueUpdate = customerEnvironment()) == false) {
return;
}
CONSOLE() << UPDATE_STEP::CHECKOUT_BRANCH_SUCCESS;
lst = QStringList(QString(smap[UPDATE_STEP::CHECKOUT_BRANCH_SUCCESS]));
ISMAS(lst) << (CONSOLE(lst) << UPDATE_STEP::CHECKOUT_BRANCH);
setProgress(_CHECKOUT_BRANCH_SUCCESS);
@@ -421,7 +445,8 @@ void Worker::privateUpdate() {
if ((continueUpdate = filesToUpdate()) == false) {
return;
}
ISMAS() << (GUI() << (CONSOLE() << UPDATE_STEP::UPDATE_REPOSITORY_SUCCESS));
lst = QStringList(QString(smap[UPDATE_STEP::UPDATE_REPOSITORY_SUCCESS]));
ISMAS() << (GUI() << (CONSOLE() << UPDATE_STEP::UPDATE_REPOSITORY));
setProgress(_UPDATE_REPOSITORY_SUCCESS);
@@ -433,7 +458,8 @@ void Worker::privateUpdate() {
if ((continueUpdate = execOpkgCommands()) == false) {
return;
}
GUI() << (CONSOLE() << UPDATE_STEP::EXEC_OPKG_COMMAND_SUCCESS);
lst = QStringList(QString(smap[UPDATE_STEP::EXEC_OPKG_COMMAND_SUCCESS]));
GUI(lst) << (CONSOLE(lst) << UPDATE_STEP::EXEC_OPKG_COMMANDS);
setProgress(_EXEC_OPKG_COMMAND_SUCCESS);
@@ -445,7 +471,8 @@ void Worker::privateUpdate() {
if ((continueUpdate = downloadFilesToPSAHardware()) == false) {
return;
}
GUI() << (CONSOLE() << UPDATE_STEP::DOWNLOAD_FILES_TO_PSA_HARDWARE_SUCCESS);
lst = QStringList(QString(smap[UPDATE_STEP::DOWNLOAD_FILES_TO_PSA_HARDWARE_SUCCESS]));
ISMAS(lst) << (GUI(lst) << (CONSOLE(lst) << UPDATE_STEP::DOWNLOAD_FILES_TO_PSA_HARDWARE));
setProgress(_DOWNLOAD_FILES_TO_PSA_HARDWARE_SUCCESS);
@@ -457,10 +484,10 @@ void Worker::privateUpdate() {
if ((continueUpdate = syncCustomerRepositoryAndFS()) == false) {
return;
}
ISMAS() << (GUI() << (CONSOLE() << UPDATE_STEP::SYNC_CUSTOMER_REPOSITORY_SUCCESS));
lst = QStringList(QString(smap[UPDATE_STEP::SYNC_CUSTOMER_REPOSITORY_SUCCESS]));
ISMAS(lst) << (GUI(lst) << (CONSOLE(lst) << UPDATE_STEP::SYNC_CUSTOMER_REPOSITORY_SUCCESS));
setProgress(_SYNC_CUSTOMER_REPOSITORY_SUCCESS);
////////////////////////////////////////////////////////////////////////////
//
// FUTURE: SAVE LOG FILES
@@ -473,6 +500,7 @@ void Worker::privateUpdate() {
setProgress(_SAVE_LOGS_SUCCESS);
// final messages: see destructor of UpdateProcessRunning subclass
m_lastFailedUpdateStep = UPDATE_STEP::NONE;
}
bool Worker::updateTriggerSet() {
@@ -530,13 +558,13 @@ bool Worker::updateTriggerSet() {
.arg(parseError.errorString())
.arg(parseError.offset));
QStringList lst = m_ismasTriggerStatusMessage;
GUI(lst) << (CONSOLE(lst) << (m_lastFailedUpdateStep = UPDATE_STEP::CHECK_ISMAS_TRIGGER_FAILURE));
ISMAS(lst) << (GUI(lst) << (CONSOLE(lst) << (m_lastFailedUpdateStep = UPDATE_STEP::CHECK_ISMAS_TRIGGER_FAILURE)));
return false;
}
if (!document.isObject()) {
m_ismasTriggerStatusMessage = QStringList(QString("not a json-object %1").arg(result.value()));
QStringList lst = m_ismasTriggerStatusMessage;
GUI(lst) << (CONSOLE(lst) << (m_lastFailedUpdateStep = UPDATE_STEP::CHECK_ISMAS_TRIGGER_FAILURE));
ISMAS(lst) << (GUI(lst) << (CONSOLE(lst) << (m_lastFailedUpdateStep = UPDATE_STEP::CHECK_ISMAS_TRIGGER_FAILURE)));
return false;
}
@@ -564,31 +592,31 @@ bool Worker::updateTriggerSet() {
m_ismasTriggerStatusMessage = QStringList(QString("CUSTOMER-NR (%1) != LOCAL CUSTOMER-NR (%2)")
.arg(customerNr).arg(m_customerNr));
QStringList lst = m_ismasTriggerStatusMessage;
GUI(lst) << (CONSOLE(lst) << (m_lastFailedUpdateStep = UPDATE_STEP::CHECK_ISMAS_TRIGGER_FAILURE));
ISMAS(lst) << (GUI(lst) << (CONSOLE(lst) << (m_lastFailedUpdateStep = UPDATE_STEP::CHECK_ISMAS_TRIGGER_FAILURE)));
return false;
}
if (machineNr != m_machineNr) {
m_ismasTriggerStatusMessage = QStringList(QString("MACHINE-NR (%1) != LOCAL MACHINE-NR (%2)")
.arg(machineNr).arg(m_machineNr));
QStringList lst = m_ismasTriggerStatusMessage;
GUI(lst) << (CONSOLE(lst) << (m_lastFailedUpdateStep = UPDATE_STEP::CHECK_ISMAS_TRIGGER_FAILURE));
ISMAS(lst) << (GUI(lst) << (CONSOLE(lst) << (m_lastFailedUpdateStep = UPDATE_STEP::CHECK_ISMAS_TRIGGER_FAILURE)));
return false;
}
} else {
QStringList lst(QString("Dev_ID DOES NOT CONTAIN Custom_ID AND/OR Device_ID (LINE=%1)").arg(__LINE__));
GUI(lst) << (CONSOLE(lst) << (m_lastFailedUpdateStep = UPDATE_STEP::CHECK_ISMAS_TRIGGER_FAILURE));
ISMAS(lst) << (GUI(lst) << (CONSOLE(lst) << (m_lastFailedUpdateStep = UPDATE_STEP::CHECK_ISMAS_TRIGGER_FAILURE)));
return false;
}
} else {
m_ismasTriggerStatusMessage = QStringList(QString("Dev_ID KEY NOT A JSON-OBJECT (LINE=%1)").arg(__LINE__));
QStringList lst = m_ismasTriggerStatusMessage;
GUI(lst) << (CONSOLE(lst) << (m_lastFailedUpdateStep = UPDATE_STEP::CHECK_ISMAS_TRIGGER_FAILURE));
ISMAS(lst) << (GUI(lst) << (CONSOLE(lst) << (m_lastFailedUpdateStep = UPDATE_STEP::CHECK_ISMAS_TRIGGER_FAILURE)));
return false;
}
} else {
m_ismasTriggerStatusMessage = QStringList(QString("Dev_ID KEY NOT AVAILABLE (LINE=%1)").arg(__LINE__));
QStringList lst = m_ismasTriggerStatusMessage;
GUI(lst) << (CONSOLE(lst) << (m_lastFailedUpdateStep = UPDATE_STEP::CHECK_ISMAS_TRIGGER_FAILURE));
ISMAS(lst) << (GUI(lst) << (CONSOLE(lst) << (m_lastFailedUpdateStep = UPDATE_STEP::CHECK_ISMAS_TRIGGER_FAILURE)));
return false;
}
@@ -606,49 +634,49 @@ bool Worker::updateTriggerSet() {
m_ismasTriggerStatusMessage = QStringList(QString("%1 EMPTY UPDATE TRIGGER (%2)").arg(repeat).arg(repeats-repeat));
QStringList lst = m_ismasTriggerStatusMessage;
if (m_clone) {
GUI(lst) << (CONSOLE(lst) << (m_lastFailedUpdateStep = UPDATE_STEP::CHECK_ISMAS_TRIGGER_WRONG_VALUE));
ISMAS(lst) << (GUI(lst) << (CONSOLE(lst) << (m_lastFailedUpdateStep = UPDATE_STEP::CHECK_ISMAS_TRIGGER_WRONG_VALUE)));
// if the customer repository has just been cloned
return false; // it is OK the ISMAS trigger might not be 'WAIT'
} else {
GUI(lst) << (CONSOLE(lst) << (m_lastFailedUpdateStep = UPDATE_STEP::CHECK_ISMAS_TRIGGER_FAILURE));
CONSOLE(lst) << (m_lastFailedUpdateStep = UPDATE_STEP::CHECK_ISMAS_TRIGGER_FAILURE);
}
QThread::sleep(6);
continue;
} else {
// if the download-button once has a wrong value, it will never recover
if (m_clone) {
m_ismasTriggerStatusMessage = QStringList(QString("TRIGGER-VALUE=<%1> NOT 'WAIT'").arg(triggerValue));
m_ismasTriggerStatusMessage = QStringList(QString("TRIGGER-VALUE='%1' != 'WAIT'").arg(triggerValue));
QStringList lst = m_ismasTriggerStatusMessage;
GUI(lst) << (CONSOLE(lst) << (m_lastFailedUpdateStep = UPDATE_STEP::CHECK_ISMAS_TRIGGER_WRONG_VALUE));
ISMAS(lst) << (GUI(lst) << (CONSOLE(lst) << (m_lastFailedUpdateStep = UPDATE_STEP::CHECK_ISMAS_TRIGGER_WRONG_VALUE)));
} else {
m_ismasTriggerStatusMessage = QStringList(QString("TRIGGER-VALUE=<%1> NOT 'WAIT'").arg(triggerValue));
m_ismasTriggerStatusMessage = QStringList(QString("TRIGGER-VALUE='%1' != 'WAIT'").arg(triggerValue));
QStringList lst = m_ismasTriggerStatusMessage;
GUI(lst) << (CONSOLE(lst) << (m_lastFailedUpdateStep = UPDATE_STEP::CHECK_ISMAS_TRIGGER_FAILURE));
ISMAS(lst) << (GUI(lst) << (CONSOLE(lst) << (m_lastFailedUpdateStep = UPDATE_STEP::CHECK_ISMAS_TRIGGER_FAILURE)));
}
return false;
}
} else {
m_ismasTriggerStatusMessage = QStringList(QString("TRG key not available (LINE=%1)").arg(__LINE__));
QStringList lst = m_ismasTriggerStatusMessage;
GUI(lst) << (CONSOLE(lst) << (m_lastFailedUpdateStep = UPDATE_STEP::CHECK_ISMAS_TRIGGER_FAILURE));
ISMAS(lst) << (GUI(lst) << (CONSOLE(lst) << (m_lastFailedUpdateStep = UPDATE_STEP::CHECK_ISMAS_TRIGGER_FAILURE)));
return false;
}
} else {
m_ismasTriggerStatusMessage = QStringList(QString("Fileupload not a json-object (LINE=%1)").arg(__LINE__));
QStringList lst = m_ismasTriggerStatusMessage;
GUI(lst) << (CONSOLE(lst) << (m_lastFailedUpdateStep = UPDATE_STEP::CHECK_ISMAS_TRIGGER_FAILURE));
ISMAS(lst) << (GUI(lst) << (CONSOLE(lst) << (m_lastFailedUpdateStep = UPDATE_STEP::CHECK_ISMAS_TRIGGER_FAILURE)));
return false;
}
} else {
m_ismasTriggerStatusMessage = QStringList(QString("Fileupload not available (LINE=%1)").arg(__LINE__));
QStringList lst = m_ismasTriggerStatusMessage;
GUI(lst) << (CONSOLE(lst) << (m_lastFailedUpdateStep = UPDATE_STEP::CHECK_ISMAS_TRIGGER_FAILURE));
ISMAS(lst) << (GUI(lst) << (CONSOLE(lst) << (m_lastFailedUpdateStep = UPDATE_STEP::CHECK_ISMAS_TRIGGER_FAILURE)));
return false;
}
} else {
m_ismasTriggerStatusMessage = QStringList(QString("no ISMAS response (LINE=%1)").arg(__LINE__));
QStringList lst = m_ismasTriggerStatusMessage;
GUI(lst) << (CONSOLE(lst) << (m_lastFailedUpdateStep = UPDATE_STEP::CHECK_ISMAS_TRIGGER_FAILURE));
CONSOLE(lst) << (m_lastFailedUpdateStep = UPDATE_STEP::CHECK_ISMAS_TRIGGER_FAILURE);
QThread::sleep(6);
continue;
}
@@ -658,7 +686,7 @@ bool Worker::updateTriggerSet() {
if (!triggerValue.contains("WAIT", Qt::CaseInsensitive)) {
m_ismasTriggerStatusMessage = QStringList(QString("ISMAS_UPDATE-TRIGGER-NOT-SET-OR-WRONG: VALUE=(") + triggerValue + ")");
QStringList lst = m_ismasTriggerStatusMessage;
GUI(lst) << (CONSOLE(lst) << (m_lastFailedUpdateStep = UPDATE_STEP::CHECK_ISMAS_TRIGGER_FAILURE));
ISMAS(lst) << (GUI(lst) << (CONSOLE(lst) << (m_lastFailedUpdateStep = UPDATE_STEP::CHECK_ISMAS_TRIGGER_FAILURE)));
return false;
}
}
@@ -864,8 +892,9 @@ bool Worker::downloadFilesToPSAHardware() {
setProgress(_DOWNLOAD_FILES_TO_PSA_HARDWARE);
if (m_noUpdatePsaHardware == false) {
if (computeFilesToDownload()) {
CONSOLE(m_filesToDownload) << UPDATE_STEP::FILES_TO_DOWNLOAD;
if (computeFilesToDownload() > 0) {
QStringList lst = m_filesToDownload;
ISMAS(lst) << (CONSOLE(lst) << UPDATE_STEP::FILES_TO_DOWNLOAD);
Update update(this,
QDir::cleanPath(m_workingDirectory + QDir::separator() + m_customerNrStr),
@@ -884,10 +913,11 @@ bool Worker::downloadFilesToPSAHardware() {
return true;
}
return false;
} else {
CONSOLE(QStringList("NO FILES TO DOWNLOAD TO PSA-HW")) << (m_lastFailedUpdateStep = UPDATE_STEP::DOWNLOAD_FILES_TO_PSA_HARDWARE_FAILURE);
setProgress(_DOWNLOAD_FILES_TO_PSA_HARDWARE_FAILURE);
return false;
}
}
@@ -967,7 +997,7 @@ bool Worker::syncCustomerRepositoryAndFS() {
QDir dir1(QDir::cleanPath(m_customerRepository + QDir::separator() + "etc/psa_tariff"));
QDir dir2("/etc/psa_tariff");
if (Utils::sameFilesInDirs(dir1, dir2)) {
ISMAS() << (GUI() << (CONSOLE() << UPDATE_STEP::SYNC_CUSTOMER_REPOSITORY_SUCCESS));
CONSOLE() << UPDATE_STEP::SYNC_CUSTOMER_REPOSITORY_SUCCESS;
setProgress(_SYNC_CUSTOMER_REPOSITORY_SUCCESS);
return true;
}

160
worker.h
View File

@@ -93,6 +93,7 @@
#define _SAVE_LOGS_FAILURE (93)
#define _SAVE_LOGS_SUCCESS (94)
#define _SEND_LAST_VERSION (95)
#define _UPDATE_FINALIZE (95)
#define _UPDATE_SUCCEEDED (96)
#define _UPDATE_FAILED (97)
#define _UPDATE_ACTIVATED (98)
@@ -160,6 +161,7 @@ class Worker : public QThread{
bool m_repairClone = false;
bool m_ismasTriggerActive = false;
bool m_updateNotNecessary = false;
bool m_automaticUpdate = false;
QStringList m_ismasTriggerStatusMessage;
MainWindow *m_mainWindow;
@@ -207,30 +209,45 @@ class Worker : public QThread{
if (m_worker->m_lastFailedUpdateStep == UPDATE_STEP::NONE) {
if (m_worker->m_updateNotNecessary) {
// m_ismasTriggerStatusMessage = QStringList(QString("NO UPDATE NECESSARY (%1)").arg(current.toString(Qt::ISODate)));
QStringList lst = m_worker->m_ismasTriggerStatusMessage;
m_worker->GUI(lst) << (m_worker->CONSOLE(lst) << (m_worker->ISMAS(lst) << UPDATE_STEP::UPDATE_NOT_NECESSARY));
} else {
m_worker->ISMAS() << (m_worker->GUI() << (m_worker->CONSOLE() << UPDATE_STEP::UPDATE_SUCCEEDED));
QStringList lst(QString(m_worker->smap[UPDATE_STEP::UPDATE_SUCCEEDED]));
m_worker->ISMAS(lst) << (m_worker->GUI(lst) << (m_worker->CONSOLE(lst) << UPDATE_STEP::UPDATE_SUCCEEDED));
m_worker->setProgress(_UPDATE_SUCCEEDED);
m_worker->ISMAS() << (m_worker->GUI() << (m_worker->CONSOLE() << UPDATE_STEP::UPDATE_ACTIVATED));
lst = QStringList(QString(m_worker->smap[UPDATE_STEP::UPDATE_ACTIVATED]));
m_worker->ISMAS(lst) << (m_worker->GUI(lst) << (m_worker->CONSOLE(lst) << UPDATE_STEP::UPDATE_ACTIVATED));
m_worker->setProgress(_UPDATE_ACTIVATED);
m_worker->ISMAS() << (m_worker->GUI() << (m_worker->CONSOLE() << UPDATE_STEP::FINISHED));
lst = QStringList(QString(m_worker->smap[UPDATE_STEP::FINISHED]));
m_worker->CONSOLE(lst) << UPDATE_STEP::FINISHED;
m_worker->setProgress(_FINISHED);
}
} else {
QStringList lst = m_worker->m_ismasTriggerStatusMessage;
UPDATE_STEP last = m_worker->m_lastFailedUpdateStep;
if (m_worker->smap.contains(last)) {
lst << QString(" (last failed: %1)").arg(m_worker->smap[last]);
lst << QString(" (last failed step: %1)").arg(m_worker->smap[last]);
} else {
lst << QString(" (last failed step unknown: %1)").arg((int)(last));
}
m_worker->GUI(lst) << (m_worker->CONSOLE(lst) << (m_worker->ISMAS(lst) << UPDATE_STEP::UPDATE_FAILED));
}
m_worker->ISMAS() << (m_worker->GUI() << (m_worker->CONSOLE()
if (m_worker->m_automaticUpdate) {
QStringList lst(QString(m_worker->smap[UPDATE_STEP::SEND_LAST_VERSION]));
lst << "AUTOMATIC UPDATE";
if (m_worker->m_updateNotNecessary) {
lst << "UPDATE NOT NECESSARY";
}
m_worker->ISMAS(lst) << (m_worker->GUI(lst) << (m_worker->CONSOLE(lst)
<< UPDATE_STEP::SEND_LAST_VERSION));
} else {
QStringList lst(QString(m_worker->smap[UPDATE_STEP::SEND_LAST_VERSION]));
m_worker->ISMAS(lst) << (m_worker->GUI(lst) << (m_worker->CONSOLE(lst)
<< UPDATE_STEP::SEND_LAST_VERSION));
}
m_worker->stopProgressLoop();
m_worker->m_updateProcessRunning = false;
@@ -304,6 +321,7 @@ public:
SAVE_LOGS_SUCCESS = _SAVE_LOGS_SUCCESS,
SAVE_LOGS_FAILURE = _SAVE_LOGS_FAILURE,
SEND_LAST_VERSION = _SEND_LAST_VERSION,
UPDATE_FINALIZE = _UPDATE_FINALIZE,
UPDATE_SUCCEEDED = _UPDATE_SUCCEEDED,
UPDATE_ACTIVATED = _UPDATE_ACTIVATED,
UPDATE_NOT_NECESSARY = _UPDATE_NOT_NECESSARY,
@@ -696,21 +714,73 @@ private:
case UPDATE_STEP::CHECK_REPOSITORY:
ismasClient.setProgressInPercent(_CHECK_REPOSITORY);
break;
case UPDATE_STEP::CHECK_REPOSITORY_SUCCESS:
case UPDATE_STEP::CHECK_REPOSITORY_SUCCESS: {
ismasClient.setProgressInPercent(_CHECK_REPOSITORY_SUCCESS);
break;
case UPDATE_STEP::CHECK_REPOSITORY_FAILURE:
QString const &ismasUpdateNews =
QString("#M=APISM#C=CMD_EVENT#J=") +
ismasClient.updateNewsToIsmas(
"U0010",
_CHECKOUT_REPOSITORY_SUCCESS,
IsmasClient::RESULT_CODE::SUCCESS,
smap[UPDATE_STEP::CHECK_REPOSITORY],
QString("REPOSITORY %1 AND BRANCH %2 OK")
.arg(instance->m_customerRepository)
.arg(instance->m_gc.branchName()).toStdString().c_str(),
instance->m_versionInfo.size() >= 1 ? instance->m_versionInfo.at(0).toUtf8().constData() : "N/A");
ismasClient.sendRequestReceiveResponse(
IsmasClient::APISM::DB_PORT, ismasUpdateNews);
} break;
case UPDATE_STEP::CHECK_REPOSITORY_FAILURE: {
ismasClient.setProgressInPercent(_CHECK_REPOSITORY_FAILURE);
break;
case UPDATE_STEP::CHECK_SANITY:
QString const &ismasUpdateNews =
QString("#M=APISM#C=CMD_EVENT#J=") +
ismasClient.updateNewsToIsmas(
"U0010",
_CHECKOUT_REPOSITORY_FAILURE,
IsmasClient::RESULT_CODE::INSTALL_ERROR,
smap[UPDATE_STEP::CHECKOUT_REPOSITORY],
QString("REPOSITORY %1 and BRANCH %2 ***NOT OK***")
.arg(instance->m_customerRepository)
.arg(instance->m_gc.branchName()).toStdString().c_str(),
instance->m_versionInfo.size() >= 1 ? instance->m_versionInfo.at(0).toUtf8().constData() : "N/A");
ismasClient.sendRequestReceiveResponse(
IsmasClient::APISM::DB_PORT, ismasUpdateNews);
} break;
case UPDATE_STEP::CHECK_SANITY: {
ismasClient.setProgressInPercent(_CHECK_SANITY);
break;
case UPDATE_STEP::CHECK_SANITY_SUCCESS:
} break;
case UPDATE_STEP::CHECK_SANITY_SUCCESS: {
ismasClient.setProgressInPercent(_CHECK_SANITY_SUCCESS);
break;
case UPDATE_STEP::CHECK_SANITY_FAILURE:
QString const &ismasUpdateNews =
QString("#M=APISM#C=CMD_EVENT#J=") +
ismasClient.updateNewsToIsmas(
"U0010",
_CHECK_SANITY_SUCCESS,
IsmasClient::RESULT_CODE::SUCCESS,
smap[UPDATE_STEP::CHECK_SANITY],
QString("SANITY OF %1 (BRANCH %2) OK")
.arg(instance->m_customerRepository)
.arg(instance->m_gc.branchName()).toStdString().c_str(),
instance->m_versionInfo.size() >= 1 ? instance->m_versionInfo.at(0).toUtf8().constData() : "N/A");
ismasClient.sendRequestReceiveResponse(
IsmasClient::APISM::DB_PORT, ismasUpdateNews);
} break;
case UPDATE_STEP::CHECK_SANITY_FAILURE: {
ismasClient.setProgressInPercent(_CHECK_SANITY_FAILURE);
break;
QString const &ismasUpdateNews =
QString("#M=APISM#C=CMD_EVENT#J=") +
ismasClient.updateNewsToIsmas(
"U0010",
_CHECK_SANITY_FAILURE,
IsmasClient::RESULT_CODE::INSTALL_ERROR,
smap[UPDATE_STEP::CHECK_SANITY],
QString("SANITY OF %1 and BRANCH %2 ***NOT*** OK")
.arg(instance->m_customerRepository)
.arg(instance->m_gc.branchName()).toStdString().c_str(),
instance->m_versionInfo.size() >= 1 ? instance->m_versionInfo.at(0).toUtf8().constData() : "N/A");
ismasClient.sendRequestReceiveResponse(
IsmasClient::APISM::DB_PORT, ismasUpdateNews);
} break;
case UPDATE_STEP::REPOSITORY_RECOVERED_SUCCESS:
ismasClient.setProgressInPercent(_REPOSITORY_RECOVERED_SUCCESS);
break;
@@ -728,7 +798,7 @@ private:
"U0010",
_CLONE_REPOSITORY_SUCCESS,
IsmasClient::RESULT_CODE::SUCCESS,
smap[step],
smap[UPDATE_STEP::CLONE_REPOSITORY],
QString("CLONED REPOSITORY %1 AND CHECKED OUT BRANCH %2")
.arg(instance->m_customerRepository)
.arg(instance->m_gc.branchName()).toStdString().c_str(),
@@ -744,7 +814,7 @@ private:
"U0003",
_CLONE_REPOSITORY_FAILURE,
IsmasClient::RESULT_CODE::INSTALL_ERROR,
smap[step],
smap[UPDATE_STEP::CHECKOUT_REPOSITORY],
QString("CLONING REPOSITORY %1 OR CHECKING OUT BRANCH %2 FAILED")
.arg(instance->m_customerRepository)
.arg(instance->m_gc.branchName()).toStdString().c_str(),
@@ -789,7 +859,7 @@ private:
"U0003",
_CHECK_ISMAS_TRIGGER_FAILURE,
IsmasClient::RESULT_CODE::INSTALL_ERROR,
smap[step],
smap[UPDATE_STEP::CHECK_ISMAS_TRIGGER],
instance->m_ismasMsg.join(' ').toStdString().c_str(),
instance->m_versionInfo.size() >= 1 ? instance->m_versionInfo.at(0).toUtf8().constData() : "N/A");
ismasClient.sendRequestReceiveResponse(
@@ -801,9 +871,20 @@ private:
case UPDATE_STEP::INITIAL_CLONE_WITH_ACTIVE_ISMAS_TRIGGER:
ismasClient.setProgressInPercent(_INITIAL_CLONE_WITH_ACTIVE_ISMAS_TRIGGER);
break;
case UPDATE_STEP::CHECKOUT_BRANCH:
case UPDATE_STEP::CHECKOUT_BRANCH: {
ismasClient.setProgressInPercent(_CHECKOUT_BRANCH);
break;
QString const &ismasUpdateNews =
QString("#M=APISM#C=CMD_EVENT#J=") +
ismasClient.updateNewsToIsmas(
"U0010",
_CHECKOUT_BRANCH_SUCCESS,
IsmasClient::RESULT_CODE::SUCCESS,
smap[UPDATE_STEP::CHECKOUT_BRANCH],
instance->m_ismasMsg.join(' ').toStdString().c_str(),
instance->m_versionInfo.size() >= 1 ? instance->m_versionInfo.at(0).toUtf8().constData() : "N/A");
ismasClient.sendRequestReceiveResponse(
IsmasClient::APISM::DB_PORT, ismasUpdateNews);
} break;
case UPDATE_STEP::CHECKOUT_BRANCH_SUCCESS: {
ismasClient.setProgressInPercent(_CHECKOUT_BRANCH_SUCCESS);
QString const &ismasUpdateNews =
@@ -812,7 +893,7 @@ private:
"U0010",
_CHECKOUT_BRANCH_SUCCESS,
IsmasClient::RESULT_CODE::SUCCESS,
smap[step],
smap[UPDATE_STEP::CHECKOUT_BRANCH],
instance->m_ismasMsg.join(' ').toStdString().c_str(),
instance->m_versionInfo.size() >= 1 ? instance->m_versionInfo.at(0).toUtf8().constData() : "N/A");
ismasClient.sendRequestReceiveResponse(
@@ -826,7 +907,7 @@ private:
"U0003",
_CHECKOUT_BRANCH_FAILURE,
IsmasClient::RESULT_CODE::INSTALL_ERROR,
smap[step],
smap[UPDATE_STEP::CHECKOUT_BRANCH],
instance->m_ismasMsg.join(' ').toStdString().c_str(),
instance->m_versionInfo.size() >= 1 ? instance->m_versionInfo.at(0).toUtf8().constData() : "N/A");
ismasClient.sendRequestReceiveResponse(
@@ -968,6 +1049,17 @@ private:
} break;
case UPDATE_STEP::EXEC_OPKG_COMMAND_SUCCESS: {
ismasClient.setProgressInPercent(_EXEC_OPKG_COMMAND_SUCCESS);
QString const &ismasUpdateNews =
QString("#M=APISM#C=CMD_EVENT#J=") +
ismasClient.updateNewsToIsmas(
_ISMAS_CONTINUE,
ismasClient.getProgressInPercent(),
IsmasClient::RESULT_CODE::SUCCESS,
smap[UPDATE_STEP::EXEC_OPKG_COMMANDS],
instance->m_ismasMsg.join(' ').toStdString().c_str(),
instance->m_versionInfo.size() >= 1 ? instance->m_versionInfo.at(0).toUtf8().constData() : "N/A");
ismasClient.sendRequestReceiveResponse(
IsmasClient::APISM::DB_PORT, ismasUpdateNews);
} break;
case UPDATE_STEP::EXEC_OPKG_COMMAND_FAILURE: {
ismasClient.setProgressInPercent(_EXEC_OPKG_COMMAND_FAILURE);
@@ -1003,7 +1095,7 @@ private:
_ISMAS_CONTINUE,
ismasClient.getProgressInPercent(),
IsmasClient::RESULT_CODE::SUCCESS,
smap[step],
smap[UPDATE_STEP::DOWNLOAD_DEVICE_CONTROLLER],
instance->m_ismasMsg.join(' ').toStdString().c_str(),
instance->m_versionInfo.size() >= 1 ? instance->m_versionInfo.at(0).toUtf8().constData() : "N/A");
ismasClient.sendRequestReceiveResponse(
@@ -1020,7 +1112,7 @@ private:
_ISMAS_CONTINUE,
ismasClient.getProgressInPercent(),
IsmasClient::RESULT_CODE::SUCCESS,
smap[step],
smap[UPDATE_STEP::DOWNLOAD_FILES_TO_PSA_HARDWARE],
instance->m_ismasMsg.join(' ').toStdString().c_str(),
instance->m_versionInfo.size() >= 1 ? instance->m_versionInfo.at(0).toUtf8().constData() : "N/A");
ismasClient.sendRequestReceiveResponse(
@@ -1040,7 +1132,7 @@ private:
_ISMAS_CONTINUE,
ismasClient.getProgressInPercent(),
IsmasClient::RESULT_CODE::SUCCESS,
smap[step],
smap[UPDATE_STEP::SYNC_CUSTOMER_REPOSITORY],
instance->m_ismasMsg.join(' ').toStdString().c_str(),
instance->m_versionInfo.size() >= 1 ? instance->m_versionInfo.at(0).toUtf8().constData() : "N/A");
ismasClient.sendRequestReceiveResponse(
@@ -1080,10 +1172,10 @@ private:
QString const &ismasUpdateNews =
QString("#M=APISM#C=CMD_EVENT#J=") +
ismasClient.updateNewsToIsmas(
"U0001", // WAIT-button set to 100%
_ISMAS_DONE, // WAIT-button set to 100%
ismasClient.getProgressInPercent(),
IsmasClient::RESULT_CODE::SUCCESS,
smap[step],
smap[UPDATE_STEP::UPDATE_FINALIZE],
instance->m_ismasMsg.join(' ').toStdString().c_str(),
instance->m_versionInfo.size() >= 1 ? instance->m_versionInfo.at(0).toUtf8().constData() : "N/A");
ismasClient.sendRequestReceiveResponse(
@@ -1094,10 +1186,10 @@ private:
QString const &ismasUpdateNews =
QString("#M=APISM#C=CMD_EVENT#J=") +
ismasClient.updateNewsToIsmas(
"U0002", // reset WAIT-button to "" (empty string)
_ISMAS_SET_WAIT_OK,
ismasClient.getProgressInPercent(),
IsmasClient::RESULT_CODE::SUCCESS,
smap[step],
smap[UPDATE_STEP::UPDATE_FINALIZE],
instance->m_ismasMsg.join(' ').toStdString().c_str(),
instance->m_versionInfo.size() >= 1 ? instance->m_versionInfo.at(0).toUtf8().constData() : "N/A");
ismasClient.sendRequestReceiveResponse(
@@ -1108,10 +1200,10 @@ private:
QString const &ismasUpdateNews =
QString("#M=APISM#C=CMD_EVENT#J=") +
ismasClient.updateNewsToIsmas(
"U0002", // reset WAIT-button to "" (empty string)
_ISMAS_SET_WAIT_OK,
ismasClient.getProgressInPercent(),
IsmasClient::RESULT_CODE::SUCCESS,
smap[step],
smap[UPDATE_STEP::UPDATE_FINALIZE],
instance->m_ismasMsg.join(' ').toStdString().c_str(),
instance->m_versionInfo.size() >= 1 ? instance->m_versionInfo.at(0).toUtf8().constData() : "N/A");
ismasClient.sendRequestReceiveResponse(
@@ -1122,10 +1214,10 @@ private:
QString const &ismasUpdateNews =
QString("#M=APISM#C=CMD_EVENT#J=") +
ismasClient.updateNewsToIsmas(
"U0003",
_ISMAS_FAILURE,
ismasClient.getProgressInPercent(),
IsmasClient::RESULT_CODE::INSTALL_ERROR,
smap[step],
smap[UPDATE_STEP::UPDATE_FINALIZE],
instance->m_ismasMsg.join(' ').toStdString().c_str(),
instance->m_versionInfo.size() >= 1 ? instance->m_versionInfo.at(0).toUtf8().constData() : "N/A");
ismasClient.sendRequestReceiveResponse(