24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
# File 'lib/souls/cli/gcloud/scheduler/index.rb', line 24
def sync_schedules
require("./app")
SOULs::Gcloud.new.config_set
project_id = SOULs.configuration.project_id
schedules_list = current_schedules
worker_name = FileUtils.pwd.split("/").last
Queries::BaseQuery.all_schedules.each do |k, v|
job_name = "souls-#{worker_name}-#{k.to_s.underscore.gsub('_', '-')}".to_sym
topic = "souls-#{worker_name}-#{k.to_s.underscore.gsub('_', '-')}"
query_name = k.to_s.gsub("-", "").camelize(:lower)
message_body = "query { #{query_name} { response }}"
if schedules_list.include?(job_name)
schedule = schedules_list[job_name]
schedules_list.delete(job_name)
next if schedule == v
system(
" gcloud scheduler jobs update pubsub \#{job_name} --project=\#{project_id} --quiet --schedule=\"\#{v}\" --topic=\"\#{topic}\" --message-body=\"\#{message_body}\" --time-zone=\"\#{options[:timezone]}\"\n COMMAND\n else\n system(\n <<~COMMAND)\n gcloud scheduler jobs create pubsub \#{job_name} --project=\#{project_id} --quiet --schedule=\"\#{v}\" --topic=\"\#{topic}\" --attributes=\"\" --message-body=\"\#{message_body}\" --time-zone=\"\#{options[:timezone]}\"\n COMMAND\n end\n end\n\n schedules_list.each do |k, _|\n next unless k.match?(/^souls-\#{worker_name}/)\n\n system(\"gcloud scheduler jobs delete \#{k} -q >/dev/null 2>&1\")\n end\nend\n")
|