@Override
  public List<CloudResourceStatus> check(
      AuthenticatedContext authenticatedContext, List<CloudResource> resources) {
    List<CloudResourceStatus> result = new ArrayList<>();
    AzureRMClient access = armClient.createAccess(authenticatedContext.getCloudCredential());
    String stackName = armUtils.getStackName(authenticatedContext.getCloudContext());

    for (CloudResource resource : resources) {
      switch (resource.getType()) {
        case ARM_TEMPLATE:
          LOGGER.info("Checking Arm group stack status of: {}", stackName);
          try {
            Map<String, Object> resourceGroup = access.getTemplateDeployment(stackName, stackName);
            CloudResourceStatus templateResourceStatus =
                armUtils.templateStatus(resource, resourceGroup, access, stackName);
            result.add(templateResourceStatus);
          } catch (HttpResponseException e) {
            if (e.getStatusCode() == NOT_FOUND) {
              result.add(new CloudResourceStatus(resource, ResourceStatus.DELETED));
            } else {
              throw new CloudConnectorException(e.getResponse().getData().toString(), e);
            }
          } catch (Exception e) {
            throw new CloudConnectorException(
                String.format("Invalid resource exception: %s", e.getMessage()), e);
          }
          break;
        default:
          throw new CloudConnectorException(
              String.format("Invalid resource type: %s", resource.getType()));
      }
    }

    return result;
  }