fluke/devops-service/app/api3/routes/chef.rb
Tim Lianov 03dc3d8d99 v3
2018-04-04 22:44:39 +03:00

50 lines
1.6 KiB
Ruby

module Devops
module API3
module Routes
module ChefRoutes
def self.registered(app)
app.define_policy :read_chef, "Read data for chef configuration manager"
app.define_policy :modify_chef_tags, "Change tags for nodes in chef configuration manager"
# Get list of available bootstrap templates
app.get_with_headers "/chef/bootstrap_templates" do
check_policy(:read_chef)
json Devops::API3::Handler::Chef.new(request).get_bootstrap_templates
end
app.get_with_headers "/chef/nodes" do
check_policy(:read_chef)
json Devops::API3::Handler::Chef.new(request).chef_nodes
end
# Get tags list for :node_name
app.get_with_headers "/chef/tags/:cm_name" do |cm_name|
check_policy(:read_chef)
json Devops::API3::Handler::Tag.new(request).tags(cm_name)
end
# Set tags list to :node_name
app.post_with_headers "/chef/tags/:cm_name/set" do |cm_name|
check_policy(:modify_chef_tags)
tags = Devops::API3::Handler::Tag.new(request).set_tags(cm_name)
create_response("Set tags for #{cm_name}", tags: tags)
end
# Delete tags from :node_name
app.post_with_headers "/chef/tags/:cm_name/unset" do |cm_name|
check_policy(:modify_chef_tags)
tags = Devops::API3::Handler::Tag.new(request).unset_tags(cm_name)
create_response("Deleted tags for #{cm_name}", tags: tags)
end
puts "Chef routes initialized"
end
end
end
end
end