Class: Gzr::Commands::Plan::Randomize

Inherits:
Gzr::Command show all
Includes:
Gzr::Cron, Plan, User
Defined in:
lib/gzr/commands/plan/randomize.rb

Instance Method Summary collapse

Methods included from Gzr::Cron

#randomize_cron

Methods included from User

#delete_user, #query_all_users, #query_me, #query_user, #search_users, #trim_user, #update_user

Methods included from Plan

#create_scheduled_plan, #delete_scheduled_plan, #query_all_scheduled_plans, #query_scheduled_plan, #query_scheduled_plans_for_dashboard, #query_scheduled_plans_for_look, #run_scheduled_plan, #update_scheduled_plan, #upsert_plan_for_dashboard, #upsert_plan_for_look, #upsert_plan_for_obj, #upsert_plans_for_dashboard, #upsert_plans_for_look, #upsert_plans_for_obj

Methods inherited from Gzr::Command

#all_color_collections, #color_collection, #color_palette_lookup!, #create_merge_query, #create_query, #default_color_collection, #field_expressions_eval, #field_names, #find_color_palette_reference, #find_vis_config_reference, #get_auth, #get_user_by_id, #keys_to_keep, #keys_to_keep_internal, #merge_query, #pairs, #query, #render_csv, #rewrite_color_palette!, #run_inline_query, #update_color_palette!

Methods included from Session

#build_connection_hash, #login, #logout_all, #pastel, #read_token_data, #say_error, #say_ok, #say_warning, #sufficient_version?, #token_file, #update_auth, #with_session, #write_token_data

Constructor Details

#initialize(plan_id, options) ⇒ Randomize

Returns a new instance of Randomize.



36
37
38
39
40
# File 'lib/gzr/commands/plan/randomize.rb', line 36

def initialize(plan_id,options)
  super()
  @plan_id = plan_id
  @options = options
end

Instance Method Details

#execute(input: $stdin, output: $stdout) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/gzr/commands/plan/randomize.rb', line 42

def execute(input: $stdin, output: $stdout)
  say_warning("options: #{@options.inspect}") if @options[:debug]

  window = @options[:window]
  if window < 1 or window > 60
    say_error("window must be between 1 and 60")
    raise Gzr::CLI::Error.new()
  end

  with_session do
    @me ||= query_me("id")

    if @plan_id
      plan = query_scheduled_plan(@plan_id)
      if plan
        randomize_plan(plan,window)
      else
        say_warning("Plan #{@plan_id} not found")
      end
    else
      plans = query_all_scheduled_plans( @options[:all]?'all':@me[:id] )
      plans.each do |plan|
        randomize_plan(plan,window)
      end
    end
  end
end

#randomize_plan(plan, window = 60) ⇒ Object



70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/gzr/commands/plan/randomize.rb', line 70

def randomize_plan(plan,window=60)
  crontab = plan[:crontab]
  if crontab == ""
    say_warning("skipping plan #{plan[:id]} with no crontab")
    return
  end
  crontab = randomize_cron(crontab, window)
  begin
    update_scheduled_plan(plan[:id], { crontab: crontab })
  rescue LookerSDK::UnprocessableEntity => e
    say_warning("Skipping invalid entry")
  end
end