cloud-8.x-2.0-beta1/modules/cloud_service_providers/aws_cloud/src/Controller/Vpc/ApiController.php
modules/cloud_service_providers/aws_cloud/src/Controller/Vpc/ApiController.php
<?php
namespace Drupal\aws_cloud\Controller\Vpc;
use Drupal\aws_cloud\Service\Ec2\Ec2ServiceInterface;
use Drupal\Core\Controller\ControllerBase;
use Drupal\Core\Messenger\Messenger;
use Drupal\Core\Render\RendererInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\HttpFoundation\RequestStack;
/**
* Controller responsible for "update" URLs.
*
* This class is mainly responsible for
* updating the aws entities from URLs.
*/
class ApiController extends ControllerBase implements ApiControllerInterface {
/**
* The Ec2Service.
*
* @var \Drupal\aws_cloud\Service\Ec2\Ec2ServiceInterface
*/
private $ec2Service;
/**
* The Messenger service.
*
* @var \Drupal\Core\Messenger\Messenger
*/
protected $messenger;
/**
* Request stack.
*
* @var \Symfony\Component\HttpFoundation\RequestStack
*/
private $requestStack;
/**
* Renderer service.
*
* @var \Drupal\Core\Render\RendererInterface
*/
private $renderer;
/**
* ApiController constructor.
*
* @param \Drupal\aws_cloud\Service\Ec2\Ec2ServiceInterface $ec2_service
* Object for interfacing with AWS API.
* @param \Drupal\Core\Messenger\Messenger $messenger
* Messenger Object.
* @param \Symfony\Component\HttpFoundation\RequestStack $request_stack
* Request stack object.
* @param \Drupal\Core\Render\RendererInterface $renderer
* The renderer service.
*/
public function __construct(
Ec2ServiceInterface $ec2_service,
Messenger $messenger,
RequestStack $request_stack,
RendererInterface $renderer
) {
$this->ec2Service = $ec2_service;
$this->messenger = $messenger;
$this->requestStack = $request_stack;
$this->renderer = $renderer;
}
/**
* Dependency Injection.
*/
public static function create(ContainerInterface $container) {
return new static(
$container->get('aws_cloud.ec2'),
$container->get('messenger'),
$container->get('request_stack'),
$container->get('renderer')
);
}
/**
* {@inheritdoc}
*/
public function updateVpcList($cloud_context) {
$this->ec2Service->setCloudContext($cloud_context);
$updated = $this->ec2Service->updateVpcs();
if ($updated !== FALSE) {
$this->messenger->addMessage($this->t('Updated VPCs.'));
}
else {
$this->messenger->addError($this->t('Unable to update VPCs.'));
}
return $this->redirect('view.aws_cloud_vpc.list', [
'cloud_context' => $cloud_context,
]);
}
/**
* {@inheritdoc}
*/
public function updateSubnetList($cloud_context) {
$this->ec2Service->setCloudContext($cloud_context);
$updated = $this->ec2Service->updateSubnets();
if ($updated !== FALSE) {
$this->messenger->addMessage($this->t('Updated Subnets.'));
}
else {
$this->messenger->addError($this->t('Unable to update Subnets.'));
}
return $this->redirect('view.aws_cloud_subnet.list', [
'cloud_context' => $cloud_context,
]);
}
}
