From 515e1b10bbdbeeca4a4f24aa2157beb1bcea3304 Mon Sep 17 00:00:00 2001 From: Prasanna Kumar Kalever Date: Wed, 4 Apr 2018 16:30:42 +0530 Subject: [PATCH] restoreconfig: fix alua tpg config setup Problem: --- $ cat myconfig.json { "storage_objects": [ { "alua_tpgs": [ { "alua_access_type": 0, "name": "glfs_tg_pt_gp", "tg_pt_gp_id": 1 } ], "config": "glfs/test@192.168.124.227/block-store/2e189467-00ae-4388-bbd2-a8b4df154671", "name": "blockX", "plugin": "user", "size": 1073741824 } ], "targets": [] } $ targetcli restoreconfig myconfig.json All configuration cleared 'alua_access_state' And attributes won't be effected as per myconfig.json: $ targetcli/backstores/user:glfs/blockX/alua/glfs_tg_pt_gp get alua alua_access_type alua_access_type=3 Fix: --- This patch fix the problem by calling setattr for available attribs in the configfile and rest all will be as per kernel defaults. Signed-off-by: Prasanna Kumar Kalever --- rtslib/alua.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/rtslib/alua.py b/rtslib/alua.py index 8a4b30d..9a7af0d 100644 --- a/rtslib/alua.py +++ b/rtslib/alua.py @@ -19,6 +19,7 @@ a copy of the License at from .node import CFSNode from .utils import RTSLibError, RTSLibALUANotSupported, fread, fwrite +import six alua_rw_params = ['alua_access_state', 'alua_access_status', 'alua_write_metadata', 'alua_access_type', 'preferred', @@ -393,5 +394,10 @@ class ALUATargetPortGroup(CFSNode): return alua_tpg_obj = cls(storage_obj, name, alua_tpg['tg_pt_gp_id']) - for param in alua_rw_params: - setattr(alua_tpg_obj, param, alua_tpg[param]) + for param, value in six.iteritems(alua_tpg): + if param != 'name' and param != 'tg_pt_gp_id': + try: + setattr(alua_tpg_obj, param, value) + except: + raise RTSLibError("Could not set attribute '%s' for alua tpg '%s'" + % (param, alua_tpg['name'])) -- 1.8.3.1