Starting with Rocks 5.4, file specific plugins have been introduced into the 411 system. These plugins manipulate the content of files before sending files on the frontend, and after reception of the file on the client nodes. The plugins also mangle name of the file, ownership and mode of the file.
The 411 Plugin architecture follows a very simple API. Each plugin is
written in Python and the plugins reside in /opt/rocks/var/plugins/411/. All plugins inherit the
rocks.service411.Plugin
class.
get_filename
:This function returns
a the filename on the frontend on which this plugin will function. This
is the only required function in the plugin. All other functions are
optional.
import os import sys import stat import rocks.service411 class Plugin(rocks.service411.Plugin): def get_filename(self): return '/etc/auto.master' |
filter_name
: This function mangles
the filename of the file at the destination, and returns the
mangled name
def filter_name(self, fname): if fname == '/etc/auto.master' && self.attrs['os'] == 'sunos': return '/etc/auto_master' |
filter_owner
: This function takes the Owner
UID and group ID of the file as a string argument and returns a mangled
version of the "UID.GID" string. This string is in the format that the
chown command understands.
def filter_owner(self, oid): if self.attrs['os'] == 'linux': return oid if self.attrs['os'] == 'sunos': return '0.0' |
filter_mode
: This function takes
the mode information as a string, and returns a mangled mode information
string. This should be in the numerical format that the
chmod command understands.
def filter_mode(self, mode): return '010644' |
filter_content
: This function takes
the contents of the file as a string, manipulates it and returns the
final string to be stored in the file. The example below illustrates
insertion of a blank line between every line of the input content.
pre_send
: This function manipulates
the contents of the file before the file is made available for download
over 411. The example below illustrates deletion of all blank lines
from the content.
post
: This function is run after
the file is received, filtered and written to disk. The example below
illustrates restarting the autofs service after a file has been written to
disk.