From c266b59def955f2cf7995703abbc8e1edc7def4a Mon Sep 17 00:00:00 2001 From: Richard Nixon Date: Mon, 16 Dec 2019 18:27:35 +0000 Subject: [PATCH] Offload user filtering to Azure API to avoid resource problems in a large AD - Modify Azure::Graph.users to pass a filter parameter to Azure REST API - Modify AzurermAdUsers to pass a filter parameter to Azure::Graph.users Signed-off-by: Richard Nixon --- libraries/azurerm_ad_users.rb | 11 ++++++++--- libraries/support/azure/graph.rb | 5 ++++- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/libraries/azurerm_ad_users.rb b/libraries/azurerm_ad_users.rb index cbefb96a0..51302fa2e 100644 --- a/libraries/azurerm_ad_users.rb +++ b/libraries/azurerm_ad_users.rb @@ -21,8 +21,9 @@ class AzurermAdUsers < AzurermPluralResource .register_column(:user_types, field: :userType) .install_filter_methods_on_resource(self, :table) - def initialize - resp = graph.users + def initialize(params = {}) + @params = params + resp = graph.users(@params) return if has_error?(resp) @table = resp @@ -35,6 +36,10 @@ def guest_accounts end def to_s - 'Azure Active Directory Users' + if @params[:filter] + "Azure Active Directory Users with filter( #{@params[:filter]} )" + else + 'Azure Active Directory Users' + end end end diff --git a/libraries/support/azure/graph.rb b/libraries/support/azure/graph.rb index ccdf7ffc6..0b01e2e48 100644 --- a/libraries/support/azure/graph.rb +++ b/libraries/support/azure/graph.rb @@ -21,12 +21,15 @@ def user(id) ) end - def users + def users(raw_params = {}) + cooked_params = {} + cooked_params['$filter'] = raw_params[:filter] unless raw_params[:filter].nil? get( url: "/#{tenant_id}/users", api_version: '1.6', error_handler: handle_error, unwrap: unwrap, + params: cooked_params, ) end