Loading modules/cloud_service_providers/vmware/src/Controller/ApiController.php +44 −2 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ namespace Drupal\vmware\Controller; use Drupal\cloud\Traits\CloudContentEntityTrait; use Drupal\cloud\Traits\CloudResourceTrait; use Drupal\Core\Controller\ControllerBase; use Drupal\Core\Database\Connection; use Drupal\Core\Entity\EntityTypeManagerInterface; Loading @@ -10,10 +11,12 @@ use Drupal\cloud\Service\CloudServiceInterface; use Drupal\Core\Link; use Drupal\Core\Messenger\Messenger; use Drupal\Core\Render\RendererInterface; use Drupal\Core\Session\AccountInterface; use Drupal\Core\Url; use Drupal\vmware\Service\VmwareServiceException; use Drupal\vmware\Service\VmwareServiceInterface; use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\RequestStack; Loading @@ -26,6 +29,7 @@ use Symfony\Component\HttpFoundation\RequestStack; class ApiController extends ControllerBase implements ApiControllerInterface { use CloudContentEntityTrait; use CloudResourceTrait; /** * Drupal\Core\Entity\EntityTypeManagerInterface definition. Loading Loading @@ -76,6 +80,20 @@ class ApiController extends ControllerBase implements ApiControllerInterface { */ protected $cloudService; /** * The configuration data. * * @var array */ protected $configuration; /** * The current user. * * @var \Drupal\Core\Session\AccountInterface */ protected $currentUser; /** * ApiController constructor. * Loading @@ -93,6 +111,8 @@ class ApiController extends ControllerBase implements ApiControllerInterface { * The database service. * @param \Drupal\cloud\Service\CloudServiceInterface $cloud_service * Cloud service. * @param \Drupal\Core\Session\AccountInterface $current_user * The current user. */ public function __construct( EntityTypeManagerInterface $entity_type_manager, Loading @@ -101,7 +121,8 @@ class ApiController extends ControllerBase implements ApiControllerInterface { RequestStack $request_stack, RendererInterface $renderer, Connection $database, CloudServiceInterface $cloud_service CloudServiceInterface $cloud_service, AccountInterface $current_user ) { $this->entityTypeManager = $entity_type_manager; $this->vmwareService = $vmware_service; Loading @@ -110,6 +131,8 @@ class ApiController extends ControllerBase implements ApiControllerInterface { $this->renderer = $renderer; $this->database = $database; $this->cloudService = $cloud_service; $this->currentUser = $current_user; $this->configuration = ['cloud_context' => '']; } /** Loading @@ -129,7 +152,8 @@ class ApiController extends ControllerBase implements ApiControllerInterface { $container->get('request_stack'), $container->get('renderer'), $container->get('database'), $container->get('cloud') $container->get('cloud'), $container->get('current_user') ); } Loading Loading @@ -281,4 +305,22 @@ class ApiController extends ControllerBase implements ApiControllerInterface { } } /** * {@inheritdoc} */ public function getEntityCount(string $cloud_context, string $entity_type_id): JsonResponse { $params = !empty($cloud_context) ? ['cloud_context' => $cloud_context] : []; if (!empty($cloud_context)) { $this->configuration['cloud_context'] = $cloud_context; } $count = $this->getResourceCount( $entity_type_id, "list {$this->convertUnderscoreToWhitespace($entity_type_id)}", $params ); return new JsonResponse(['count' => $count]); } } modules/cloud_service_providers/vmware/src/Controller/ApiControllerInterface.php +14 −0 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ namespace Drupal\vmware\Controller; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\RedirectResponse; /** Loading Loading @@ -47,4 +48,17 @@ interface ApiControllerInterface { */ public function updateAllHostList(): RedirectResponse; /** * Get count of VMware entity. * * @param string $cloud_context * Cloud context string. * @param string $entity_type_id * The entity type ID. * * @return \Symfony\Component\HttpFoundation\JsonResponse * The JSON response. */ public function getEntityCount(string $cloud_context, string $entity_type_id): JsonResponse; } modules/cloud_service_providers/vmware/vmware.routing.yml +21 −0 Original line number Diff line number Diff line Loading @@ -123,3 +123,24 @@ entity.vmware_host.list_update.all: _controller: '\Drupal\vmware\Controller\ApiController::updateAllHostList' requirements: _permission: 'view any vmware host+view own vmware host+view all cloud service providers' entity.vmware_entity.count: path: '/cloud_dashboard/vmware/{cloud_context}/{entity_type_id}/entity/count' defaults: _controller: '\Drupal\vmware\Controller\ApiController::getEntityCount' methods: [GET] requirements: _custom_access: '\Drupal\cloud\Controller\CloudConfigController::access' options: perm: 'list {entity_type_id}' entity.vmware_entity.count_all: path: '/cloud_dashboard/vmware/{entity_type_id}/entity/count' defaults: _controller: '\Drupal\vmware\Controller\ApiController::getEntityCount' cloud_context: '' methods: [GET] requirements: _custom_access: '\Drupal\cloud\Controller\CloudConfigController::access' options: perm: 'list {entity_type_id}' Loading
modules/cloud_service_providers/vmware/src/Controller/ApiController.php +44 −2 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ namespace Drupal\vmware\Controller; use Drupal\cloud\Traits\CloudContentEntityTrait; use Drupal\cloud\Traits\CloudResourceTrait; use Drupal\Core\Controller\ControllerBase; use Drupal\Core\Database\Connection; use Drupal\Core\Entity\EntityTypeManagerInterface; Loading @@ -10,10 +11,12 @@ use Drupal\cloud\Service\CloudServiceInterface; use Drupal\Core\Link; use Drupal\Core\Messenger\Messenger; use Drupal\Core\Render\RendererInterface; use Drupal\Core\Session\AccountInterface; use Drupal\Core\Url; use Drupal\vmware\Service\VmwareServiceException; use Drupal\vmware\Service\VmwareServiceInterface; use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\RequestStack; Loading @@ -26,6 +29,7 @@ use Symfony\Component\HttpFoundation\RequestStack; class ApiController extends ControllerBase implements ApiControllerInterface { use CloudContentEntityTrait; use CloudResourceTrait; /** * Drupal\Core\Entity\EntityTypeManagerInterface definition. Loading Loading @@ -76,6 +80,20 @@ class ApiController extends ControllerBase implements ApiControllerInterface { */ protected $cloudService; /** * The configuration data. * * @var array */ protected $configuration; /** * The current user. * * @var \Drupal\Core\Session\AccountInterface */ protected $currentUser; /** * ApiController constructor. * Loading @@ -93,6 +111,8 @@ class ApiController extends ControllerBase implements ApiControllerInterface { * The database service. * @param \Drupal\cloud\Service\CloudServiceInterface $cloud_service * Cloud service. * @param \Drupal\Core\Session\AccountInterface $current_user * The current user. */ public function __construct( EntityTypeManagerInterface $entity_type_manager, Loading @@ -101,7 +121,8 @@ class ApiController extends ControllerBase implements ApiControllerInterface { RequestStack $request_stack, RendererInterface $renderer, Connection $database, CloudServiceInterface $cloud_service CloudServiceInterface $cloud_service, AccountInterface $current_user ) { $this->entityTypeManager = $entity_type_manager; $this->vmwareService = $vmware_service; Loading @@ -110,6 +131,8 @@ class ApiController extends ControllerBase implements ApiControllerInterface { $this->renderer = $renderer; $this->database = $database; $this->cloudService = $cloud_service; $this->currentUser = $current_user; $this->configuration = ['cloud_context' => '']; } /** Loading @@ -129,7 +152,8 @@ class ApiController extends ControllerBase implements ApiControllerInterface { $container->get('request_stack'), $container->get('renderer'), $container->get('database'), $container->get('cloud') $container->get('cloud'), $container->get('current_user') ); } Loading Loading @@ -281,4 +305,22 @@ class ApiController extends ControllerBase implements ApiControllerInterface { } } /** * {@inheritdoc} */ public function getEntityCount(string $cloud_context, string $entity_type_id): JsonResponse { $params = !empty($cloud_context) ? ['cloud_context' => $cloud_context] : []; if (!empty($cloud_context)) { $this->configuration['cloud_context'] = $cloud_context; } $count = $this->getResourceCount( $entity_type_id, "list {$this->convertUnderscoreToWhitespace($entity_type_id)}", $params ); return new JsonResponse(['count' => $count]); } }
modules/cloud_service_providers/vmware/src/Controller/ApiControllerInterface.php +14 −0 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ namespace Drupal\vmware\Controller; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\RedirectResponse; /** Loading Loading @@ -47,4 +48,17 @@ interface ApiControllerInterface { */ public function updateAllHostList(): RedirectResponse; /** * Get count of VMware entity. * * @param string $cloud_context * Cloud context string. * @param string $entity_type_id * The entity type ID. * * @return \Symfony\Component\HttpFoundation\JsonResponse * The JSON response. */ public function getEntityCount(string $cloud_context, string $entity_type_id): JsonResponse; }
modules/cloud_service_providers/vmware/vmware.routing.yml +21 −0 Original line number Diff line number Diff line Loading @@ -123,3 +123,24 @@ entity.vmware_host.list_update.all: _controller: '\Drupal\vmware\Controller\ApiController::updateAllHostList' requirements: _permission: 'view any vmware host+view own vmware host+view all cloud service providers' entity.vmware_entity.count: path: '/cloud_dashboard/vmware/{cloud_context}/{entity_type_id}/entity/count' defaults: _controller: '\Drupal\vmware\Controller\ApiController::getEntityCount' methods: [GET] requirements: _custom_access: '\Drupal\cloud\Controller\CloudConfigController::access' options: perm: 'list {entity_type_id}' entity.vmware_entity.count_all: path: '/cloud_dashboard/vmware/{entity_type_id}/entity/count' defaults: _controller: '\Drupal\vmware\Controller\ApiController::getEntityCount' cloud_context: '' methods: [GET] requirements: _custom_access: '\Drupal\cloud\Controller\CloudConfigController::access' options: perm: 'list {entity_type_id}'