Class: GoodData::LCM2::CollectUsersBrickUsers
- Inherits:
-
BaseAction
- Object
- BaseAction
- GoodData::LCM2::CollectUsersBrickUsers
- Defined in:
- lib/gooddata/lcm/actions/collect_users_brick_users.rb
Constant Summary collapse
- DESCRIPTION =
'Enriches parameters with users from the Users Brick input.'
- PARAMS =
define_params(self) do description 'Input source of the Users Brick. Needed to prevent ' \ 'deletion of filters for a user that is to be removed.' param :users_brick_config, instance_of(Type::UsersBrickConfig), required: true description 'Column That Contains Target Project IDs' param :multiple_projects_column, instance_of(Type::StringType), required: true description 'Input Source' param :input_source, instance_of(Type::HashType), required: false description 'Synchronization Mode (e.g. sync_one_project_based_on_pid)' param :sync_mode, instance_of(Type::StringType), required: false, default: 'sync_project' end
- MULTIPLE_COLUMN_MODES =
%w( sync_domain_client_workspaces sync_multiple_projects_based_on_custom_id sync_multiple_projects_based_on_pid )
Constants inherited from BaseAction
BaseAction::FAILED_CLIENTS, BaseAction::FAILED_PROJECTS, BaseAction::FAILED_SEGMENTS, BaseAction::SYNC_FAILED_LIST
Constants included from Dsl::Dsl
Dsl::Dsl::DEFAULT_OPTS, Dsl::Dsl::TYPES
Class Method Summary collapse
Methods inherited from BaseAction
add_failed_client, add_failed_project, add_failed_segment, add_new_clients_to_project_client_mapping, check_params, collect_synced_status, continue_on_error, print_result, process_failed_project, process_failed_projects, sync_failed_client, sync_failed_project, sync_failed_segment, without_check
Methods included from Dsl::Dsl
#define_params, #define_type, #process
Class Method Details
.call(params) ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/gooddata/lcm/actions/collect_users_brick_users.rb', line 36 def call(params) users_brick_users = [] login_column = params.users_brick_config.login_column&.downcase || 'login' users_brick_data_source = GoodData::Helpers::DataSource.new(params.users_brick_config.input_source) users_brick_data_source_file = without_check(PARAMS, params) do File.open( users_brick_data_source.realize(params), 'r:UTF-8' ) end CSV.foreach(users_brick_data_source_file, :headers => true, :return_headers => false, :header_converters => :downcase, :encoding => 'utf-8') do |row| pid = row[params.multiple_projects_column&.downcase] fail "The set multiple_projects_column '#{params.multiple_projects_column}' of the users input is empty" if !pid && MULTIPLE_COLUMN_MODES.include?(params.sync_mode) users_brick_users << { login: row[login_column].nil? ? nil : row[login_column].strip.downcase, pid: pid } end { # TODO; TMA-989 return the real results when print of results is fixed for large sets results: [{ status: 'ok' }], params: { users_brick_users: users_brick_users } } end |