zuora_connect 3.1.0 → 3.1.1.pre.c
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/models/zuora_connect/app_instance_base.rb +159 -69
- data/config/initializers/redis.rb +9 -0
- data/db/migrate/20190520232224_add_environment_fields.rb +3 -0
- data/lib/tasks/zuora_connect_tasks.rake +9 -17
- data/lib/zuora_connect/configuration.rb +3 -1
- data/lib/zuora_connect/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ef73a28bd87609cedef16023f75320765d7b38b3e3417be5b5000be410596127
|
|
4
|
+
data.tar.gz: 62440f4e6e5ae219f40d9dc5b927b896cd26214cb9693191629929594c9f349a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: fe0dc6bf317c0ff0e76d069db2abd158175527cd5b971065b6c84d79412971c4fbab8ad5141bd4525497d41e38ca2b99c0760f662791a920955770692e278ef5
|
|
7
|
+
data.tar.gz: f15d374ed1aaa037ca1764d71f468eac6019b6515ac0a41f20835e732adc0dc9651b893f8f5f18b2a494e2e54f083be7dda77b9a6863dbd53a1d39f13e7cb221
|
|
@@ -187,7 +187,7 @@ module ZuoraConnect
|
|
|
187
187
|
raise ZuoraConnect::Exceptions::HoldingPattern if holding_pattern && !self.mark_for_refresh
|
|
188
188
|
self.refresh(session: session)
|
|
189
189
|
|
|
190
|
-
elsif session["#{self.id}::task_data"].blank?
|
|
190
|
+
elsif session["#{self.id}::task_data"].blank? && !ZuoraConnect.configuration.local_task_data
|
|
191
191
|
self.new_session_message = "REFRESHING - Task Data Blank"
|
|
192
192
|
ZuoraConnect.logger.debug(self.new_session_message)
|
|
193
193
|
raise ZuoraConnect::Exceptions::HoldingPattern if holding_pattern && !self.mark_for_refresh
|
|
@@ -353,8 +353,10 @@ module ZuoraConnect
|
|
|
353
353
|
end
|
|
354
354
|
|
|
355
355
|
def fetch_connect_data(session: {})
|
|
356
|
+
refresh_count ||= 0
|
|
356
357
|
self.check_oauth_state
|
|
357
|
-
|
|
358
|
+
request_url = ZuoraConnect.configuration.url + "/api/#{self.api_version}/tools/tasks/#{self.id}.json"
|
|
359
|
+
response = HTTParty.get(request_url,:body => {:access_token => self.access_token})
|
|
358
360
|
|
|
359
361
|
if response.code == 200
|
|
360
362
|
begin
|
|
@@ -367,45 +369,43 @@ module ZuoraConnect
|
|
|
367
369
|
self.set_backup_creds
|
|
368
370
|
self.save(validate: false) if self.changed?
|
|
369
371
|
else
|
|
370
|
-
raise ZuoraConnect::Exceptions::ConnectCommunicationError.new("Error
|
|
372
|
+
raise ZuoraConnect::Exceptions::ConnectCommunicationError.new("Error communicating with Connect for '#{request_url}' with #{response.code}", response.body, response.code)
|
|
373
|
+
end
|
|
374
|
+
rescue *(ZuoraAPI::Login::CONNECTION_EXCEPTIONS + ZuoraAPI::Login::CONNECTION_READ_EXCEPTIONS) => ex
|
|
375
|
+
refresh_count += 1
|
|
376
|
+
if refresh_count < 3
|
|
377
|
+
sleep(10)
|
|
378
|
+
ZuoraConnect.logger.debug("REFRESH TASK - Connection Failure Retrying(#{refresh_count})", ex, self.default_ougai_items)
|
|
379
|
+
retry
|
|
380
|
+
else
|
|
381
|
+
ZuoraConnect.logger.fatal("REFRESH TASK - Connection Failed", ex)
|
|
382
|
+
raise
|
|
383
|
+
end
|
|
384
|
+
rescue ZuoraConnect::Exceptions::ConnectCommunicationError => ex
|
|
385
|
+
refresh_count += 1
|
|
386
|
+
if refresh_count < 3
|
|
387
|
+
ZuoraConnect.logger.debug("REFRESH TASK - Communication Failure Retrying(#{refresh_count})", ex, self.default_ougai_items)
|
|
388
|
+
self.refresh_oauth if ex.code == 401
|
|
389
|
+
retry
|
|
390
|
+
else
|
|
391
|
+
ZuoraConnect.logger.fatal("REFRESH TASK - Communication Failed #{ex.code}", ex, self.default_ougai_items)
|
|
392
|
+
raise
|
|
371
393
|
end
|
|
372
394
|
end
|
|
373
395
|
|
|
374
|
-
|
|
375
396
|
def refresh(session: {})
|
|
376
397
|
refresh_count ||= 0
|
|
377
398
|
skip_connect ||= ZuoraConnect.configuration.skip_connect
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
self.build_task(task_data: self.zuora_logins, session: session)
|
|
384
|
-
end
|
|
385
|
-
self.last_refresh = Time.now.to_i
|
|
386
|
-
self.cache_app_instance
|
|
387
|
-
self.reset_mark_for_refresh
|
|
388
|
-
rescue *(ZuoraAPI::Login::CONNECTION_EXCEPTIONS + ZuoraAPI::Login::CONNECTION_READ_EXCEPTIONS) => ex
|
|
389
|
-
refresh_count += 1
|
|
390
|
-
if refresh_count < 3
|
|
391
|
-
sleep(10)
|
|
392
|
-
ZuoraConnect.logger.debug("REFRESH TASK - Connection Failure Retrying(#{refresh_count})", ex, self.default_ougai_items)
|
|
393
|
-
retry
|
|
394
|
-
else
|
|
395
|
-
ZuoraConnect.logger.fatal("REFRESH TASK - Connection Failed", ex)
|
|
396
|
-
raise
|
|
397
|
-
end
|
|
398
|
-
rescue ZuoraConnect::Exceptions::ConnectCommunicationError => ex
|
|
399
|
-
refresh_count += 1
|
|
400
|
-
if refresh_count < 3
|
|
401
|
-
ZuoraConnect.logger.debug("REFRESH TASK - Communication Failure Retrying(#{refresh_count})", ex, self.default_ougai_items)
|
|
402
|
-
self.refresh_oauth if ex.code == 401
|
|
403
|
-
retry
|
|
404
|
-
else
|
|
405
|
-
ZuoraConnect.logger.fatal("REFRESH TASK - Communication Failed #{ex.code}", ex, self.default_ougai_items)
|
|
406
|
-
raise
|
|
407
|
-
end
|
|
399
|
+
#Check how app was deployed
|
|
400
|
+
if !self.auto_deployed? && (!skip_connect || self['zuora_logins'].blank?)
|
|
401
|
+
self.fetch_connect_data(session: session)
|
|
402
|
+
else
|
|
403
|
+
self.build_task(task_data: self.zuora_logins, session: session)
|
|
408
404
|
end
|
|
405
|
+
self.last_refresh = Time.now.to_i
|
|
406
|
+
self.cache_app_instance
|
|
407
|
+
self.reset_mark_for_refresh
|
|
408
|
+
|
|
409
409
|
rescue => ex
|
|
410
410
|
refresh_count += 1
|
|
411
411
|
if self['zuora_logins'].present? && refresh_count < 3
|
|
@@ -416,10 +416,6 @@ module ZuoraConnect
|
|
|
416
416
|
raise
|
|
417
417
|
end
|
|
418
418
|
|
|
419
|
-
def aws_secrets
|
|
420
|
-
(Rails.application.secrets.aws || {}).transform_keys { |key| key.to_s }
|
|
421
|
-
end
|
|
422
|
-
|
|
423
419
|
#### START KMS ENCRYPTION Methods ####
|
|
424
420
|
def set_backup_creds
|
|
425
421
|
if self.kms_key.present? && self.kms_key.match(/^arn:aws:.*/) && self.task_data.present?
|
|
@@ -435,14 +431,105 @@ module ZuoraConnect
|
|
|
435
431
|
|
|
436
432
|
def zuora_logins
|
|
437
433
|
raise ZuoraConnect::Exceptions::ConnectCommunicationError.new("Zuora Logins is blank, cannot decrypt.") if super.blank?
|
|
438
|
-
return JSON.parse(kms_decrypt(super))
|
|
434
|
+
return JSON.parse(kms_decrypt(super, field_name: :zuora_logins))
|
|
435
|
+
end
|
|
436
|
+
|
|
437
|
+
def kms_client
|
|
438
|
+
@kms_client ||= Aws::KMS::Client.new({region: aws_secrets['AWS_REGION'], credentials: self.aws_auth_client}.delete_if { |k, v| v.blank? })
|
|
439
|
+
return @kms_client
|
|
440
|
+
end
|
|
441
|
+
|
|
442
|
+
def decrypted_data_key
|
|
443
|
+
$cleartextkey ||= kms_client.decrypt(ciphertext_blob: Base64.strict_decode64(encrypted_data_key)).plaintext
|
|
444
|
+
return $cleartextkey
|
|
445
|
+
end
|
|
446
|
+
|
|
447
|
+
def aws_secrets
|
|
448
|
+
(Rails.application.secrets.aws || {}).transform_keys { |key| key.to_s }
|
|
449
|
+
end
|
|
450
|
+
|
|
451
|
+
def connect_secrets
|
|
452
|
+
(Rails.application.secrets.connect || {}).transform_keys { |key| key.to_s }
|
|
453
|
+
end
|
|
454
|
+
|
|
455
|
+
def kms_key(raise_on_blank: false)
|
|
456
|
+
kms_value = ENV['AWS_KMS_ARN'] || aws_secrets['AWS_KMS_ARN']
|
|
457
|
+
raise ZuoraConnect::Exceptions::Error.new("Missing KMS key") if raise_on_blank && kms_value.blank?
|
|
458
|
+
return kms_value
|
|
439
459
|
end
|
|
440
460
|
|
|
441
|
-
def
|
|
461
|
+
def iv_key
|
|
462
|
+
iv_key_value = ENV['IV_KEY'] || connect_secrets['IV_KEY']
|
|
463
|
+
#Create new one 'Base64.strict_encode64(OpenSSL::Cipher.new('AES-256-CBC').random_iv)'
|
|
464
|
+
raise ZuoraConnect::Exceptions::Error.new("Missing IV cipher key") if iv_key_value.blank?
|
|
465
|
+
return iv_key_value
|
|
466
|
+
end
|
|
467
|
+
|
|
468
|
+
def encrypted_data_key
|
|
469
|
+
#Base64.strict_encode64(kms_client.generate_data_key(key_id: kms_key, key_spec: 'AES_256').ciphertext_blob)
|
|
470
|
+
encrypted_data_key_value = ENV['ENCRYPTED_DATA_KEY'] || connect_secrets['ENCRYPTED_DATA_KEY']
|
|
471
|
+
raise ZuoraConnect::Exceptions::Error.new("Missing encrypted data key 'ENCRYPTED_DATA_KEY'.") if encrypted_data_key_value.blank?
|
|
472
|
+
return encrypted_data_key_value
|
|
473
|
+
end
|
|
474
|
+
|
|
475
|
+
def aws_auth_client
|
|
476
|
+
if Rails.env.to_s == 'development'
|
|
477
|
+
return Aws::Credentials.new(aws_secrets['AWS_ACCESS_KEY_ID'], aws_secrets['AWS_SECRET_ACCESS_KEY'])
|
|
478
|
+
else
|
|
479
|
+
return nil
|
|
480
|
+
end
|
|
481
|
+
end
|
|
482
|
+
|
|
483
|
+
def fetch_cipher(type)
|
|
484
|
+
raise "Type must be set to 'encrypt' or 'decrypt'" if !['decrypt','encrypt'].include?(type)
|
|
485
|
+
cipher = OpenSSL::Cipher.new('AES-256-CBC')
|
|
486
|
+
cipher.send(type)
|
|
487
|
+
cipher.key = self.decrypted_data_key
|
|
488
|
+
cipher.iv = Base64.strict_decode64(self.iv_key)
|
|
489
|
+
return cipher
|
|
490
|
+
end
|
|
491
|
+
|
|
492
|
+
def kms_decrypt(value, field_name: nil, encryption_type: ZuoraConnect.configuration.encryption_type)
|
|
442
493
|
kms_tries ||= 0
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
494
|
+
original_encryption_type ||= encryption_type.dup
|
|
495
|
+
|
|
496
|
+
case encryption_type
|
|
497
|
+
when :direct
|
|
498
|
+
result = kms_client.decrypt(ciphertext_blob: [value].pack("H*") ).plaintext
|
|
499
|
+
#Update original encryption
|
|
500
|
+
if original_encryption_type != encryption_type && field_name.present?
|
|
501
|
+
ZuoraConnect.logger.debug("Updating encryption to '#{original_encryption_type}', from '#{encryption_type}' for field '#{field_name}'", self.default_ougai_items)
|
|
502
|
+
self.update_column(field_name, self.kms_encrypt(result, encryption_type: original_encryption_type))
|
|
503
|
+
end
|
|
504
|
+
|
|
505
|
+
return result
|
|
506
|
+
when :envelope
|
|
507
|
+
cipher = fetch_cipher('decrypt')
|
|
508
|
+
result = cipher.update(Base64.strict_decode64(value)) + cipher.final
|
|
509
|
+
|
|
510
|
+
#Update original encryption
|
|
511
|
+
if original_encryption_type != encryption_type && field_name.present?
|
|
512
|
+
ZuoraConnect.logger.debug("Updating encryption to '#{original_encryption_type}', from '#{encryption_type}' for field '#{field_name}'", self.default_ougai_items)
|
|
513
|
+
self.update_column(field_name, self.kms_encrypt(result, encryption_type: original_encryption_type))
|
|
514
|
+
end
|
|
515
|
+
return result
|
|
516
|
+
else
|
|
517
|
+
ZuoraConnect::Exceptions::Error.new("Invalid encryption method '#{encryption_type}'.")
|
|
518
|
+
end
|
|
519
|
+
rescue ArgumentError => ex
|
|
520
|
+
if ex.message == 'invalid base64' && encryption_type == :envelope && (kms_tries += 1) < 3
|
|
521
|
+
ZuoraConnect.logger.warn("Fallback to encryption 'direct', from '#{encryption_type}'", ex, self.default_ougai_items)
|
|
522
|
+
encryption_type = :direct
|
|
523
|
+
retry
|
|
524
|
+
end
|
|
525
|
+
raise#Add protection when decrypting
|
|
526
|
+
rescue Aws::KMS::Errors::InvalidCiphertextException => ex
|
|
527
|
+
if encryption_type == :direct && (kms_tries += 1) < 3
|
|
528
|
+
ZuoraConnect.logger.warn("Fallback to encryption 'envelope', from '#{encryption_type}'", ex, self.default_ougai_items)
|
|
529
|
+
encryption_type = :envelope
|
|
530
|
+
retry
|
|
531
|
+
end
|
|
532
|
+
raise
|
|
446
533
|
rescue *AWS_AUTH_ERRORS => ex
|
|
447
534
|
if (kms_tries += 1) < 3
|
|
448
535
|
Rails.logger.warn(AWS_AUTH_ERRORS_MSG, ex)
|
|
@@ -453,12 +540,20 @@ module ZuoraConnect
|
|
|
453
540
|
end
|
|
454
541
|
end
|
|
455
542
|
|
|
456
|
-
def kms_encrypt(value)
|
|
543
|
+
def kms_encrypt(value, encryption_type: ZuoraConnect.configuration.encryption_type)
|
|
457
544
|
kms_tries ||= 0
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
545
|
+
case encryption_type
|
|
546
|
+
when :direct
|
|
547
|
+
resp = kms_client.encrypt({key_id: kms_key(raise_on_blank: true), plaintext: value})
|
|
548
|
+
return resp.ciphertext_blob.unpack('H*').first
|
|
549
|
+
when :envelope
|
|
550
|
+
cipher = fetch_cipher('encrypt')
|
|
551
|
+
value = cipher.update(value.to_s)
|
|
552
|
+
value << cipher.final
|
|
553
|
+
return Base64.strict_encode64(value)
|
|
554
|
+
else
|
|
555
|
+
ZuoraConnect::Exceptions::Error.new("Invalid encryption method '#{encryption_type}'.")
|
|
556
|
+
end
|
|
462
557
|
rescue *AWS_AUTH_ERRORS => ex
|
|
463
558
|
if (kms_tries += 1) < 3
|
|
464
559
|
Rails.logger.warn(AWS_AUTH_ERRORS_MSG, ex)
|
|
@@ -468,18 +563,6 @@ module ZuoraConnect
|
|
|
468
563
|
raise
|
|
469
564
|
end
|
|
470
565
|
end
|
|
471
|
-
|
|
472
|
-
def kms_key
|
|
473
|
-
return ENV['AWS_KMS_ARN'] || aws_secrets['AWS_KMS_ARN']
|
|
474
|
-
end
|
|
475
|
-
|
|
476
|
-
def aws_auth_client
|
|
477
|
-
if Rails.env.to_s == 'development'
|
|
478
|
-
return Aws::Credentials.new(aws_secrets['AWS_ACCESS_KEY_ID'], aws_secrets['AWS_SECRET_ACCESS_KEY'])
|
|
479
|
-
else
|
|
480
|
-
return nil
|
|
481
|
-
end
|
|
482
|
-
end
|
|
483
566
|
#### END KMS ENCRYPTION Methods ####
|
|
484
567
|
|
|
485
568
|
#### START Metrics Methods ####
|
|
@@ -505,9 +588,13 @@ module ZuoraConnect
|
|
|
505
588
|
def build_task(task_data: {}, session: {})
|
|
506
589
|
session = {} if session.blank?
|
|
507
590
|
self.task_data = task_data
|
|
591
|
+
if self.task_data.blank? && ZuoraConnect.configuration.local_task_data
|
|
592
|
+
self.task_data = self.zuora_logins
|
|
593
|
+
end
|
|
594
|
+
|
|
508
595
|
self.mode = self.task_data["mode"]
|
|
509
596
|
|
|
510
|
-
if task_data['id'].to_s != self.id.to_s
|
|
597
|
+
if self.task_data['id'].to_s != self.id.to_s
|
|
511
598
|
raise ZuoraConnect::Exceptions::MissMatch.new("Wrong Instance Identifier/Lookup")
|
|
512
599
|
end
|
|
513
600
|
|
|
@@ -545,7 +632,7 @@ module ZuoraConnect
|
|
|
545
632
|
raise
|
|
546
633
|
rescue => ex
|
|
547
634
|
ZuoraConnect.logger.error("Build Task Error", ex)
|
|
548
|
-
ZuoraConnect.logger.error("Task Data: #{task_data}") if task_data.present?
|
|
635
|
+
ZuoraConnect.logger.error("Task Data: #{self.task_data}") if self.task_data.present?
|
|
549
636
|
if session.present?
|
|
550
637
|
ZuoraConnect.logger.error("Task Session: #{session.to_h}") if session.methods.include?(:to_h)
|
|
551
638
|
ZuoraConnect.logger.error("Task Session: #{session.to_hash}") if session.methods.include?(:to_hash)
|
|
@@ -796,19 +883,19 @@ module ZuoraConnect
|
|
|
796
883
|
if login.tenant_type == "Zuora"
|
|
797
884
|
if login.available_entities.size > 1 && Rails.application.config.session_store != ActionDispatch::Session::CookieStore
|
|
798
885
|
login.available_entities.each do |entity_key|
|
|
799
|
-
session["#{self.id}::#{key}::#{entity_key}:current_session"] = login.client(entity_key).current_session if login.client.respond_to?(:current_session)
|
|
800
|
-
session["#{self.id}::#{key}::#{entity_key}:bearer_token"] = login.client(entity_key).bearer_token if login.client.respond_to?(:bearer_token)
|
|
801
|
-
session["#{self.id}::#{key}::#{entity_key}:oauth_session_expires_at"] = login.client(entity_key).oauth_session_expires_at if login.client.respond_to?(:oauth_session_expires_at)
|
|
886
|
+
session["#{self.id}::#{key}::#{entity_key}:current_session"] = login.client(entity_key).current_session if login.client.respond_to?(:current_session) && login.client(entity_key).current_session.present?
|
|
887
|
+
session["#{self.id}::#{key}::#{entity_key}:bearer_token"] = login.client(entity_key).bearer_token if login.client.respond_to?(:bearer_token) && login.client(entity_key).bearer_token.present?
|
|
888
|
+
session["#{self.id}::#{key}::#{entity_key}:oauth_session_expires_at"] = login.client(entity_key).oauth_session_expires_at if login.client.respond_to?(:oauth_session_expires_at) && login.client(entity_key).oauth_session_expires_at.present?
|
|
802
889
|
end
|
|
803
890
|
else
|
|
804
|
-
session["#{self.id}::#{key}:current_session"] = login.client.current_session if login.client.respond_to?(:current_session)
|
|
805
|
-
session["#{self.id}::#{key}:bearer_token"] = login.client.bearer_token if login.client.respond_to?(:bearer_token)
|
|
806
|
-
session["#{self.id}::#{key}:oauth_session_expires_at"] = login.client.oauth_session_expires_at if login.client.respond_to?(:oauth_session_expires_at)
|
|
891
|
+
session["#{self.id}::#{key}:current_session"] = login.client.current_session if login.client.respond_to?(:current_session) && login.client.current_session.present?
|
|
892
|
+
session["#{self.id}::#{key}:bearer_token"] = login.client.bearer_token if login.client.respond_to?(:bearer_token) && login.client.bearer_token.present?
|
|
893
|
+
session["#{self.id}::#{key}:oauth_session_expires_at"] = login.client.oauth_session_expires_at if login.client.respond_to?(:oauth_session_expires_at) && login.client.oauth_session_expires_at.present?
|
|
807
894
|
end
|
|
808
895
|
end
|
|
809
896
|
end
|
|
810
897
|
|
|
811
|
-
session["#{self.id}::task_data"] = self.task_data
|
|
898
|
+
session["#{self.id}::task_data"] = self.task_data if !ZuoraConnect.configuration.local_task_data
|
|
812
899
|
|
|
813
900
|
#Redis is not defined strip out old data
|
|
814
901
|
if !defined?(Redis.current)
|
|
@@ -848,6 +935,9 @@ module ZuoraConnect
|
|
|
848
935
|
else
|
|
849
936
|
begin
|
|
850
937
|
return JSON.parse(encryptor.decrypt_and_verify(CGI::unescape(data)))
|
|
938
|
+
rescue ActiveSupport::MessageEncryptor::InvalidMessage => ex
|
|
939
|
+
Rails.logger.error('Error Decrypting', ex, self.default_ougai_items) if log_fatal && !Rails.env.test?
|
|
940
|
+
return JSON.parse(encryptor.decrypt_and_verify(data))
|
|
851
941
|
rescue ActiveSupport::MessageVerifier::InvalidSignature => ex
|
|
852
942
|
ZuoraConnect.logger.error("Error Decrypting", ex, self.default_ougai_items) if log_fatal
|
|
853
943
|
return rescue_return
|
|
@@ -11,6 +11,15 @@ class RedisFlash
|
|
|
11
11
|
end
|
|
12
12
|
end
|
|
13
13
|
|
|
14
|
+
class Redis
|
|
15
|
+
def self.current
|
|
16
|
+
@current ||= Redis.new()
|
|
17
|
+
end
|
|
18
|
+
def self.current=(redis)
|
|
19
|
+
@current = redis
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
14
23
|
if defined?(Redis.current)
|
|
15
24
|
Redis.current = Redis.new(:id => "#{ZuoraObservability::Env.full_process_name(process_name: 'Redis')}", :url => redis_url, :timeout => 6, :reconnect_attempts => 2)
|
|
16
25
|
browser_urls['Redis'] = { "url" => redis_url }
|
|
@@ -9,5 +9,8 @@ class AddEnvironmentFields < ActiveRecord::Migration[5.0]
|
|
|
9
9
|
if column_exists? :zuora_connect_app_instances, :organizations
|
|
10
10
|
change_column :zuora_connect_app_instances, :organizations, :jsonb, default: []
|
|
11
11
|
end
|
|
12
|
+
unless column_exists? :zuora_connect_app_instances, :zuora_global_tenant_id
|
|
13
|
+
add_column :zuora_connect_app_instances, :zuora_global_tenant_id, :text, default: ""
|
|
14
|
+
end
|
|
12
15
|
end
|
|
13
16
|
end
|
|
@@ -1,24 +1,16 @@
|
|
|
1
|
-
# desc "Explaining what the task does"
|
|
2
|
-
# task :connect do
|
|
3
|
-
# # Task goes here
|
|
4
|
-
# end
|
|
5
|
-
|
|
6
1
|
namespace :db do
|
|
7
2
|
desc 'Also create shared_extensions Schema'
|
|
8
3
|
task :extensions => :environment do
|
|
9
4
|
# Create Schema
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
5
|
+
at_exit {
|
|
6
|
+
ActiveRecord::Base.connection.execute 'CREATE SCHEMA IF NOT EXISTS shared_extensions;'
|
|
7
|
+
# Enable Hstore
|
|
8
|
+
ActiveRecord::Base.connection.execute 'CREATE EXTENSION IF NOT EXISTS HSTORE SCHEMA shared_extensions;'
|
|
9
|
+
# Enable UUID-OSSP
|
|
10
|
+
ActiveRecord::Base.connection.execute 'CREATE EXTENSION IF NOT EXISTS "uuid-ossp" SCHEMA shared_extensions;'
|
|
11
|
+
}
|
|
15
12
|
end
|
|
16
13
|
end
|
|
17
14
|
|
|
18
|
-
Rake::Task["db:create"].enhance
|
|
19
|
-
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
Rake::Task["db:test:purge"].enhance do
|
|
23
|
-
Rake::Task["db:extensions"].invoke
|
|
24
|
-
end
|
|
15
|
+
Rake::Task["db:create"].enhance [:extensions]
|
|
16
|
+
Rake::Task["db:test:purge"].enhance [:extensions]
|
|
@@ -7,7 +7,7 @@ module ZuoraConnect
|
|
|
7
7
|
|
|
8
8
|
attr_accessor :oauth_client_id, :oauth_client_secret, :oauth_client_redirect_uri
|
|
9
9
|
|
|
10
|
-
attr_accessor :dev_mode_logins, :dev_mode_options, :dev_mode_mode, :dev_mode_appinstance, :dev_mode_user, :dev_mode_pass, :dev_mode_admin, :dev_mode_secret_access_key,:dev_mode_access_key_id,:aws_region, :s3_bucket_name, :s3_folder_name, :insert_migrations, :skip_connect
|
|
10
|
+
attr_accessor :dev_mode_logins, :dev_mode_options, :dev_mode_mode, :dev_mode_appinstance, :dev_mode_user, :dev_mode_pass, :dev_mode_admin, :dev_mode_secret_access_key,:dev_mode_access_key_id,:aws_region, :s3_bucket_name, :s3_folder_name, :insert_migrations, :skip_connect, :encryption_type, :local_task_data
|
|
11
11
|
|
|
12
12
|
def initialize
|
|
13
13
|
@default_locale = :en
|
|
@@ -21,6 +21,8 @@ module ZuoraConnect
|
|
|
21
21
|
@blpop_queue = false
|
|
22
22
|
@insert_migrations = true
|
|
23
23
|
@skip_connect = false
|
|
24
|
+
@encryption_type = :direct
|
|
25
|
+
@local_task_data = false
|
|
24
26
|
|
|
25
27
|
# Setting the app name for telegraf write
|
|
26
28
|
@enable_metrics = false
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: zuora_connect
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.1.
|
|
4
|
+
version: 3.1.1.pre.c
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Connect Team
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2022-
|
|
11
|
+
date: 2022-07-13 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: apartment
|
|
@@ -452,9 +452,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
452
452
|
version: '0'
|
|
453
453
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
454
454
|
requirements:
|
|
455
|
-
- - "
|
|
455
|
+
- - ">"
|
|
456
456
|
- !ruby/object:Gem::Version
|
|
457
|
-
version:
|
|
457
|
+
version: 1.3.1
|
|
458
458
|
requirements: []
|
|
459
459
|
rubygems_version: 3.3.7
|
|
460
460
|
signing_key:
|