Class: GoodData::LCM2::EnsureTechnicalUsersProject

Inherits:
BaseAction show all
Defined in:
lib/gooddata/lcm/actions/ensure_technical_users_project.rb

Constant Summary collapse

DESCRIPTION =
'Ensure Technical Users in Project'
PARAMS =
define_params(self) do
  description 'Client Used for Connecting to GD'
  param :gdc_gd_client, instance_of(Type::GdClientType), required: true

  description 'Technical users'
  param :technical_user, array_of(instance_of(Type::StringType)),
        required: false, deprecated: true, replacement: :technical_users

  description 'Technical users'
  param :technical_users, array_of(instance_of(Type::StringType)), required: false

  description 'Synchronization Info'
  param :synchronize, array_of(instance_of(Type::SynchronizationInfoType)), required: true, generated: true

  description 'Clients'
  param :clients, array_of(instance_of(Type::HashType)), required: false
end
RESULT_HEADER =
[
  :project,
  :pid,
  :login,
  :role,
  :result,
  :message,
  :url
]

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



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/gooddata/lcm/actions/ensure_technical_users_project.rb', line 43

def call(params)
  client = params.gdc_gd_client

  technical_users = params.technical_users || params.technical_user || []
  new_users = technical_users.map do |technical_user|
    {
      login: technical_user,
      role: 'admin'
    }
  end

  results = params.synchronize.pmap do |synchronize_info|
    synchronize_info[:to].pmap do |entry|
      ensure_users(client, entry[:pid], new_users)
    end
  end.flatten

  results += params.clients.pmap { |input_client| input_client[:project] }.compact.pmap { |pid| ensure_users(client, pid, new_users) }.flatten if params.clients

  results
end