Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 47 additions & 0 deletions app/controllers/api/container_volumes_controller.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,51 @@
module Api
class ContainerVolumesController < BaseController
def attach_resource(type, id, data = {})
api_resource(type, id, "Attaching Resource to") do |container_volume|
vm_id = data["vm_id"] || params[:c_id]
raise BadRequestError, "Must specify a vm_id" if vm_id.blank?

pvc_name = data["pvc_name"] || params.dig(:resource, :pvc_name)
volume_name = data["volume_name"] || params.dig(:resource, :volume_name)

vm = resource_search(vm_id, :vms)

unless vm.supports?(:attach)
raise BadRequestError, "VM does not support attach"
end

{:task_id => container_volume.attach_volume_queue(User.current_userid, vm, pvc_name, volume_name)}
end
rescue => err
action_result(false, err.to_s)
end

def create_and_attach_volume_resource(type, id, data = {})
api_resource(type, id, "Attaching Resource to") do |container_volume|
vm_id = data["vm_id"] || params[:c_id]
raise BadRequestError, "Must specify a vm_id" if vm_id.blank?
vm = resource_search(vm_id, :vms)

unless vm.supports?(:attach)
raise BadRequestError, "VM does not support attach"
end

{:task_id => container_volume.create_pvc_queue(User.current_userid, vm, data)}
end
rescue => err
action_result(false, err.to_s)
end

def detach_resource(type, id, data = {})
api_resource(type, id, "Detaching Resource to") do |container_volume|
vm_id = data["vm_id"] || params[:c_id]
raise BadRequestError, "Must specify a vm_id" if data["vm_id"].blank?
volume_name = data["volume_name"] || params.dig(:resource, :volume_name)
vm = resource_search(vm_id, :vms)
{:task_id => container_volume.detach_volume_queue(User.current_userid, vm, volume_name)}
end
rescue => err
action_result(false, err.to_s)
end
end
end
9 changes: 8 additions & 1 deletion config/api.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1211,7 +1211,7 @@
:description: Container Volumes
:identifier: persistent_volume
:klass: ContainerVolume
:verbs: *gp
:verbs: *gpppd
:options:
- :collection
- :custom_actions
Expand All @@ -1226,6 +1226,13 @@
:get:
- :name: read
:identifier: persistent_volume_show
:post:
- :name: attach
:identifier: vm_common_add_volume
- :name: create_and_attach_volume
:identifier: vm_common_add_volume
- :name: detach
:identifier: vm_common_remove_volume
:containers:
:description: Containers
:identifier: container
Expand Down
Loading