Providing hooks to amend runtime config

This commit is contained in:
Charles Care
2019-11-17 18:03:38 +00:00
parent f88eed3966
commit 305b01a164
2 changed files with 30 additions and 2 deletions

View File

@@ -34,6 +34,23 @@ class Pipeline::Config
save_config(current)
end
def add_container_version!(worker_class, track_slug, new_version)
current = config.to_h
workers = current["workers"]
raise "No worker config" if workers.nil?
class_config = workers[worker_class]
raise "No worker class config for #{worker_class}" if class_config.nil?
track_config = class_config[track_slug]
raise "No track config for #{worker_class}:#{track_slug}" if track_config.nil?
worker_versions = track_config["worker_versions"]
versions = worker_versions.clone
versions << new_version
versions.uniq!
track_config["old_worker_versions"] = worker_versions
track_config["worker_versions"] = versions
save_config(current)
end
def save_config(updated_config)
puts updated_config
File.write(config_file, updated_config.to_yaml)

View File

@@ -114,6 +114,8 @@ module Pipeline::Rpc
req.send_result({ container_versions: container_versions })
elsif action == "update_container_versions"
update_container_versions(req)
elsif action == "deploy_container_version"
update_container_versions(req)
elsif action == "list_available_containers"
channel = req.parsed_msg["channel"]
track_slug = req.parsed_msg["track_slug"]
@@ -217,8 +219,17 @@ module Pipeline::Rpc
return
end
track_slug = req.parsed_msg["track_slug"]
versions = req.parsed_msg["versions"]
config.update_container_versions!(channel, track_slug, versions)
# TODO error if args are bad
if req.parsed_msg["action"] == "update_container_versions"
versions = req.parsed_msg["versions"]
config.update_container_versions!(channel, track_slug, versions)
elsif req.parsed_msg["action"] == "deploy_container_version"
new_version = req.parsed_msg["new_version"]
config.add_container_version!(channel, track_slug, new_version)
else
req.send_error({ msg: "action unknown" })
return
end
load_container_versions!
req.send_result({ container_versions: container_versions })
end