1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157
|
require 'puppet/type/parsedtype'
module Puppet
newtype(:mount) do
# Use the normal parent class, because we actually want to
# call code when sync() is called.
newstate(:ensure) do
desc "Control what to do with this mount. If the value is
``present``, the mount is entered into the mount table,
but not mounted, if it is ``absent``, the entry is removed
from the mount table and the filesystem is unmounted if
currently mounted, if it is ``mounted``, the filesystem
is entered into the mount table and mounted."
newvalue(:present) do
if provider.mounted?
provider.unmount
return :mount_unmounted
else
provider.create
return :mount_created
end
end
aliasvalue :unmounted, :present
newvalue(:absent, :event => :mount_deleted) do
if provider.mounted?
provider.unmount
end
provider.destroy
end
newvalue(:mounted, :event => :mount_mounted) do
# Create the mount point if it does not already exist.
if self.is == :absent or self.is.nil?
provider.create
end
# We have to flush any changes to disk.
@parent.flush
provider.mount
end
defaultto do
if @parent.managed?
:mounted
else
nil
end
end
def retrieve
if provider.mounted?
@is = :mounted
else
@is = super()
end
end
end
newstate(:device) do
desc "The device providing the mount. This can be whatever
device is supporting by the mount, including network
devices or devices specified by UUID rather than device
path, depending on the operating system."
end
# Solaris specifies two devices, not just one.
newstate(:blockdevice) do
desc "The the device to fsck. This is state is only valid
on Solaris, and in most cases will default to the correct
value."
# Default to the device but with "dsk" replaced with "rdsk".
defaultto do
if Facter["operatingsystem"].value == "Solaris"
device = @parent.value(:device)
if device =~ %r{/dsk/}
device.sub(%r{/dsk/}, "/rdsk/")
else
nil
end
else
nil
end
end
end
newstate(:fstype) do
desc "The mount type. Valid values depend on the
operating system."
end
newstate(:options) do
desc "Mount options for the mounts, as they would
appear in the fstab."
end
newstate(:pass) do
desc "The pass in which the mount is checked."
end
newstate(:atboot) do
desc "Whether to mount the mount at boot. Not all platforms
support this."
end
newstate(:dump) do
desc "Whether to dump the mount. Not all platforms
support this."
end
newstate(:target) do
desc "The file in which to store the mount table. Only used by
those providers that write to disk (i.e., not NetInfo)."
defaultto { if @parent.class.defaultprovider.ancestors.include?(Puppet::Provider::ParsedFile)
@parent.class.defaultprovider.default_target
else
nil
end
}
end
newparam(:name) do
desc "The mount path for the mount."
isnamevar
end
newparam(:path) do
desc "The deprecated name for the mount point. Please use ``name`` now."
def should=(value)
warning "'path' is deprecated for mounts. Please use 'name'."
@parent[:name] = value
super
end
end
@doc = "Manages mounted mounts, including putting mount
information into the mount table. The actual behavior depends
on the value of the 'ensure' parameter."
def value(name)
name = symbolize(name)
ret = nil
if state = @states[name]
return state.value
end
end
end
end
# $Id: mount.rb 1878 2006-11-13 09:46:15Z luke $
|