chue_t CUpdaterComponentTray::update_internal() { QString str_tray_path = tray_path(); if (str_tray_path.isEmpty()) return CHUE_FAILED; QString str_tray_download_path = download_tray_path(); std::vector<CGorjunFileInfo> fi = CRestWorker::Instance()->get_gorjun_file_info( tray_kurjun_file_name()); if (fi.empty()) { qCritical("File %s isn't presented on kurjun", m_component_id.toStdString().c_str()); return CHUE_NOT_ON_KURJUN; } std::vector<CGorjunFileInfo>::iterator item = fi.begin(); CExecutableUpdater *eu = new CExecutableUpdater(str_tray_download_path, str_tray_path); if (item->md5_sum() == CCommons::FileMd5(str_tray_download_path)) { qInfo("Already have new version of tray in %s", str_tray_download_path.toStdString().c_str()); this->update_progress_sl(100, 100); connect(eu, &CExecutableUpdater::finished, this, &CUpdaterComponentTray::update_finished_sl); connect(eu, &CExecutableUpdater::finished, eu, &CExecutableUpdater::deleteLater); eu->replace_executables(true); return CHUE_SUCCESS; } CDownloadFileManager *dm = new CDownloadFileManager(item->name(), str_tray_download_path, item->size()); dm->set_link(ipfs_download_url().arg(item->id(), item->name())); connect(dm, &CDownloadFileManager::download_progress_sig, this, &CUpdaterComponentTray::update_progress_sl); connect(dm, &CDownloadFileManager::finished, eu, &CExecutableUpdater::replace_executables); connect(eu, &CExecutableUpdater::finished, this, &CUpdaterComponentTray::update_finished_sl); connect(eu, &CExecutableUpdater::finished, dm, &CDownloadFileManager::deleteLater); connect(eu, &CExecutableUpdater::finished, eu, &CExecutableUpdater::deleteLater); dm->start_download(); return CHUE_SUCCESS; }
void TrayControlWindow::updater_timer_timeout() { m_ss_updater_timer.stop(); int exit_code = 0; /*subutai update*/ CSystemCallWrapper::run_ss_updater(CSettingsManager::Instance().rh_host().toStdString().c_str(), CSettingsManager::Instance().rh_port().toStdString().c_str(), CSettingsManager::Instance().rh_user().toStdString().c_str(), CSettingsManager::Instance().rh_pass().toStdString().c_str(), exit_code); if (exit_code == RLE_SUCCESS) { CNotifiactionObserver::NotifyAboutInfo("Update command succesfull finished"); CApplicationLog::Instance()->LogInfo("Update command succesfull finished"); } else { QString err_msg = QString("Update command failed with exit code : %1").arg(exit_code); CNotifiactionObserver::NotifyAboutError(err_msg); CApplicationLog::Instance()->LogError(err_msg.toStdString().c_str()); } /*tray update*/ auto fi = CRestWorker::Instance()->get_gorjun_file_info(UPDATE_FILE_TO_REPLACE); if (!fi.empty()) { auto item = fi.begin(); QString new_file_path = QApplication::applicationDirPath() + QDir::separator() + QString(UPDATE_FILE_TO_REPLACE); CDownloadFileManager *dm = new CDownloadFileManager(item->id(), new_file_path, item->size()); CExecutableUpdater *eu = new CExecutableUpdater(new_file_path, QApplication::applicationFilePath()); dm->start_download(); connect(dm, SIGNAL(finished()), eu, SLOT(replace_executables())); connect(eu, SIGNAL(finished()), dm, SLOT(deleteLater())); connect(eu, SIGNAL(finished()), eu, SLOT(deleteLater())); } m_ss_updater_timer.start(); }
chue_t CUpdaterComponentVAGRANT::install_internal() { QString version = "undefined"; qDebug() << "Starting install vagrant"; QMessageBox *msg_box = new QMessageBox( QMessageBox::Information, QObject::tr("Attention!"), QObject::tr( "<a href='https://www.vagrantup.com/intro/index.html'>Vagrant</a>" " is used to build and manage virtual machine environments.<br>" "Vagrant will be installed on your machine.<br>" "Do you want to proceed?"), QMessageBox::Yes | QMessageBox::No); msg_box->setTextFormat(Qt::RichText); QObject::connect(msg_box, &QMessageBox::finished, msg_box, &QMessageBox::deleteLater); if (msg_box->exec() != QMessageBox::Yes) { install_finished_sl(false, version); return CHUE_SUCCESS; } QString file_name = vagrant_kurjun_package_name(); QString file_dir = download_vagrant_path(); QString str_vagrant_downloaded_path = file_dir + "/" + file_name; std::vector<CGorjunFileInfo> fi = CRestWorker::Instance()->get_gorjun_file_info(file_name); if (fi.empty()) { qCritical("File %s isn't presented on kurjun", m_component_id.toStdString().c_str()); install_finished_sl(false, version); return CHUE_NOT_ON_KURJUN; } std::vector<CGorjunFileInfo>::iterator item = fi.begin(); CDownloadFileManager *dm = new CDownloadFileManager( item->name(), str_vagrant_downloaded_path, item->size()); dm->set_link(ipfs_download_url().arg(item->id(), item->name())); SilentInstaller *silent_installer = new SilentInstaller(this); silent_installer->init(file_dir, file_name, CC_VAGRANT); connect(dm, &CDownloadFileManager::download_progress_sig, [this](qint64 rec, qint64 total) { update_progress_sl(rec, total); }); connect(dm, &CDownloadFileManager::finished, [this, silent_installer](bool success) { if (!success) { silent_installer->outputReceived(success, "undefined"); } else { this->update_progress_sl(0,0); CNotificationObserver::Instance()->Info( tr("Running installation scripts."), DlgNotification::N_NO_ACTION); silent_installer->startWork(); } }); connect(silent_installer, &SilentInstaller::outputReceived, this, &CUpdaterComponentVAGRANT::install_finished_sl); connect(silent_installer, &SilentInstaller::outputReceived, dm, &CDownloadFileManager::deleteLater); dm->start_download(); return CHUE_SUCCESS; }