module Gzr::Plan

Public Instance Methods

create_scheduled_plan(plan) click to toggle source
# File lib/gzr/modules/plan.rb, line 100
def create_scheduled_plan(plan)
  begin
    data = @sdk.create_scheduled_plan(plan)
  rescue LookerSDK::Error => e
    say_error "Error creating scheduled_plan(#{JSON.pretty_generate(plan)})"
    say_error e.message
    raise
  end
  data
end
delete_scheduled_plan(plan_id) click to toggle source
# File lib/gzr/modules/plan.rb, line 89
def delete_scheduled_plan(plan_id)
  begin
    data = @sdk.delete_scheduled_plan(plan_id)
  rescue LookerSDK::ClientError => e
    say_error "Unable to delete scheduled_plan(#{plan_id})"
    say_error e.message
    raise
  end
  data
end
query_all_scheduled_plans(user_id,fields=nil) click to toggle source
# File lib/gzr/modules/plan.rb, line 26
def query_all_scheduled_plans(user_id,fields=nil)
  req = {}
  req[:all_users] = true if user_id == "all"
  req[:user_id] = user_id if user_id && !(user_id == "all")
  req[:fields] = fields if fields
  data = nil
  id = nil
  id = user_id unless user_id == "all"
  begin
    data = @sdk.all_scheduled_plans(req)
  rescue LookerSDK::ClientError => e
    say_error "Unable to get all_scheduled_plans(#{JSON.pretty_generate(req)})"
    say_error e.message
    raise
  end
  data
end
query_scheduled_plan(plan_id,fields=nil) click to toggle source
# File lib/gzr/modules/plan.rb, line 76
def query_scheduled_plan(plan_id,fields=nil)
  req = {}
  req[:fields] = fields if fields
  begin
    data = @sdk.scheduled_plan(plan_id,req)
  rescue LookerSDK::ClientError => e
    say_error "Unable to get scheduled_plan(#{plan_id},#{JSON.pretty_generate(req)})"
    say_error e.message
    raise
  end
  data
end
query_scheduled_plans_for_dashboard(dashboard_id,user_id,fields=nil) click to toggle source
# File lib/gzr/modules/plan.rb, line 60
def query_scheduled_plans_for_dashboard(dashboard_id,user_id,fields=nil)
  req = {}
  req[:all_users] = true if user_id == "all"
  req[:user_id] = user_id if user_id && !(user_id == "all")
  req[:fields] = fields if fields
  data = nil
  begin
    data = @sdk.scheduled_plans_for_dashboard(dashboard_id,req)
  rescue LookerSDK::ClientError => e
    say_error "Unable to get scheduled_plans_for_dashboard(#{dashboard_id},#{JSON.pretty_generate(req)})"
    say_error e.message
    raise
  end
  data
end
query_scheduled_plans_for_look(look_id,user_id,fields=nil) click to toggle source
# File lib/gzr/modules/plan.rb, line 44
def query_scheduled_plans_for_look(look_id,user_id,fields=nil)
  req = {}
  req[:all_users] = true if user_id == "all"
  req[:user_id] = user_id if user_id && !(user_id == "all")
  req[:fields] = fields if fields
  data = nil
  begin
    data = @sdk.scheduled_plans_for_look(look_id,req)
  rescue LookerSDK::ClientError => e
    say_error "Unable to get scheduled_plans_for_look(#{look_id},#{JSON.pretty_generate(req)})"
    say_error e.message
    raise
  end
  data
end
run_scheduled_plan(plan) click to toggle source
# File lib/gzr/modules/plan.rb, line 122
def run_scheduled_plan(plan)
  begin
    data = @sdk.scheduled_plan_run_once(plan)
  rescue LookerSDK::Error => e
    say_error "Error executing scheduled_plan_run_once(#{JSON.pretty_generate(plan)})"
    say_error e.message
    raise
  end
  data
end
update_scheduled_plan(plan_id,plan) click to toggle source
# File lib/gzr/modules/plan.rb, line 111
def update_scheduled_plan(plan_id,plan)
  begin
    data = @sdk.update_scheduled_plan(plan_id,plan)
  rescue LookerSDK::Error => e
    say_error "Error updating scheduled_plan(#{plan_id},#{JSON.pretty_generate(plan)})"
    say_error e.message
    raise
  end
  data
end
upsert_plan_for_dashboard(dashboard_id,user_id,source_plan) click to toggle source
# File lib/gzr/modules/plan.rb, line 148
def upsert_plan_for_dashboard(dashboard_id,user_id,source_plan)
  existing_plans = query_scheduled_plans_for_dashboard(dashboard_id,"all")
  upsert_plan_for_obj(user_id,source_plan,existing_plans) { |p| p[:dashboard_id] = dashboard_id }
end
upsert_plan_for_look(look_id,user_id,source_plan) click to toggle source
# File lib/gzr/modules/plan.rb, line 143
def upsert_plan_for_look(look_id,user_id,source_plan)
  existing_plans = query_scheduled_plans_for_look(look_id,"all")
  upsert_plan_for_obj(user_id,source_plan,existing_plans) { |p| p[:look_id] = look_id }
end
upsert_plan_for_obj(user_id, source_plan, existing_plans) { |plan| ... } click to toggle source
# File lib/gzr/modules/plan.rb, line 162
def upsert_plan_for_obj(user_id, source_plan, existing_plans)
  matches = existing_plans.select { |p| p.name == source_plan[:name] && user_id == p.user_id }
  if matches.length > 0 then
    say_ok "Modifying existing plan #{matches.first.id} #{matches.first.name}"
    plan = keys_to_keep('update_scheduled_plan').collect do |e|
      [e,nil]
    end.to_h

    plan.merge!( source_plan.select do |k,v|
      (keys_to_keep('update_scheduled_plan') - [:plan_id,:look_id,:dashboard_id,:user_id,:dashboard_filters,:lookml_dashboard_id,:scheduled_plan_destination]).include? k
    end)
    plan[:scheduled_plan_destination] = source_plan[:scheduled_plan_destination].collect do |p|
      p.reject do |k,v|
        [:id,:scheduled_plan_id,:looker_recipient,:can].include? k
      end
    end
    plan[:user_id] = user_id
    plan[:enabled] = true if @options[:enabled]
    plan[:enabled] = false if @options[:disabled]

    plan[:enabled] = false if plan[:enabled].nil?
    plan[:require_results] = false if plan[:require_results].nil?
    plan[:require_no_results] = false if plan[:require_no_results].nil?
    plan[:require_change] = false if plan[:require_change].nil?
    plan[:send_all_results] = false if plan[:send_all_results].nil?
    plan[:run_once] = false if plan[:run_once].nil?
    plan[:include_links] = false if plan[:include_links].nil?
    yield plan
    update_scheduled_plan(matches.first.id,plan)
  else
    plan = source_plan.select do |k,v|
      (keys_to_keep('create_scheduled_plan') - [:plan_id,:dashboard_id,:user_id,:dashboard_filters,:lookml_dashboard_id,:scheduled_plan_destination]).include? k
    end
    plan[:scheduled_plan_destination] = source_plan[:scheduled_plan_destination].collect do |p|
      p.reject do |k,v|
        [:id,:scheduled_plan_id,:looker_recipient,:can].include? k
      end
    end

    yield plan
    plan[:enabled] = true if @options[:enabled]
    plan[:enabled] = false if @options[:disabled]

    plan[:enabled] = false if plan[:enabled].nil?
    plan[:require_results] = false if plan[:require_results].nil?
    plan[:require_no_results] = false if plan[:require_no_results].nil?
    plan[:require_change] = false if plan[:require_change].nil?
    plan[:send_all_results] = false if plan[:send_all_results].nil?
    plan[:run_once] = false if plan[:run_once].nil?
    plan[:include_links] = false if plan[:include_links].nil?
    create_scheduled_plan(plan)
  end
end
upsert_plans_for_dashboard(dashboard_id,user_id,source_plans) click to toggle source
# File lib/gzr/modules/plan.rb, line 138
def upsert_plans_for_dashboard(dashboard_id,user_id,source_plans)
  existing_plans = query_scheduled_plans_for_dashboard(dashboard_id,"all")
  upsert_plans_for_obj(user_id,source_plans,existing_plans) { |p| p[:dashboard_id] = dashboard_id }
end
upsert_plans_for_look(look_id,user_id,source_plans) click to toggle source
# File lib/gzr/modules/plan.rb, line 133
def upsert_plans_for_look(look_id,user_id,source_plans)
  existing_plans = query_scheduled_plans_for_look(look_id,"all")
  upsert_plans_for_obj(user_id,source_plans,existing_plans) { |p| p[:look_id] = look_id }
end
upsert_plans_for_obj(user_id,source_plans,existing_plans, &block) click to toggle source
# File lib/gzr/modules/plan.rb, line 153
def upsert_plans_for_obj(user_id,source_plans,existing_plans, &block)
  plans = nil
  source_plans.collect do |source_plan|
    plans = upsert_plan_for_obj(user_id, source_plan, existing_plans, &block)
  end
  return nil unless plans.length > 0
  plans.first
end