93 lines
3.2 KiB
Ruby
93 lines
3.2 KiB
Ruby
namespace :cartodb do
|
|
desc "Adapt max_import_file_size according to disk quota"
|
|
task :setup_max_import_file_size_based_on_disk_quota => :environment do
|
|
mid_size = 500*1024*1024
|
|
big_size = 1000*1024*1024
|
|
|
|
::User.all.each do |user|
|
|
quota_in_mb = user.quota_in_bytes/1024/1024
|
|
if quota_in_mb >= 450 && quota_in_mb < 1500
|
|
user.max_import_file_size = mid_size
|
|
user.save
|
|
print "M"
|
|
elsif quota_in_mb >= 1500
|
|
user.max_import_file_size = big_size
|
|
user.save
|
|
print "B"
|
|
else
|
|
print "."
|
|
end
|
|
end
|
|
puts "\n"
|
|
end
|
|
|
|
desc "Adapt max_import_table_row_count according to disk quota"
|
|
task :setup_max_import_table_row_count_based_on_disk_quota => :environment do
|
|
mid_count = 1000000
|
|
big_count = 5000000
|
|
|
|
::User.all.each do |user|
|
|
quota_in_mb = user.quota_in_bytes/1024/1024
|
|
if quota_in_mb >= 50 && quota_in_mb < 1000
|
|
user.max_import_table_row_count = mid_count
|
|
user.save
|
|
print "M"
|
|
elsif quota_in_mb >= 1000
|
|
user.max_import_table_row_count = big_count
|
|
user.save
|
|
print "B"
|
|
else
|
|
print "."
|
|
end
|
|
end
|
|
puts "\n"
|
|
end
|
|
|
|
desc "Increase limits for twitter import users"
|
|
task :increase_limits_for_twitter_import_users => :environment do
|
|
file_size_quota = 1500*1024*1024
|
|
row_count_quota = 5000000
|
|
|
|
::User.where(twitter_datasource_enabled: true).each do |user|
|
|
# Only increase, don't decrease
|
|
user.max_import_file_size = file_size_quota if file_size_quota > user.max_import_file_size
|
|
user.max_import_table_row_count = row_count_quota if row_count_quota > user.max_import_table_row_count
|
|
user.save
|
|
puts "#{user.username}"
|
|
end
|
|
end
|
|
|
|
desc "Set custom platform limits for a user"
|
|
task :set_custom_limits_for_user, [:username, :import_file_size, :table_row_count, :concurrent_imports] => :environment do |task_name, args|
|
|
|
|
raise "Invalid username supplied" if args[:username].nil?
|
|
raise "Invalid import size" if args[:import_file_size].nil? || args[:import_file_size].to_i <= 0
|
|
raise "Invalid tabel row count" if args[:table_row_count].nil? || args[:table_row_count].to_i <= 0
|
|
raise "Invalid concurrent imports" if args[:concurrent_imports].nil? || args[:concurrent_imports].to_i <= 0
|
|
|
|
user = ::User.where(username: args[:username]).first
|
|
|
|
raise "User not found" if user.nil?
|
|
|
|
user.max_import_file_size = args[:import_file_size].to_i
|
|
user.max_import_table_row_count = args[:table_row_count].to_i
|
|
user.max_concurrent_import_count = args[:concurrent_imports].to_i
|
|
user.save
|
|
end
|
|
|
|
desc 'Set max_import_file_size, max_import_table_row_count'
|
|
task :set_import_limits, [:username, :max_import_file_size, :max_import_table_row_count] => :environment do |_task, args|
|
|
username = args[:username]
|
|
raise 'username needed' unless username
|
|
user = ::User.where(username: username).first
|
|
raise "user #{username} not found" unless user
|
|
|
|
|
|
user.max_import_file_size = args[:max_import_file_size] if args[:max_import_file_size].present?
|
|
user.max_import_table_row_count = args[:max_import_table_row_count] if args[:max_import_table_row_count].present?
|
|
|
|
user.save
|
|
end
|
|
|
|
end
|