Class: OsCtld::Commands::Group::DeviceDel

Inherits:
Logged
  • Object
show all
Includes:
OsCtl::Lib::Utils::Log, Utils::Devices
Defined in:
lib/osctld/commands/group/device_delete.rb

Instance Attribute Summary

Attributes inherited from Base

#client, #client_handler, #id, #opts

Instance Method Summary collapse

Methods included from Utils::Devices

#add, #check_mode!, #chmod, #inherit, #list, #promote, #replace, #set_inherit, #unset_inherit

Methods inherited from Logged

#base_execute

Methods inherited from Base

#base_execute, #call_cmd, #call_cmd!, cmd, #error, #error!, handle, #handled, #indirect?, #initialize, #manipulate, #manipulation_holder, #ok, #progress, #request_stop, run, run!

Constructor Details

This class inherits a constructor from OsCtld::Commands::Base

Instance Method Details

#execute(grp) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/osctld/commands/group/device_delete.rb', line 15

def execute(grp)
  manipulate(grp) do
    dev = grp.devices.find(opts[:type].to_sym, opts[:major], opts[:minor])
    error!('device not found') unless dev

    if dev.inherited?
      error!('inherited devices cannot be removed, use chmod to restrict access')

    elsif !opts[:recursive] && grp.devices.used_by_descendants?(dev)
      error!('device is used by child groups/containers, use recursive mode')
    end

    grp.devices.remove_recursive(dev)
    ok
  end
end

#findObject



10
11
12
13
# File 'lib/osctld/commands/group/device_delete.rb', line 10

def find
  grp = DB::Groups.find(opts[:name], opts[:pool])
  grp || error!('group not found')
end