14
15
16
17
18
19
20
21
22
23
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
|
# File 'lib/souls/cli/gcloud/scheduler/index.rb', line 14
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.underscore
Queries::BaseQuery.all_schedules.each do |k, v|
worker_name = FileUtils.pwd.split("/").last
job_name = "souls-#{worker_name}-#{k.to_s.underscore}".to_sym
topic = "souls-#{worker_name}-#{k.to_s.underscore}"
message_body = "query { #{k.to_s.camelize(:lower)} { response }}"
if schedules_list.include?(job_name)
schedule = schedules_list[job_name]
schedules_list.delete(job_name)
next if schedule == v
system(
<<~COMMAND)
gcloud scheduler jobs update pubsub #{job_name} --project=#{project_id} --quiet --schedule="#{v}" --topic="#{topic}" --message-body="#{message_body}" --time-zone="#{options[:timezone]}"
COMMAND
else
system(
<<~COMMAND)
gcloud scheduler jobs create pubsub #{job_name} --project=#{project_id} --quiet --schedule="#{v}" --topic="#{topic}" --attributes="" --message-body="#{message_body}" --time-zone="#{options[:timezone]}"
COMMAND
end
end
schedules_list.each do |k, _|
next unless k.match?(/^souls-#{worker_name}/)
system("gcloud scheduler jobs delete #{k} -q >/dev/null 2>&1")
end
end
|