Providing hooks to amend runtime config
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user