Files
ubicloud/routes/project/location/vm.rb
Enes Cakir 8bd02f904b Add vm restart button to the UI
I did it very similar to the PostgreSQL restart functionality.
2024-12-13 10:04:54 +03:00

55 lines
1.2 KiB
Ruby

# frozen_string_literal: true
class Clover
hash_branch(:project_location_prefix, "vm") do |r|
r.get api? do
vm_list_api_response(vm_list_dataset)
end
r.on NAME_OR_UBID do |vm_name, vm_ubid|
if vm_name
r.post api? do
vm_post(vm_name)
end
filter = {Sequel[:vm][:name] => vm_name}
else
filter = {Sequel[:vm][:id] => UBID.to_uuid(vm_ubid)}
end
filter[:location] = @location
vm = @project.vms_dataset.first(filter)
next(r.delete? ? 204 : 404) unless vm
r.get true do
authorize("Vm:view", vm.id)
@vm = Serializers::Vm.serialize(vm, {detailed: true, include_path: web?})
api? ? @vm : view("vm/show")
end
r.delete true do
authorize("Vm:delete", vm.id)
vm.incr_destroy
204
end
r.post web?, "restart" do
authorize("Vm:edit", vm.id)
vm.incr_restart
flash["notice"] = "'#{vm.name}' will be restarted in a few seconds"
r.redirect "#{@project.path}#{vm.path}"
end
end
# 204 response for invalid names
r.is String do |vm_name|
r.post { vm_post(vm_name) }
r.delete do
204
end
end
end
end