glusterfs

Форк
0
/
getvolfile.py 
45 строк · 1.3 Кб
1
#!/usr/bin/python3
2

3
from __future__ import print_function
4
import ctypes
5
import ctypes.util
6

7
api = ctypes.CDLL("libgfapi.so")
8
api.glfs_get_volfile.argtypes = [ctypes.c_void_p,
9
                                 ctypes.c_void_p,
10
                                 ctypes.c_ulong]
11
api.glfs_get_volfile.restype = ctypes.c_long
12

13

14
def get_volfile(host, volume):
15
    # This is set to a large value to exercise the "buffer not big enough"
16
    # path.  More realistically, you'd just start with a huge buffer.
17
    BUF_LEN = 0
18
    fs = api.glfs_new(volume)
19
    # api.glfs_set_logging(fs,"/dev/stderr",7)
20
    api.glfs_set_volfile_server(fs, "tcp", host, 24007)
21
    api.glfs_init(fs)
22
    vbuf = ctypes.create_string_buffer(BUF_LEN)
23
    vlen = api.glfs_get_volfile(fs, vbuf, BUF_LEN)
24
    if vlen < 0:
25
        vlen = BUF_LEN - vlen
26
        vbuf = ctypes.create_string_buffer(vlen)
27
        vlen = api.glfs_get_volfile(fs, vbuf, vlen)
28
    api.glfs_fini(fs)
29
    if vlen <= 0:
30
        return vlen
31
    return vbuf.value[:vlen]
32

33
if __name__ == "__main__":
34
    import sys
35

36
    try:
37
        res = get_volfile(*sys.argv[1:3])
38
    except:
39
        print("fetching volfile failed (volume not started?)")
40

41
    try:
42
        for line in res.split('\n'):
43
            print(line)
44
    except:
45
        print("bad return value %s" % res)
46

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.