1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
|
import time
import atfutils
import glusterutils
def wait_till_selfheal_completes(timeout):
"""
Wait for selfheal to Complete
"""
time.sleep(timeout)
selfheal_completion_status = 0
return selfheal_completion_status
def wait_till_brick_reboot(timeout):
"""
Wait for brick to reboot
"""
time.sleep(timeout)
reboot_completion_status = 0
return reboot_completion_status
def set_read_subvolume(from_server, subvolumeid):
"""
Parameters:
from_server: volume set read-subvolume will be executed on 'from_server'
subvolumeid (Ex: client-0)
"""
output = atfutils.get_new_output_obj()
active_volume = atfutils.get_active_volume()
if active_volume is None:
output["exitstatus"] = 1
return output
volumename = active_volume.volumename
subvolume = "-".join([volumename, subvolumeid])
output = glusterutils.volume_set(from_server,
key="cluster.read-subvolume",
value=subvolume)
return output
def disable_self_heal(from_server, *types):
"""
Parameters:
from_server: volume self-heal off will be executed on 'from_server'
*type : type of self heal (it can be data, entry, metadata)
Usage:
disable_self_heal("server1", data)
disable_self_heal("server1", data, entry)
disable_self_heal("server1", data, metadata)
disable_self_heal("server1", entry, metadata)
disable_self_heal("server1", data, entry, metadata)
"""
output = atfutils.get_new_output_obj()
selfheal = {
'data' : 'cluster.data-self-heal',
'entry' : 'cluster.entry-self-heal',
'metadata' : 'cluster.metadata-self-heal'
}
for _type in types:
if selfheal.has_key(_type):
output = glusterutils.volume_set(from_server, key=selfheal[_type],
value="off")
assert_success_status = atfutils.assert_success(output["exitstatus"])
if assert_success_status is not 0:
return output
if output['exitstatus'] is None:
output['exitstatus'] = 1
output['stderrdata'] = "Unable to Disable self-heal %s" % str(types)
else:
output['exitstatus'] = 0
output['stdoutdata'] = "Successfully Disabled self-healed %s" % str(types)
return output
def setup_testenv_gfid_heal():
"""
"""
output = glusterutils.glusterd_start_allservers(force=True)
assert_success_status = atfutils.assert_success(output["exitstatus"])
if assert_success_status is not 0:
return assert_success_status
output = glusterutils.create_brick_allservers()
assert_success_status = atfutils.assert_success(output["exitstatus"])
if assert_success_status is not 0:
return assert_success_status
return 0
def create_volume_gfid_heal(from_server):
"""
"""
output = glusterutils.peer_probe(from_server)
assert_success_status = atfutils.assert_success(output["exitstatus"])
if assert_success_status is not 0:
return assert_success_status
output = glusterutils.volume_create(from_server)
assert_success_status = atfutils.assert_success(output["exitstatus"])
if assert_success_status is not 0:
return assert_success_status
output = glusterutils.volume_set(from_server, key="self-heal-daemon",
value="off")
assert_success_status = atfutils.assert_success(output["exitstatus"])
if assert_success_status is not 0:
return assert_success_status
glusterutils.volume_set(from_server, key="diagnostics.client-log-level",
value="DEBUG")
glusterutils.volume_set(from_server, key="diagnostics.brick-log-level",
value="DEBUG")
return 0
|