Skip to content

Commit 502b3b0

Browse files
committed
feat(linstor-manager): add support for custom drbd sync options
Signed-off-by: Antoine Bartuccio <antoine.bartuccio@vates.tech>
1 parent d7cd0b1 commit 502b3b0

File tree

1 file changed

+50
-2
lines changed

1 file changed

+50
-2
lines changed

drivers/linstor-manager

Lines changed: 50 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -920,6 +920,50 @@ def get_drbd_openers(session, args):
920920
util.SMlog('linstor-manager:get_drbd_openers error: {}'.format(e))
921921
raise
922922

923+
def drbd_properties(session, args):
924+
group_name = args['groupName']
925+
926+
linstor = LinstorVolumeManager(
927+
get_controller_uri(),
928+
group_name,
929+
logger=util.SMlog
930+
)
931+
932+
return str(
933+
linstor._linstor.resource_group_list_raise(
934+
filter_by_resource_groups=[linstor._group_name]
935+
).data_v1[0]['props']
936+
)
937+
938+
939+
def drbd_properties_set(session, args):
940+
allowed = [
941+
'c-min-rate',
942+
'c-max-rate',
943+
'resync-rate',
944+
'c-plan-ahead',
945+
]
946+
group_name = args['groupName']
947+
properties = {arg: args[arg] for arg in allowed if args.get(arg) is not None}
948+
949+
set_properties = {f"DrbdOptions/PeerDevice/{name}": f"{int(value)}" for name, value in properties.items() if value != ''}
950+
del_properties = [f"DrbdOptions/PeerDevice/{name}" for name, value in properties.items() if value == '']
951+
952+
linstor = LinstorVolumeManager(
953+
get_controller_uri(),
954+
group_name,
955+
logger=util.SMlog
956+
)
957+
958+
util.SMlog(f"linstor-manager:drbd_properties_set: set_properties={set_properties}, del_properties={del_properties}")
959+
960+
return str(
961+
linstor._linstor.resource_group_modify(
962+
linstor._group_name,
963+
property_dict=set_properties,
964+
delete_props=del_properties
965+
)
966+
)
923967

924968
class HealthCheckError(object):
925969
__slots__ = ('data')
@@ -1033,6 +1077,7 @@ def health_check(session, args):
10331077
result['errors'].append(HealthCheckError(
10341078
code=HealthCheckError.NODE_NOT_ONLINE,
10351079
name=node_name,
1080+
10361081
status=status
10371082
))
10381083

@@ -1261,7 +1306,7 @@ if __name__ == '__main__':
12611306
'coalesce': coalesce,
12621307
'repair': repair,
12631308

1264-
# Misc writters.
1309+
# Misc writers.
12651310
'deflate': deflate,
12661311

12671312
'lockVdi': lock_vdi,
@@ -1281,5 +1326,8 @@ if __name__ == '__main__':
12811326
'modifyNodeInterface': modify_node_interface,
12821327
'listNodeInterfaces': list_node_interfaces,
12831328
'getNodePreferredInterface': get_node_preferred_interface,
1284-
'setNodePreferredInterface': set_node_preferred_interface
1329+
'setNodePreferredInterface': set_node_preferred_interface,
1330+
1331+
'drbdProperties': drbd_properties,
1332+
'drbdPropertiesSet': drbd_properties_set,
12851333
})

0 commit comments

Comments
 (0)