zuora_connect 3.1.2 → 3.1.5.pre.a

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7e7d747f5419f91b21caca64a6e6a23cba1d35f0698c6bb2ad1a675ef30cfecb
4
- data.tar.gz: 8375c348a777bfb628cc0bda0f5feca421ac7366e6b1d9adaa46677de9705b69
3
+ metadata.gz: 19aedfac159e02a6098ddd1d40b8c05c76ed0198a31fefb059fc1efee21f9680
4
+ data.tar.gz: 1e404cfa4449dca2f20380fb25252178739a694115b7335909dd20f500a4cf72
5
5
  SHA512:
6
- metadata.gz: b676e5e8922bd5b1b8de5955391b12be819498a6a9e6b0e0a7c04a0484d08891dd1f3cf26c4bb6d762c8cea9eb1851566035a2af8c44d8b998d033ec0d7be0af
7
- data.tar.gz: 88883530f0a643369c645e47ed7ed545f5088cf904af9d92c31ca320527bc19cae8773169067cf339abb68c251299b8e9f10a1dd0874d3d9b0d7e30bc208f428
6
+ metadata.gz: e0b52c5b8639d0ead9c33ea46951eb71f6f543bb01e911ef140fa3c55bab38d3c7cbc3445f38ec5064d91093fc1d39427cc0f7be52e4d27652d82a436a708e04
7
+ data.tar.gz: 0a73154220907b992dcf750a036e654c64989f16e45ecb3d24bb89f894da008516efd0ab7853190852dd2ea22ec3edd2490184194d38d877aad29150a40aa377
@@ -1,12 +1,11 @@
1
1
  module ZuoraConnect
2
2
  class StaticController < ApplicationController
3
- before_action :authenticate_connect_app_request, :except => [:health, :initialize_app, :provision, :instance_user]
4
- before_action :clear_connect_app_session, :only => [:health, :initialize_app, :provision, :instance_user]
5
- after_action :persist_connect_app_session, :except => [:health, :initialize_app, :provision, :instance_user]
6
-
7
- skip_before_action :verify_authenticity_token, :only => [:initialize_app, :provision]
8
- http_basic_authenticate_with name: ENV['PROVISION_USER'], password: ENV['PROVISION_SECRET'], :only => [:provision, :instance_user]
3
+ before_action :authenticate_connect_app_request, :except => [:health, :initialize_app, :provision, :instance_user, :instance_drop]
4
+ before_action :clear_connect_app_session, :only => [:health, :initialize_app, :provision, :instance_user, :instance_drop]
5
+ after_action :persist_connect_app_session, :except => [:health, :initialize_app, :provision, :instance_user, :instance_drop]
9
6
 
7
+ skip_before_action :verify_authenticity_token, :only => [:initialize_app, :provision, :instance_drop]
8
+ http_basic_authenticate_with name: ENV['PROVISION_USER'], password: ENV['PROVISION_SECRET'], :only => [:provision, :instance_user, :instance_drop]
10
9
 
11
10
  def health
12
11
  if params[:error].present?
@@ -52,6 +51,10 @@ module ZuoraConnect
52
51
  end
53
52
 
54
53
  def provision
54
+ if ZuoraConnect.configuration.disable_provisioning
55
+ render(json: { status: 403, message: 'Provisioning is suspended until 2022-08-17' }, status: 403) && return
56
+ end
57
+
55
58
  create_new_instance
56
59
  unless performed?
57
60
  render json: {
@@ -119,6 +122,45 @@ module ZuoraConnect
119
122
  }, status: 500
120
123
  end
121
124
 
125
+ def instance_drop
126
+ host = request.headers.fetch("HOST", nil)
127
+ if host.present? && ZuoraConnect::AppInstance::INTERNAL_HOSTS.include?(host)
128
+ ZuoraConnect::AppInstance.read_master_db do
129
+ instance_id = params[:id]
130
+ @appinstance = ZuoraConnect::AppInstance.find(instance_id)
131
+ if @appinstance.drop_instance
132
+ ZuoraConnect::AppInstance.destroy(instance_id)
133
+ msg = Apartment::Tenant.drop(instance_id)
134
+
135
+ if msg.error_message.present?
136
+ render json: { "message" => msg.error_message }, status: :bad_request
137
+ else
138
+ render json: {
139
+ status: 200,
140
+ message: 'Success',
141
+ app_instance_id: instance_id
142
+ }, status: 200
143
+ end
144
+ else
145
+ render json: { "message" => @appinstance.drop_message }, status: :bad_request
146
+ end
147
+ end
148
+ else
149
+ render json: { "message" => "Host #{host} is not internal" }, status: :bad_request
150
+ end
151
+ rescue StandardError => e
152
+ message = 'Failed to drop instance'
153
+ if performed?
154
+ Rails.logger.error("#{message}: #{performed?}", e)
155
+ else
156
+ Rails.logger.error(message, e)
157
+ render json: {
158
+ status: 500,
159
+ message: message
160
+ }, status: 500
161
+ end
162
+ end
163
+
122
164
  private
123
165
 
124
166
  def clear_connect_app_session
@@ -18,10 +18,29 @@ class Redis
18
18
  def self.current=(redis)
19
19
  @current = redis
20
20
  end
21
+
22
+ def self.subscriber
23
+ @subscriber ||= Redis.new
24
+ end
25
+
26
+ def self.subscriber=(redis)
27
+ @subscriber = redis
28
+ end
29
+
30
+ def self.publisher
31
+ @publisher ||= Redis.new
32
+ end
33
+
34
+ def self.publisher=(redis)
35
+ @publisher = redis
36
+ end
21
37
  end
22
38
 
23
39
  if defined?(Redis.current)
24
40
  Redis.current = Redis.new(:id => "#{ZuoraObservability::Env.full_process_name(process_name: 'Redis')}", :url => redis_url, :timeout => 6, :reconnect_attempts => 2)
41
+ Redis.subscriber = Redis.new(:id => "#{ZuoraObservability::Env.full_process_name(process_name: 'RedisSubscriber')}", :url => redis_url, :timeout => 6, :reconnect_attempts => 2)
42
+ Redis.publisher = Redis.new(:id => "#{ZuoraObservability::Env.full_process_name(process_name: 'RedisPublisher')}", :url => redis_url, :timeout => 6, :reconnect_attempts => 2)
43
+
25
44
  browser_urls['Redis'] = { "url" => redis_url }
26
45
  if defined?(Resque.redis)
27
46
  if resque_url != redis_url
data/config/routes.rb CHANGED
@@ -4,6 +4,7 @@ ZuoraConnect::Engine.routes.draw do
4
4
 
5
5
  if ENV['PROVISION_USER'].present? && ENV['PROVISION_SECRET'].present?
6
6
  post '/provision' => 'static#provision'
7
+ post '/instance/:id/drop' => 'static#instance_drop'
7
8
  get '/instance/:id/user' => 'static#instance_user'
8
9
  end
9
10
 
@@ -2,15 +2,18 @@ namespace :db do
2
2
  desc 'Also create shared_extensions Schema'
3
3
  task :extensions => :environment do
4
4
  # Create Schema
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
- }
5
+ ActiveRecord::Base.connection.execute 'CREATE SCHEMA IF NOT EXISTS shared_extensions;'
6
+ # Enable Hstore
7
+ ActiveRecord::Base.connection.execute 'CREATE EXTENSION IF NOT EXISTS HSTORE SCHEMA shared_extensions;'
8
+ # Enable UUID-OSSP
9
+ ActiveRecord::Base.connection.execute 'CREATE EXTENSION IF NOT EXISTS "uuid-ossp" SCHEMA shared_extensions;'
12
10
  end
13
11
  end
14
12
 
15
- Rake::Task["db:create"].enhance [:extensions]
16
- Rake::Task["db:test:purge"].enhance [:extensions]
13
+ Rake::Task["db:create"].enhance do
14
+ Rake::Task["db:extensions"].invoke
15
+ end
16
+
17
+ Rake::Task["db:test:purge"].enhance do
18
+ Rake::Task["db:extensions"].invoke
19
+ end
@@ -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, :encryption_type, :local_task_data
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, :disable_provisioning
11
11
 
12
12
  def initialize
13
13
  @default_locale = :en
@@ -23,6 +23,7 @@ module ZuoraConnect
23
23
  @skip_connect = false
24
24
  @encryption_type = :direct
25
25
  @local_task_data = false
26
+ @disable_provisioning = false
26
27
 
27
28
  # Setting the app name for telegraf write
28
29
  @enable_metrics = false
@@ -446,6 +446,10 @@ module ZuoraConnect
446
446
 
447
447
  #We have no deployed instance for this tenant
448
448
  else
449
+ if ZuoraConnect.configuration.disable_provisioning
450
+ raise ZuoraConnect::Exceptions::AccessDenied.new("Provisioning is suspended")
451
+ end
452
+
449
453
  #Ensure user can access oauth creation API
450
454
  if !session["ZuoraCurrentUserInfo"]['permissions'].include?("permission.userManagement")
451
455
  Thread.current[:appinstance] = nil
@@ -601,6 +605,10 @@ module ZuoraConnect
601
605
  @appinstance = ZuoraConnect::AppInstance.find_by(:id => values["appInstance"].to_i)
602
606
 
603
607
  if @appinstance.blank?
608
+ if ZuoraConnect.configuration.disable_provisioning
609
+ raise ZuoraConnect::Exceptions::AccessDenied.new("Provisioning is suspended")
610
+ end
611
+
604
612
  Apartment::Tenant.switch!("public")
605
613
  begin
606
614
  Apartment::Tenant.create(values["appInstance"].to_s)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ZuoraConnect
4
- VERSION = "3.1.2"
4
+ VERSION = "3.1.5-a"
5
5
  end
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.2
4
+ version: 3.1.5.pre.a
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-07-21 00:00:00.000000000 Z
11
+ date: 2022-08-10 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: '0'
457
+ version: 1.3.1
458
458
  requirements: []
459
459
  rubygems_version: 3.3.7
460
460
  signing_key: