def volumeStatvfs(volumeName, host=GLUSTER_VOL_HOST, port=GLUSTER_VOL_PORT, protocol=GLUSTER_VOL_PROTOCOL): module = "vdsm.gluster.gfapi" command = [sys.executable, '-m', module, '-v', volumeName, '-p', str(port), '-H', host, '-t', protocol, '-c', 'statvfs'] # to include /usr/share/vdsm in python path env = os.environ.copy() env['PYTHONPATH'] = "%s:%s" % ( env.get("PYTHONPATH", ""), constants.P_VDSM) env['PYTHONPATH'] = ":".join(map(os.path.abspath, env['PYTHONPATH'].split(":"))) rc, out, err = commands.execCmd(command, raw=True, env=env) if rc != 0: raise ge.GlfsStatvfsException(rc, [out], [err]) res = json.loads(out) return os.statvfs_result((res['f_bsize'], res['f_frsize'], res['f_blocks'], res['f_bfree'], res['f_bavail'], res['f_files'], res['f_ffree'], res['f_favail'], res['f_flag'], res['f_namemax']))
def volumeStatvfsGet(volumeId, host=GLUSTER_VOL_HOST, port=GLUSTER_VOL_PORT, protocol=GLUSTER_VOL_PROTOCOL): statvfsdata = StatVfsStruct() fs = glfsInit(volumeId, host, port, protocol) rc = _glfs_statvfs(fs, GLUSTER_VOL_PATH, ctypes.byref(statvfsdata)) if rc != 0: raise ge.GlfsStatvfsException(rc=rc) glfsFini(fs, volumeId) # To convert to os.statvfs_result we need to pass tuple/list in # following order: bsize, frsize, blocks, bfree, bavail, files, # ffree, favail, flag, namemax return os.statvfs_result((statvfsdata.f_bsize, statvfsdata.f_frsize, statvfsdata.f_blocks, statvfsdata.f_bfree, statvfsdata.f_bavail, statvfsdata.f_files, statvfsdata.f_ffree, statvfsdata.f_favail, statvfsdata.f_flag, statvfsdata.f_namemax))