Class: Lxc::Storage::VirtualDevice
- Inherits:
-
Object
- Object
- Lxc::Storage::VirtualDevice
- Includes:
- Helpers
- Defined in:
- lib/elecksee/storage/virtual_device.rb
Overview
Virtual device backed storage
Instance Attribute Summary collapse
-
#fs_type ⇒ String
readonly
File system to format (defaults ext4).
-
#name ⇒ String
readonly
Storage name (usually container name).
-
#size ⇒ Integer
readonly
Device size.
-
#tmp_dir ⇒ String
readonly
Path to temporary directory.
-
#tmp_fs ⇒ TrueClass, FalseClass
readonly
Use tmpfs.
Instance Method Summary collapse
-
#create ⇒ TrueClass, FalseClass
Create the storage.
-
#destroy ⇒ TrueClass
Destroy the storage device.
-
#device_path ⇒ String
Path to device.
-
#initialize(name, args = {}) ⇒ VirtualDevice
constructor
Create new instance.
-
#mount ⇒ TrueClass, FalseClass
Mount device.
-
#mount_path ⇒ String
(also: #target_path)
Path to mount.
-
#mounted? ⇒ TrueClass, FalseClass
Device currently mounted.
-
#unmount ⇒ TrueClass, FalseClass
Unmount device.
Methods included from Helpers
#child_process_command, #detect_home, #log, #mixlib_shellout_command, #run_command, #sudo
Constructor Details
#initialize(name, args = {}) ⇒ VirtualDevice
Create new instance
29 30 31 32 33 34 35 36 37 |
# File 'lib/elecksee/storage/virtual_device.rb', line 29 def initialize(name, args={}) @name = name @tmp_dir = args[:tmp_dir] || '/tmp/lxc/ephemerals' @size = args[:size] || 2000 @fs_type = args[:fs_type] || 'ext4' @tmp_fs = !!args[:tmp_fs] @fs_type = 'tmpfs' if @tmp_fs create end |
Instance Attribute Details
#fs_type ⇒ String (readonly)
Returns file system to format (defaults ext4).
19 20 21 |
# File 'lib/elecksee/storage/virtual_device.rb', line 19 def fs_type @fs_type end |
#name ⇒ String (readonly)
Returns storage name (usually container name).
11 12 13 |
# File 'lib/elecksee/storage/virtual_device.rb', line 11 def name @name end |
#size ⇒ Integer (readonly)
Returns device size.
15 16 17 |
# File 'lib/elecksee/storage/virtual_device.rb', line 15 def size @size end |
#tmp_dir ⇒ String (readonly)
Returns path to temporary directory.
13 14 15 |
# File 'lib/elecksee/storage/virtual_device.rb', line 13 def tmp_dir @tmp_dir end |
#tmp_fs ⇒ TrueClass, FalseClass (readonly)
Returns use tmpfs.
17 18 19 |
# File 'lib/elecksee/storage/virtual_device.rb', line 17 def tmp_fs @tmp_fs end |
Instance Method Details
#create ⇒ TrueClass, FalseClass
Create the storage
53 54 55 56 57 58 59 60 61 62 |
# File 'lib/elecksee/storage/virtual_device.rb', line 53 def create make_directories! unless(tmp_fs) command("dd if=/dev/zero of=#{@device_path} bs=1k seek=#{sive}k count=1 > /dev/null") command("echo \"y\" | mkfs -t #{fs_type} #{size} > /dev/null") true else false end end |
#destroy ⇒ TrueClass
Destroy the storage device
92 93 94 95 96 97 98 99 100 101 102 103 104 |
# File 'lib/elecksee/storage/virtual_device.rb', line 92 def destroy unmount unless(device_path == :none) File.delete(device_path) if File.file?(device_path) FileUtils.rm_rf(device_path) if File.directory?(device_path) end unless(mount_path == :none) if(File.directory?(mount_path)) FileUtils.rmdir(mount_path) end end true end |
#device_path ⇒ String
Returns path to device.
40 41 42 |
# File 'lib/elecksee/storage/virtual_device.rb', line 40 def device_path tmp_fs ? :none : File.join(tmp_dir, 'virt-imgs', name) end |
#mount ⇒ TrueClass, FalseClass
Returns mount device.
70 71 72 73 74 75 76 77 |
# File 'lib/elecksee/storage/virtual_device.rb', line 70 def mount unless(mounted?) command("mount -t #{fs_type}#{} #{device_path} #{mount_path}", :sudo => true) true else false end end |
#mount_path ⇒ String Also known as: target_path
Returns path to mount.
45 46 47 |
# File 'lib/elecksee/storage/virtual_device.rb', line 45 def mount_path File.join(tmp_dir, 'virt-mnts', name) end |
#mounted? ⇒ TrueClass, FalseClass
Returns device currently mounted.
65 66 67 |
# File 'lib/elecksee/storage/virtual_device.rb', line 65 def mounted? command("mount").stdout.include?(mount_path) end |
#unmount ⇒ TrueClass, FalseClass
Returns unmount device.
80 81 82 83 84 85 86 87 |
# File 'lib/elecksee/storage/virtual_device.rb', line 80 def unmount if(mounted?) command("umount #{mount_path}", :sudo => true) true else false end end |