@ -319,15 +319,7 @@ class AnsibleModule(object):
st = os . stat ( filename )
st = os . stat ( filename )
uid = st . st_uid
uid = st . st_uid
gid = st . st_gid
gid = st . st_gid
try :
return ( uid , gid )
user = pwd . getpwuid ( uid ) [ 0 ]
except KeyError :
user = str ( uid )
try :
group = grp . getgrgid ( gid ) [ 0 ]
except KeyError :
group = str ( gid )
return ( user , group )
def set_default_selinux_context ( self , path , changed ) :
def set_default_selinux_context ( self , path , changed ) :
if not HAVE_SELINUX or not self . selinux_enabled ( ) :
if not HAVE_SELINUX or not self . selinux_enabled ( ) :
@ -366,8 +358,7 @@ class AnsibleModule(object):
path = os . path . expanduser ( path )
path = os . path . expanduser ( path )
if owner is None :
if owner is None :
return changed
return changed
user , group = self . user_and_group ( path )
orig_uid , orig_gid = self . user_and_group ( path )
if owner != user :
try :
try :
uid = int ( owner )
uid = int ( owner )
except ValueError :
except ValueError :
@ -377,6 +368,7 @@ class AnsibleModule(object):
self . fail_json ( path = path , msg = ' chown failed: failed to look up user %s ' % owner )
self . fail_json ( path = path , msg = ' chown failed: failed to look up user %s ' % owner )
if self . check_mode :
if self . check_mode :
return True
return True
if orig_uid != uid :
try :
try :
os . chown ( path , uid , - 1 )
os . chown ( path , uid , - 1 )
except OSError :
except OSError :
@ -388,10 +380,7 @@ class AnsibleModule(object):
path = os . path . expanduser ( path )
path = os . path . expanduser ( path )
if group is None :
if group is None :
return changed
return changed
old_user , old_group = self . user_and_group ( path )
orig_uid , orig_gid = self . user_and_group ( path )
if old_group != group :
if self . check_mode :
return True
try :
try :
gid = int ( group )
gid = int ( group )
except ValueError :
except ValueError :
@ -399,6 +388,9 @@ class AnsibleModule(object):
gid = grp . getgrnam ( group ) . gr_gid
gid = grp . getgrnam ( group ) . gr_gid
except KeyError :
except KeyError :
self . fail_json ( path = path , msg = ' chgrp failed: failed to look up group %s ' % group )
self . fail_json ( path = path , msg = ' chgrp failed: failed to look up group %s ' % group )
if self . check_mode :
return True
if orig_gid != gid :
try :
try :
os . chown ( path , - 1 , gid )
os . chown ( path , - 1 , gid )
except OSError :
except OSError :
@ -478,7 +470,17 @@ class AnsibleModule(object):
if path is None :
if path is None :
return kwargs
return kwargs
if os . path . exists ( path ) :
if os . path . exists ( path ) :
( user , group ) = self . user_and_group ( path )
( uid , gid ) = self . user_and_group ( path )
kwargs [ ' uid ' ] = uid
kwargs [ ' gid ' ] = gid
try :
user = pwd . getpwuid ( uid ) [ 0 ]
except KeyError :
user = str ( uid )
try :
group = grp . getgrgid ( gid ) [ 0 ]
except KeyError :
group = str ( gid )
kwargs [ ' owner ' ] = user
kwargs [ ' owner ' ] = user
kwargs [ ' group ' ] = group
kwargs [ ' group ' ] = group
st = os . stat ( path )
st = os . stat ( path )