Class: GoodData::DataSource::RedshiftConnectionInfo

Inherits:
ConnectionInfo show all
Defined in:
lib/gooddata/models/data_source.rb

Instance Attribute Summary

Attributes inherited from Rest::Object

#client, #json, #project

Instance Method Summary collapse

Methods inherited from ConnectionInfo

#connection_info, #connection_info=

Methods included from Mixin::ObjId

#obj_id

Methods inherited from Rest::Object

client, default_client, #saved?

Methods included from Mixin::DataPropertyReader

#data_property_reader

Methods included from Mixin::DataPropertyWriter

#data_property_writer

Methods included from Mixin::MetaPropertyReader

#metadata_property_reader

Methods included from Mixin::MetaPropertyWriter

#metadata_property_writer

Methods included from Mixin::MetaGetter

#meta

Methods included from Mixin::DataGetter

#data

Methods included from Mixin::RootKeyGetter

#root_key

Methods included from Mixin::ContentGetter

#content

Constructor Details

#initialize(connection_info_json) ⇒ RedshiftConnectionInfo

Returns a new instance of RedshiftConnectionInfo.



363
364
365
# File 'lib/gooddata/models/data_source.rb', line 363

def initialize(connection_info_json)
  @json = connection_info_json[GoodData::DataSource::REDSHIFT]
end

Instance Method Details

#access_key_idObject



399
400
401
# File 'lib/gooddata/models/data_source.rb', line 399

def access_key_id
  @json['authentication']['iam']['accessKeyId'] if iam_authentication
end

#access_key_id=(new_access_key_id) ⇒ Object



403
404
405
# File 'lib/gooddata/models/data_source.rb', line 403

def access_key_id=(new_access_key_id)
  @json['authentication']['iam']['accessKeyId'] = new_access_key_id
end

#basic_authenticationObject



415
416
417
# File 'lib/gooddata/models/data_source.rb', line 415

def basic_authentication
  @json && @json['authentication'] && @json['authentication']['basic']
end

#databaseObject



423
424
425
# File 'lib/gooddata/models/data_source.rb', line 423

def database
  @json['database']
end

#database=(new_database) ⇒ Object



427
428
429
# File 'lib/gooddata/models/data_source.rb', line 427

def database=(new_database)
  @json['database'] = new_database
end

#db_userObject



391
392
393
# File 'lib/gooddata/models/data_source.rb', line 391

def db_user
  @json['authentication']['iam']['dbUser'] if iam_authentication
end

#db_user=(new_db_user) ⇒ Object



395
396
397
# File 'lib/gooddata/models/data_source.rb', line 395

def db_user=(new_db_user)
  @json['authentication']['iam']['dbUser'] = new_db_user
end

#iam_authenticationObject



419
420
421
# File 'lib/gooddata/models/data_source.rb', line 419

def iam_authentication
  @json && @json['authentication'] && @json['authentication']['iam']
end

#passwordObject



383
384
385
# File 'lib/gooddata/models/data_source.rb', line 383

def password
  @json['authentication']['basic']['password'] if basic_authentication
end

#password=(new_password) ⇒ Object



387
388
389
# File 'lib/gooddata/models/data_source.rb', line 387

def password=(new_password)
  @json['authentication']['basic']['password'] = new_password
end

#schemaObject



431
432
433
# File 'lib/gooddata/models/data_source.rb', line 431

def schema
  @json['schema']
end

#schema=(new_schema) ⇒ Object



435
436
437
# File 'lib/gooddata/models/data_source.rb', line 435

def schema=(new_schema)
  @json['schema'] = new_schema
end

#secret_access_keyObject



407
408
409
# File 'lib/gooddata/models/data_source.rb', line 407

def secret_access_key
  @json['authentication']['iam']['secretAccessKey'] if iam_authentication
end

#secret_access_key=(new_secret_access_key) ⇒ Object



411
412
413
# File 'lib/gooddata/models/data_source.rb', line 411

def secret_access_key=(new_secret_access_key)
  @json['authentication']['iam']['secretAccessKey'] = new_secret_access_key
end

#to_update_payloadObject



439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
# File 'lib/gooddata/models/data_source.rb', line 439

def to_update_payload
  if basic_authentication
    {
      'redshift' => {
        'url' => url,
        'authentication' => {
          'basic' => {
            'userName' => user_name,
            'password' => password
          }
        },
        'database' => database,
        'schema' => schema
      }
    }
  else
    {
      'redshift' => {
        'url' => url,
        'authentication' => {
          'iam' => {
            'dbUser' => db_user,
            'accessKeyId' => access_key_id,
            'secretAccessKey' => secret_access_key
          }
        },
        'database' => database,
        'schema' => schema
      }
    }
  end
end

#urlObject



367
368
369
# File 'lib/gooddata/models/data_source.rb', line 367

def url
  @json['url']
end

#url=(new_url) ⇒ Object



371
372
373
# File 'lib/gooddata/models/data_source.rb', line 371

def url=(new_url)
  @json['url'] = new_url
end

#user_nameObject



375
376
377
# File 'lib/gooddata/models/data_source.rb', line 375

def user_name
  @json['authentication']['basic']['userName'] if basic_authentication
end

#user_name=(new_user_name) ⇒ Object



379
380
381
# File 'lib/gooddata/models/data_source.rb', line 379

def user_name=(new_user_name)
  @json['authentication']['basic']['userName'] = new_user_name
end

#validateObject



472
473
474
475
476
477
478
479
480
481
482
483
# File 'lib/gooddata/models/data_source.rb', line 472

def validate
  fail 'Data source url has to be provided' if url.nil? || url.blank?
  fail 'Data source database has to be provided' if database.nil? || database.blank?
  fail ERROR_MESSAGE_NO_SCHEMA if schema.nil? || schema.blank?

  if basic_authentication
    fail 'Data source username has to be provided' if user_name.nil? || user_name.blank?
  elsif iam_authentication
    fail 'Data source db_user has to be provided' if db_user.nil? || db_user.blank?
    fail 'Data source access key has to be provided' if access_key_id.nil? || access_key_id.blank?
  end
end