Example #1
0
void CloudDialog::on_okButton(bool checked)
{
  AWSSettings awsSettings;
  std::string accessKey = m_amazonProviderWidget->m_accessKeyLineEdit->text().toStdString();
  std::string secretKey = m_amazonProviderWidget->m_secretKeyLineEdit->text().toStdString();
  if (accessKey.empty() || secretKey.empty()) {
    QString error("The Access Key and Secret Key cannot be empty");
    QMessageBox::critical(this, "Authentication Failed", error);
    return;
  }
  bool validAccessKey = awsSettings.validAccessKey(accessKey);
  if(!validAccessKey){
    QString error("You have entered an invalid Access Key");
    QMessageBox::critical(this, "Authentication Failed", error);
    return;
  }
  bool validSecretKey = awsSettings.validSecretKey(secretKey);
  if(!validSecretKey){
    QString error("You have entered an invalid Secret Key");
    QMessageBox::critical(this, "Authentication Failed", error);
    return;
  }

  // Save data
  boost::optional<CloudProviderWidget *> cloudProviderWidget = this->getCurrentCloudProviderWidget();
  if(cloudProviderWidget.is_initialized()){
    cloudProviderWidget.get()->saveData();
  }
  done(QDialog::Accepted);
  cloudResourceChanged(m_cloudResourceComboBox->currentText());
}
Example #2
0
void CloudDialog::on_backButton(bool checked)
{
  if(m_pageStackedWidget->currentIndex() == m_settingsPageIdx){
    m_pageStackedWidget->setCurrentIndex(m_loginPageIdx);
    this->backButton()->setText("Continue");
  } else if(m_pageStackedWidget->currentIndex() == m_loginPageIdx) {
      if( m_cloudResourceComboBox->currentText() == AMAZON_PROVIDER){
      AWSSettings awsSettings;
      std::string accessKey = m_amazonProviderWidget->m_accessKeyLineEdit->text().toStdString();
      std::string secretKey = m_amazonProviderWidget->m_secretKeyLineEdit->text().toStdString();
      if (accessKey.empty() || secretKey.empty()) {
        QString error("The Access Key and Secret Key cannot be empty");
        QMessageBox::critical(this, "Authentication Failed", error);
        return;
      }
      bool validAccessKey = awsSettings.validAccessKey(accessKey);
      if(!validAccessKey){
        QString error("You have entered an invalid Access Key");
        QMessageBox::critical(this, "Authentication Failed", error);
        return;
      }
      bool validSecretKey = awsSettings.validSecretKey(secretKey);
      if(!validSecretKey){
        QString error("You have entered an invalid Secret Key");
        QMessageBox::critical(this, "Authentication Failed", error);
        return;
      }
      m_pageStackedWidget->setCurrentIndex(m_settingsPageIdx);
      this->backButton()->setText("Back");
    }
  }
}
Example #3
0
void AmazonProviderWidget::saveData()
{
  AWSSettings awsSettings;

  bool validAccessKey = awsSettings.setAccessKey(m_accessKeyLineEdit->text().toStdString());
  OS_ASSERT(validAccessKey);

  bool validSecretKey = awsSettings.setSecretKey(m_secretKeyLineEdit->text().toStdString());
  OS_ASSERT(validSecretKey);

  awsSettings.signUserAgreement(m_cloudDialog->m_iAcceptCheckBox->isChecked()); 

  awsSettings.setRegion(m_regionComboBox->currentText().toStdString());

  awsSettings.setServerInstanceType(m_serverInstanceTypeComboBox->currentText().toStdString());

  awsSettings.setWorkerInstanceType(m_workerInstanceTypeComboBox->currentText().toStdString());

  QString temp;

  unsigned numWorkers = m_numberOfWorkerInstancesLineEdit->text().toUInt();
  awsSettings.setNumWorkers(numWorkers);
 
  //awsSettings.setTerminationDelayEnabled(m_waitCheckBox->isChecked());

  //unsigned wait = m_waitLineEdit->text().toUInt();
  //awsSettings.setTerminationDelay(wait);

  awsSettings.saveToSettings(true);
}
Example #4
0
void CloudDialog::on_okButton(bool checked)
{
  if( m_cloudResourceComboBox->currentText() == AMAZON_PROVIDER){
    AWSSettings awsSettings;
    std::string accessKey = m_amazonProviderWidget->m_accessKeyLineEdit->text().toStdString();
    std::string secretKey = m_amazonProviderWidget->m_secretKeyLineEdit->text().toStdString();
    if (accessKey.empty() || secretKey.empty()) {
      QString error("The Access Key and Secret Key cannot be empty");
      QMessageBox::critical(this, "Authentication Failed", error);
      return;
    }
    bool validAccessKey = awsSettings.validAccessKey(accessKey);
    if(!validAccessKey){
      QString error("You have entered an invalid Access Key");
      QMessageBox::critical(this, "Authentication Failed", error);
      return;
    }
    bool validSecretKey = awsSettings.validSecretKey(secretKey);
    if(!validSecretKey){
      QString error("You have entered an invalid Secret Key");
      QMessageBox::critical(this, "Authentication Failed", error);
      return;
    }
  }else if( m_cloudResourceComboBox->currentText() == VAGRANT_PROVIDER){
    VagrantSettings vagrantSettings;

    std::string serverUsername = m_vagrantProviderWidget->m_serverUsernameLineEdit->text().toStdString();
    std::string serverPassword = m_vagrantProviderWidget->m_serverPasswordLineEdit->text().toStdString();
    if (serverUsername.empty() || serverPassword.empty()) {
      QString error("The User Name and Password cannot be empty");
      QMessageBox::critical(this, "Authentication Failed", error);
      return;
    }

    std::string serverDir = m_vagrantProviderWidget->m_serverDirLineEdit->text().toStdString();
    std::string serverAddress = m_vagrantProviderWidget->m_serverAddressIpLineEdit->text().toStdString();
    std::string workerDir = m_vagrantProviderWidget->m_workerDirLineEdit->text().toStdString();
    std::string workerAddress = m_vagrantProviderWidget->m_workerAddressIpLineEdit->text().toStdString();
    if (serverDir.empty() || serverAddress.empty() || workerDir.empty() || workerAddress.empty()) {
      QString error("Server and Worker Directories and IP Addresses are required");
      QMessageBox::critical(this, "Authentication Failed", error);
      return;
    }
  }

  // Save data
  boost::optional<CloudProviderWidget *> cloudProviderWidget = this->getCurrentCloudProviderWidget();
  if(cloudProviderWidget.is_initialized()){
    cloudProviderWidget.get()->saveData();
  }
  done(QDialog::Accepted);
  cloudResourceChanged(m_cloudResourceComboBox->currentText());
}
Example #5
0
void AmazonProviderWidget::loadData()
{
  AWSSettings awsSettings;

  m_accessKeyLineEdit->setText(awsSettings.accessKey().c_str());

  m_secretKeyLineEdit->setText(awsSettings.secretKey().c_str());

  m_cloudDialog->m_iAcceptCheckBox->setChecked(awsSettings.userAgreementSigned()); 

  if (!m_regionComboBox->count()) {
    Q_FOREACH(const std::string & region, AWSProvider::availableRegions()){
      m_regionComboBox->addItem(region.c_str());
    }
Example #6
0
void AmazonProviderWidget::loadData()
{
  AWSSettings awsSettings;

  m_accessKeyLineEdit->setText(awsSettings.accessKey().c_str());

  m_secretKeyLineEdit->setText(awsSettings.secretKey().c_str());

  m_cloudDialog->m_iAcceptCheckBox->setChecked(awsSettings.userAgreementSigned()); 

  if (!m_regionComboBox->count()) {
    for (const std::string & region : AWSProvider::availableRegions()) {
      m_regionComboBox->addItem(region.c_str());
    }
  }

  int index = m_regionComboBox->findText(awsSettings.region().c_str());
  if(index == -1){
    index = m_regionComboBox->findText(AWSProvider::defaultRegion().c_str());
  }
  m_regionComboBox->setCurrentIndex(index);


  if (!m_serverInstanceTypeComboBox->count()) {
    for (const std::string & serverInstanceType : AWSProvider::serverInstanceTypes()) {
      m_serverInstanceTypeComboBox->addItem(serverInstanceType.c_str());
    }
  }

  index = m_serverInstanceTypeComboBox->findText(awsSettings.serverInstanceType().c_str());
  if(index == -1){
    index = m_serverInstanceTypeComboBox->findText(AWSProvider::defaultServerInstanceType().c_str());
  }
  m_serverInstanceTypeComboBox->setCurrentIndex(index);

  if (!m_workerInstanceTypeComboBox->count()) {
    for (const std::string & workerInstanceType : AWSProvider::workerInstanceTypes()) {
      m_workerInstanceTypeComboBox->addItem(workerInstanceType.c_str());
    }
  }

  index = m_workerInstanceTypeComboBox->findText(awsSettings.workerInstanceType().c_str());
  if(index == -1){
    index = m_workerInstanceTypeComboBox->findText(AWSProvider::defaultWorkerInstanceType().c_str());
  }
  m_workerInstanceTypeComboBox->setCurrentIndex(index);

  QString temp;
  m_numberOfWorkerInstancesLineEdit->setText(temp.setNum(awsSettings.numWorkers()));

  //m_waitCheckBox->setChecked(awsSettings.terminationDelayEnabled());

  //m_waitLineEdit->setText(temp.setNum(awsSettings.terminationDelay()));
}
 AWSSettingsRecord_Impl::AWSSettingsRecord_Impl(const AWSSettings& awsSettings,
                                                ProjectDatabase& database)
   : CloudSettingsRecord_Impl(awsSettings, CloudSettingsRecordType::AWSSettingsRecord, database),
     m_userAgreementSigned(awsSettings.userAgreementSigned()),
     m_numWorkers(awsSettings.numWorkers()),
     m_terminationDelayEnabled(awsSettings.terminationDelayEnabled()),
     m_terminationDelay(awsSettings.terminationDelay()),
     m_region(awsSettings.region()),
     m_serverInstanceType(awsSettings.serverInstanceType()),
     m_workerInstanceType(awsSettings.workerInstanceType())
 {
 }
Example #8
0
void CloudDialog::createWidgets()
{
  QLabel * label = nullptr;

  m_amazonProviderWidget = new AmazonProviderWidget(this);
  m_blankProviderWidget = new BlankProviderWidget(this);
  m_vagrantProviderWidget = new VagrantProviderWidget(this);

  // BLANK PAGE
  auto blankPageWidget = new QWidget();

  // LOGIN PAGE

  auto mainLoginLayout = new QHBoxLayout;
  mainLoginLayout->setContentsMargins(QMargins(0,0,0,0));
  mainLoginLayout->setSpacing(5);

  auto loginPageWidget = new QWidget;
  loginPageWidget->setLayout(mainLoginLayout);

  // LEFT LOGIN LAYOUT

  m_leftLoginLayout = new QVBoxLayout();
  mainLoginLayout->addLayout(m_leftLoginLayout);

  label = new QLabel;
  label->setObjectName("H2");
  label->setText("Cloud Resources");
  m_leftLoginLayout->addWidget(label,0,Qt::AlignTop | Qt::AlignLeft);

  m_cloudResourceComboBox = new QComboBox();
  m_leftLoginLayout->addWidget(m_cloudResourceComboBox,0,Qt::AlignTop | Qt::AlignLeft);
 
  //m_cloudResourceComboBox->addItem(NO_PROVIDER);
  if(showVagrant()) m_cloudResourceComboBox->addItem(VAGRANT_PROVIDER);
  m_cloudResourceComboBox->addItem(AMAZON_PROVIDER);

  connect(m_cloudResourceComboBox, static_cast<void (QComboBox::*)(const QString &)>(&QComboBox::currentIndexChanged), this, &CloudDialog::cloudResourceChanged);

  // LOGIN STACKED WIDGET

  m_loginStackedWidget = new  QStackedWidget();
  m_leftLoginLayout->addWidget(m_loginStackedWidget);

  m_loginStackedWidget->addWidget(m_blankProviderWidget->m_loginWidget);
  m_loginStackedWidget->addWidget(m_vagrantProviderWidget->m_loginWidget);
  m_loginStackedWidget->addWidget(m_amazonProviderWidget->m_loginWidget);

  m_loginStackedWidget->setCurrentIndex(m_blankProviderIdx);

  // RIGHT LOGIN LAYOUT
  
  m_rightLoginLayout = new QVBoxLayout();
  mainLoginLayout->addLayout(m_rightLoginLayout);

  m_legalAgreement = new QLabel;
  m_legalAgreement->hide();
  m_legalAgreement->setWordWrap(true);

  AWSSettings awsSettings;
  m_legalAgreement->setText(awsSettings.userAgreementText().c_str());

  auto scrollArea = new QScrollArea();
  scrollArea->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding);
  scrollArea->setFixedWidth(TEXT_WIDTH + 15);
  scrollArea->setMinimumHeight(TEXT_HEIGHT);
  scrollArea->setStyleSheet("background-color:transparent;");
  scrollArea->setWidget(m_legalAgreement);
  scrollArea->setWidgetResizable(true);
  scrollArea->setAlignment(Qt::AlignTop);
  scrollArea->setFrameShape(QFrame::NoFrame);
  m_rightLoginLayout->addWidget(scrollArea);

  m_iAcceptCheckBox = new QCheckBox("I Agree");
  m_iAcceptCheckBox->hide();
  m_rightLoginLayout->addWidget(m_iAcceptCheckBox,0,Qt::AlignTop | Qt::AlignLeft);

  m_rightLoginLayout->addSpacing(5);

  connect(m_iAcceptCheckBox, &QCheckBox::clicked, this, &CloudDialog::iAcceptClicked);

  m_rightLoginLayout->addSpacing(5);
    
  // SETTINGS PAGE

  m_mainSettingsLayout = new QVBoxLayout;
  m_mainSettingsLayout->setContentsMargins(QMargins(0,0,0,0));
  m_mainSettingsLayout->setSpacing(5);

  auto settingsPageWidget = new QWidget;
  settingsPageWidget->setLayout(m_mainSettingsLayout);

  // SETTINGS STACKED WIDGET

  m_settingsStackedWidget = new  QStackedWidget();
  m_mainSettingsLayout->addWidget(m_settingsStackedWidget);

  auto widget = new QWidget();

  auto hLayout = new QHBoxLayout;
  hLayout->setContentsMargins(QMargins(0,0,0,0));
  hLayout->setSpacing(5);
  widget->setLayout(hLayout);

  hLayout->addWidget(m_blankProviderWidget->m_leftSettingsWidget);
  hLayout->addWidget(m_blankProviderWidget->m_rightSettingsWidget);

  m_settingsStackedWidget->addWidget(widget);

  widget = new QWidget();

  hLayout = new QHBoxLayout;
  hLayout->setContentsMargins(QMargins(0,0,0,0));
  hLayout->setSpacing(5);
  widget->setLayout(hLayout);

  hLayout->addWidget(m_vagrantProviderWidget->m_leftSettingsWidget);
  hLayout->addWidget(m_vagrantProviderWidget->m_rightSettingsWidget);

  m_settingsStackedWidget->addWidget(widget);

  widget = new QWidget();

  hLayout = new QHBoxLayout;
  hLayout->setContentsMargins(QMargins(0,0,0,0));
  hLayout->setSpacing(5);
  widget->setLayout(hLayout);

  hLayout->addWidget(m_amazonProviderWidget->m_leftSettingsWidget);
  hLayout->addWidget(m_amazonProviderWidget->m_rightSettingsWidget);

  m_settingsStackedWidget->addWidget(widget);

  m_settingsStackedWidget->setCurrentIndex(m_blankProviderIdx);

  // PAGE STACKED WIDGET

  m_pageStackedWidget = new  QStackedWidget();
  upperLayout()->addWidget(m_pageStackedWidget);

  m_blankPageIdx = m_pageStackedWidget->addWidget(blankPageWidget);
  m_loginPageIdx = m_pageStackedWidget->addWidget(loginPageWidget);
  m_settingsPageIdx = m_pageStackedWidget->addWidget(settingsPageWidget);

  m_pageStackedWidget->setCurrentIndex(m_loginPageIdx);

  // BUTTONS
  this->okButton()->setText("Save");
  this->backButton()->setText("Continue");
  this->backButton()->setEnabled(false);
  this->backButton()->show();

  // OS SETTINGS

  #ifdef Q_OS_MAC
    setWindowFlags(Qt::FramelessWindowHint);
  #elif defined(Q_OS_WIN)
    setWindowFlags(Qt::WindowCloseButtonHint | Qt::MSWindowsFixedSizeDialogHint);
  #endif

  cloudResourceChanged(m_cloudResourceComboBox->currentText());
}