class MaestroOrchestrator in Maestro 3.x
Same name and namespace in other branches
- 8.2 src/Controller/MaestroOrchestrator.php \Drupal\maestro\Controller\MaestroOrchestrator
Maestro Orchestrator class.
Hierarchy
- class \Drupal\Core\Controller\ControllerBase implements ContainerInjectionInterface uses LoggerChannelTrait, MessengerTrait, RedirectDestinationTrait, StringTranslationTrait
- class \Drupal\maestro\Controller\MaestroOrchestrator
Expanded class hierarchy of MaestroOrchestrator
1 file declares its use of MaestroOrchestrator
- MaestroTaskConsoleController.php in modules/
maestro_taskconsole/ src/ Controller/ MaestroTaskConsoleController.php
File
- src/
Controller/ MaestroOrchestrator.php, line 14
Namespace
Drupal\maestro\ControllerView source
class MaestroOrchestrator extends ControllerBase {
/**
* Orchestrator method
* This method is called by the menu router for /orchestrator
* This runs the Maestro Engine.
*/
public function orchestrate($token = '', $skip_response = FALSE) {
if ($token == '') {
// bad! must have a value.
return new Response('Missing Orchestrator Token', 500);
}
$config = $this
->config('maestro.settings');
if ($config
->get('maestro_orchestrator_token') != $token) {
return new Response('Wrong Orchestrator Token', 500);
}
$engine = new MaestroEngine();
$lockDurationTime = $config
->get('maestro_orchestrator_lock_execution_time');
if (intval($lockDurationTime) <= 0) {
$lockDurationTime = 30;
}
$lock = \Drupal::lock();
if ($lock
->acquire('maestro_orchestrator', $lockDurationTime)) {
// TODO: Handle exceptions being thrown.
// leaving it like this will simply stall the orchestrator execution for the time being
// How to gracefully continue? One process failing will stall the entire engine.
// Check if dev mode option is enabled.
if ($config
->get('maestro_orchestrator_development_mode') == '1') {
// Does a cache reset before loading entities during orchestration.
$engine
->enableDevelopmentMode();
}
$engine
->cleanQueue();
$lock
->release('maestro_orchestrator');
}
if ($engine
->getDebug()) {
return [
'#markup' => 'debug orchestrator done',
];
}
else {
// See CronController::run as we do the same thing to return a 204 with no content to satisfy the return response.
if (!$skip_response) {
return new Response('', 204);
}
}
}
/**
* Method used to start a process.
*/
public function startProcess($templateMachineName = '', $redirect = 'taskconsole') {
$template = MaestroEngine::getTemplate($templateMachineName);
if ($template) {
$engine = new MaestroEngine();
$pid = $engine
->newProcess($templateMachineName);
if ($pid) {
\Drupal::messenger()
->addMessage(t('Process Started'));
$config = $this
->config('maestro.settings');
// Run the orchestrator for us once on process kickoff.
$this
->orchestrate($config
->get('maestro_orchestrator_token'), TRUE);
}
else {
\Drupal::messenger()
->addError(t('Error! Process unable to start!'));
}
}
else {
\Drupal::messenger()
->addError(t('Error! No template by that name exits!'));
}
if ($redirect == 'taskconsole') {
return new RedirectResponse(Url::fromRoute('maestro_taskconsole.taskconsole')
->toString());
}
elseif ($redirect == 'templates') {
return new RedirectResponse(Url::fromRoute('entity.maestro_template.list')
->toString());
}
else {
return new RedirectResponse(Url::fromUserInput('/' . $redirect)
->toString());
}
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
ControllerBase:: |
protected | property | The configuration factory. | |
ControllerBase:: |
protected | property | The current user service. | 1 |
ControllerBase:: |
protected | property | The entity form builder. | |
ControllerBase:: |
protected | property | The entity type manager. | |
ControllerBase:: |
protected | property | The form builder. | 2 |
ControllerBase:: |
protected | property | The key-value storage. | 1 |
ControllerBase:: |
protected | property | The language manager. | 1 |
ControllerBase:: |
protected | property | The module handler. | 2 |
ControllerBase:: |
protected | property | The state service. | |
ControllerBase:: |
protected | function | Returns the requested cache bin. | |
ControllerBase:: |
protected | function | Retrieves a configuration object. | |
ControllerBase:: |
private | function | Returns the service container. | |
ControllerBase:: |
public static | function |
Instantiates a new instance of this class. Overrides ContainerInjectionInterface:: |
46 |
ControllerBase:: |
protected | function | Returns the current user. | 1 |
ControllerBase:: |
protected | function | Retrieves the entity form builder. | |
ControllerBase:: |
protected | function | Retrieves the entity type manager. | |
ControllerBase:: |
protected | function | Returns the form builder service. | 2 |
ControllerBase:: |
protected | function | Returns a key/value storage collection. | 1 |
ControllerBase:: |
protected | function | Returns the language manager service. | 1 |
ControllerBase:: |
protected | function | Returns the module handler. | 2 |
ControllerBase:: |
protected | function | Returns a redirect response object for the specified route. | |
ControllerBase:: |
protected | function | Returns the state storage service. | |
LoggerChannelTrait:: |
protected | property | The logger channel factory service. | |
LoggerChannelTrait:: |
protected | function | Gets the logger for a specific channel. | |
LoggerChannelTrait:: |
public | function | Injects the logger channel factory. | |
MaestroOrchestrator:: |
public | function | Orchestrator method This method is called by the menu router for /orchestrator This runs the Maestro Engine. | |
MaestroOrchestrator:: |
public | function | Method used to start a process. | |
MessengerTrait:: |
protected | property | The messenger. | 27 |
MessengerTrait:: |
public | function | Gets the messenger. | 27 |
MessengerTrait:: |
public | function | Sets the messenger. | |
RedirectDestinationTrait:: |
protected | property | The redirect destination service. | 1 |
RedirectDestinationTrait:: |
protected | function | Prepares a 'destination' URL query parameter for use with \Drupal\Core\Url. | |
RedirectDestinationTrait:: |
protected | function | Returns the redirect destination service. | |
RedirectDestinationTrait:: |
public | function | Sets the redirect destination service. | |
StringTranslationTrait:: |
protected | property | The string translation service. | 4 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. |