def __init__(self, path, mode=None, user_owner=None, group_owner=None, facl_rules=None,<EOL>selinux_context=None, selinux_user=None,<EOL>selinux_role=None, selinux_type=None, selinux_range=None):
if selinux_context and any([selinux_user, selinux_role, selinux_type, selinux_range]):<EOL><INDENT>raise ConuException("<STR_LIT>")<EOL><DEDENT>if any([selinux_context, selinux_user, selinux_role, selinux_type, selinux_range]):<EOL><INDENT>if is_selinux_disabled():<EOL><INDENT>raise ConuException("<STR_LIT>"<EOL>"<STR_LIT>")<EOL><DEDENT><DEDENT>self._initialized = False<EOL>self.path = path<EOL>self.mode = mode<EOL>self.selinux_context = selinux_context<EOL>self.selinux_user = selinux_user<EOL>self.selinux_role = selinux_role<EOL>self.selinux_type = selinux_type<EOL>self.selinux_range = selinux_range<EOL>self.facl_rules = facl_rules<EOL>if isinstance(user_owner, six.string_types):<EOL><INDENT>try:<EOL><INDENT>self.owner = pwd.getpwnam(user_owner)[<NUM_LIT:2>]<EOL><DEDENT>except KeyError as ex:<EOL><INDENT>raise ConuException("<STR_LIT>" % (user_owner, ex))<EOL><DEDENT><DEDENT>else:<EOL><INDENT>self.owner = user_owner<EOL><DEDENT>if isinstance(group_owner, six.string_types):<EOL><INDENT>try:<EOL><INDENT>self.group = pwd.getpwnam(group_owner)[<NUM_LIT:3>]<EOL><DEDENT>except KeyError as ex:<EOL><INDENT>raise ConuException("<STR_LIT>" % (group_owner, ex))<EOL><DEDENT><DEDENT>else:<EOL><INDENT>self.group = group_owner<EOL><DEDENT>
For more info on SELinux, please see `$ man chcon`. An exception will be thrown if
selinux_context is specified and at least one of other SELinux fields.

:param path: str, path to the directory we will operate on
:param mode: int, octal representation of permission bits, e.g. 0o0400
:param user_owner: str or int, uid or username to own the directory
:param group_owner: str or int, gid or group name to own the directory
:param facl_rules: list of str, file ACLs to apply, e.g. "u:26:rwx"
:param selinux_context: str, set directory to this SELinux context (this is the full
        context with all the field, example: "system_u:object_r:unlabeled_t:s0")
:param selinux_user: str, user in the target security context, e.g. "system_u"
:param selinux_role: str, role in the target security context, e.g. "object_r"
:param selinux_type: str, type in the target security context, e.g. "unlabeled_t"
:param selinux_range: str, range in the target security context, e.g. "s0"