setAttrib('class', 'inline'); } public function setup() { $activities = $this->db->countActivitiesSinceLastDeployedConfig(); if ($this->deploymentId) { $label = $this->translate('Re-deploy now'); } elseif ($activities === 0) { $label = $this->translate('There are no pending changes. Deploy anyway'); } else { $label = sprintf( $this->translate('Deploy %d pending changes'), $activities ); } if ($this->deploymentId) { $deployIcon = 'reply-all'; } else { $deployIcon = 'forward'; } $this->addHtml( $this->getView()->icon( $deployIcon, $label, array('class' => 'link-color') ) . '' ); $el = $this->createElement('submit', 'btn_deploy', array( 'label' => $label, 'escape' => false, 'decorators' => array('ViewHelper'), 'class' => 'link-button ' . $deployIcon, )); $this->addHtml(''); $this->submitButtonName = $el->getName(); $this->setSubmitLabel($label); $this->addElement($el); } public function onSuccess() { if ($this->skipBecauseOfBug7530()) { return; } $db = $this->db; $msg = $this->translate('Config has been submitted, validation is going on'); $this->setSuccessMessage($msg); $isApiRequest = $this->getRequest()->isApiRequest(); if ($this->checksum) { $config = IcingaConfig::load(hex2bin($this->checksum), $db); } else { $config = IcingaConfig::generate($db); } $this->api->wipeInactiveStages($db); if ($this->api->dumpConfig($config, $db)) { if ($isApiRequest) { die('Api not ready'); // return $this->sendJson((object) array('checksum' => $checksum)); } else { $this->setSuccessUrl('director/config/deployments'); $this->setSuccessMessage( $this->translate('Config has been submitted, validation is going on') ); } parent::onSuccess(); } else { throw new IcingaException($this->translate('Config deployment failed')); } } public function setChecksum($checksum) { $this->checksum = $checksum; return $this; } public function setDeploymentId($id) { $this->deploymentId = $id; return $this; } public function setApi(DeploymentApiInterface $api) { $this->api = $api; return $this; } }