class Group(Resource): action = ForcedListArgument(default="create") group_name = ResourceArgument(default=lambda obj: obj.name) gid = ResourceArgument() password = ResourceArgument() actions = Resource.actions + ["create", "remove"]
class Directory(Resource): action = ForcedListArgument(default="create") path = ResourceArgument(default=lambda obj: obj.name) mode = ResourceArgument() owner = ResourceArgument() group = ResourceArgument() follow = BooleanArgument(default=True) # follow links? """ this works for 'create', 'delete' is anyway recursive recursive means only "mkdir -p", it does NOT perform recursive chown/chmod """ recursive = BooleanArgument(default=False) """ Grants x-bit for all the folders up-to the directory u - user who is owner g - user from group o - other users a - all The letters can be combined together. """ cd_access = ResourceArgument() actions = Resource.actions + ["create", "delete"]
class Msi(Resource): action = ForcedListArgument(default="install") msi_name = ResourceArgument(default=lambda obj: obj.name) http_source = ResourceArgument(default=None) dict_args = ResourceArgument(default={}) list_args = ResourceArgument(default={}) actions = Resource.actions + ["install", "uninstall"]
class Directory(Resource): action = ForcedListArgument(default="create") path = ResourceArgument(default=lambda obj: obj.name) mode = ResourceArgument() owner = ResourceArgument() group = ResourceArgument() follow = BooleanArgument(default=True) # follow links? recursive = BooleanArgument( default=False) # this work for 'create', 'delete' is anyway recursive recursive_permission = BooleanArgument( default=False ) # sets given perms to all non-existent folders which are created recursively """ Grants x-bit for all the folders up-to the directory u - user who is owner g - user from group o - other users a - all The letters can be combined together. """ cd_access = ResourceArgument() actions = Resource.actions + ["create", "delete"]
class Package(Resource): action = ForcedListArgument(default="install") package_name = ResourceArgument(default=lambda obj: obj.name) location = ResourceArgument(default=lambda obj: obj.package_name) version = ResourceArgument() actions = ["install", "upgrade", "remove"] build_vars = ForcedListArgument(default=[])
class Link(Resource): action = ForcedListArgument(default="create") path = ResourceArgument(default=lambda obj: obj.name) to = ResourceArgument(required=True) hard = BooleanArgument(default=False) actions = Resource.actions + ["create", "delete"]
class Repository(Resource): action = ForcedListArgument(default="create") repo_id = ResourceArgument(default=lambda obj: obj.name) base_url = ResourceArgument() mirror_list = ResourceArgument() repo_file_name = ResourceArgument() actions = Resource.actions + ["create", "remove"]
class Directory(Resource): action = ForcedListArgument(default="create") path = ResourceArgument(default=lambda obj: obj.name) mode = ResourceArgument() owner = ResourceArgument() group = ResourceArgument() recursive = BooleanArgument(default=False) # this work for 'create', 'delete' is anyway recursive actions = Resource.actions + ["create", "delete"]
class Repository(Resource): action = ForcedListArgument(default="create") repo_id = ResourceArgument(default=lambda obj: obj.name) base_url = ResourceArgument() mirror_list = ResourceArgument() repo_file_name = ResourceArgument() repo_template = ResourceArgument() components = ForcedListArgument(default=[]) # ubuntu specific actions = Resource.actions + ["create","remove"]
class ServiceConfig(Resource): action = ForcedListArgument(default="install") service_name = ResourceArgument(default=lambda obj: obj.name) display_name = ResourceArgument() description = ResourceArgument() start_type = ResourceArgument() #exe_path = ResourceArgument() #arguments = ResourceArgument() username = ResourceArgument() password = PasswordArgument() actions = ["nothing", "install", "configure", "change_user", "uninstall"]
class Repository(Resource): action = ForcedListArgument(default="prepare") repo_id = ResourceArgument(default=lambda obj: obj.name) base_url = ResourceArgument() mirror_list = ResourceArgument() repo_file_name = ResourceArgument() repo_template = ResourceArgument() components = ForcedListArgument(default=[]) # ubuntu specific """ 'prepare' action only adds repositories information into memory. 'create' action writes prepared repositories into file (possibly multiple repos into single file) """ actions = Resource.actions + ["prepare", "create", "remove"]
class Package(Resource): action = ForcedListArgument(default="install") package_name = ResourceArgument(default=lambda obj: obj.name) location = ResourceArgument(default=lambda obj: obj.package_name) # Allow using only specific list of repositories when performing action use_repos = ResourceArgument(default=[]) skip_repos = ResourceArgument(default=[]) """ True - log it in INFO mode False - never log it None (default) - log it in DEBUG mode """ logoutput = ResourceArgument(default=None) """ Retry if package manager is locked or unavailable. Note that retry_on_lock works only for apt-get and zypper, while yum manages lock retries itself. """ retry_count = ResourceArgument(default=4) retry_sleep = ResourceArgument(default=30) retry_on_repo_unavailability = BooleanArgument(default=False) retry_on_locked = BooleanArgument(default=True) version = ResourceArgument() actions = ["install", "upgrade", "remove"] build_vars = ForcedListArgument(default=[]) """ False - also remove any packages that depend on the one being removed True - possibly break dependencies by keeping them installed """ ignore_dependencies = BooleanArgument(default=False)
class CopyFromLocal(Resource): action = ForcedListArgument(default="run") path = ResourceArgument(default=lambda obj: obj.name) dest_dir = ResourceArgument(required=True) dest_file = ResourceArgument() owner = ResourceArgument(required=True) group = ResourceArgument() mode = ResourceArgument() kinnit_if_needed = ResourceArgument(default='') hadoop_conf_dir = ResourceArgument(default='/etc/hadoop/conf') hdfs_user = ResourceArgument(default='hdfs') hadoop_bin_dir = ResourceArgument(default='/usr/bin') actions = Resource.actions + ["run"]
class Package(Resource): action = ForcedListArgument(default="install") package_name = ResourceArgument(default=lambda obj: obj.name) location = ResourceArgument(default=lambda obj: obj.package_name) # Allow using only specific list of repositories when performing action use_repos = ResourceArgument(default=[]) """ True - log it in INFO mode False - never log it None (default) - log it in DEBUG mode """ logoutput = ResourceArgument(default=None) version = ResourceArgument() actions = ["install", "upgrade", "remove"] build_vars = ForcedListArgument(default=[])
class ExecuteHDFS(Resource): action = ForcedListArgument(default="run") command = ResourceArgument(default=lambda obj: obj.name) tries = ResourceArgument(default=1) try_sleep = ResourceArgument(default=0) user = ResourceArgument() logoutput = ResourceArgument() bin_dir = ResourceArgument(default=[]) environment = ResourceArgument(default={}) conf_dir = ResourceArgument() actions = Resource.actions + ["run"]
class XmlConfig(Resource): action = ForcedListArgument(default="create") filename = ResourceArgument(default=lambda obj: obj.name) configurations = ResourceArgument() configuration_attributes = ResourceArgument() conf_dir = ResourceArgument() mode = ResourceArgument() owner = ResourceArgument() group = ResourceArgument() xml_include_file = ResourceArgument() encoding = ResourceArgument(default="UTF-8") actions = Resource.actions + ["create"]
class Execute(Resource): action = ForcedListArgument(default="run") """ Recommended: command = ('rm','-f','myfile') Not recommended: command = 'rm -f myfile' The first one helps to stop escaping issues """ command = ResourceArgument(default=lambda obj: obj.name) creates = ResourceArgument() cwd = ResourceArgument() # this runs command with a specific env variables, env={'JAVA_HOME': '/usr/jdk'} environment = ResourceArgument() user = ResourceArgument() group = ResourceArgument() returns = ForcedListArgument(default=0) tries = ResourceArgument(default=1) try_sleep = ResourceArgument(default=0) # seconds path = ForcedListArgument(default=[]) actions = Resource.actions + ["run"] logoutput = BooleanArgument(default=False) """ if on_timeout is not set leads to failing after x seconds, otherwise calls on_timeout """ timeout = ResourceArgument() # seconds on_timeout = ResourceArgument() """ Wait for command to finish or not. NOTE: In case of False, since any command results are skipped, it disables some functionality: - non-zero return code failure - logoutput - tries - try_sleep """ wait_for_finish = BooleanArgument(default=True)
class ExecuteHadoop(Resource): action = ForcedListArgument(default="run") command = ResourceArgument(default=lambda obj: obj.name) tries = ResourceArgument(default=1) try_sleep = ResourceArgument(default=0) # seconds user = ResourceArgument() logoutput = ResourceArgument() bin_dir = ResourceArgument(default=[]) # appended to $PATH environment = ResourceArgument(default={}) conf_dir = ResourceArgument() actions = Resource.actions + ["run"]
class File(Resource): action = ForcedListArgument(default="create") path = ResourceArgument(default=lambda obj: obj.name) backup = ResourceArgument() mode = ResourceArgument() owner = ResourceArgument() group = ResourceArgument() content = ResourceArgument() # whether to replace files with different content replace = ResourceArgument(default=True) encoding = ResourceArgument() actions = Resource.actions + ["create", "delete"]
class ExecuteHadoop(Resource): action = ForcedListArgument(default="run") command = ResourceArgument(default=lambda obj: obj.name) kinit_override = BooleanArgument(default=False) tries = ResourceArgument(default=1) try_sleep = ResourceArgument(default=0) # seconds user = ResourceArgument() logoutput = BooleanArgument(default=False) principal = ResourceArgument(default=lambda obj: obj.user) bin_dir = ResourceArgument(default=[]) # appended to $PATH conf_dir = ResourceArgument() security_enabled = BooleanArgument(default=False) keytab = ResourceArgument() kinit_path_local = ResourceArgument() actions = Resource.actions + ["run"]
class PropertiesFile(Resource): action = ForcedListArgument(default="create") filename = ResourceArgument(default=lambda obj: obj.name) properties = ResourceArgument() dir = ResourceArgument() mode = ResourceArgument() owner = ResourceArgument() group = ResourceArgument() key_value_delimiter = ResourceArgument(default="=") encoding = ResourceArgument(default="UTF-8") actions = Resource.actions + ["create"]
class HdfsDirectory(Resource): action = ForcedListArgument() dir_name = ResourceArgument(default=lambda obj: obj.name) owner = ResourceArgument() group = ResourceArgument() mode = ResourceArgument() recursive_chown = BooleanArgument(default=False) recursive_chmod = BooleanArgument(default=False) conf_dir = ResourceArgument() security_enabled = BooleanArgument(default=False) keytab = ResourceArgument() kinit_path_local = ResourceArgument() hdfs_user = ResourceArgument() bin_dir = ResourceArgument(default="") #action 'create' immediately creates all pending directory in efficient manner #action 'create_delayed' add directory to list of pending directories actions = Resource.actions + ["create", "create_delayed"]
class User(Resource): action = ForcedListArgument(default="create") username = ResourceArgument(default=lambda obj: obj.name) comment = ResourceArgument() uid = ResourceArgument() gid = ResourceArgument() groups = ForcedListArgument(default=[]) # supplementary groups home = ResourceArgument() shell = ResourceArgument() password = ResourceArgument() system = BooleanArgument(default=False) actions = Resource.actions + ["create", "remove"]
class ExecuteScript(Resource): action = ForcedListArgument(default="run") code = ResourceArgument(required=True) cwd = ResourceArgument() environment = ResourceArgument() interpreter = ResourceArgument(default="/bin/bash") user = ResourceArgument() group = ResourceArgument() actions = Resource.actions + ["run"]
class TemplateConfig(Resource): action = ForcedListArgument(default="create") path = ResourceArgument(default=lambda obj: obj.name) mode = ResourceArgument() owner = ResourceArgument() group = ResourceArgument() template_tag = ResourceArgument() extra_imports = ResourceArgument(default=[]) actions = Resource.actions + ["create"]
class Service(Resource): action = ForcedListArgument(default="start") service_name = ResourceArgument(default=lambda obj: obj.name) #enabled = ResourceArgument() # Maybe add support to put in/out autostart. start_command = ResourceArgument() stop_command = ResourceArgument() restart_command = ResourceArgument() reload_command = ResourceArgument() # reload the config file without interrupting pending operations status_command = ResourceArgument() actions = ["nothing", "start", "stop", "restart", "reload"]
class Mount(Resource): action = ForcedListArgument(default="mount") mount_point = ResourceArgument(default=lambda obj: obj.name) device = ResourceArgument() fstype = ResourceArgument() options = ResourceArgument(default=["defaults"]) dump = ResourceArgument(default=0) passno = ResourceArgument(default=2) actions = Resource.actions + ["mount", "umount", "remount", "enable", "disable"]
class ModifyPropertiesFile(Resource): action = ForcedListArgument(default="create") filename = ResourceArgument(default=lambda obj: obj.name) properties = ResourceArgument() mode = ResourceArgument() owner = ResourceArgument() group = ResourceArgument() key_value_delimiter = ResourceArgument(default='=') comment_symbols = ForcedListArgument(default=['#']) encoding = ResourceArgument(default='utf-8') actions = Resource.actions + ["create"]
class PropertiesFile(Resource): action = ForcedListArgument(default="create") filename = ResourceArgument(default=lambda obj: obj.name) properties = ResourceArgument() dir = ResourceArgument() mode = ResourceArgument() owner = ResourceArgument() group = ResourceArgument() actions = Resource.actions + ["create"]
class XmlConfig(Resource): action = ForcedListArgument(default="create") filename = ResourceArgument(default=lambda obj: obj.name) configurations = ResourceArgument() conf_dir = ResourceArgument() mode = ResourceArgument() owner = ResourceArgument() group = ResourceArgument() actions = Resource.actions + ["create"]