Description:
When you search for the servers of a group (and in many other cases), the exit code is always 0 even if "success" is false.
Regards,
Martin Arrieta.
How to repeat:
[root@fabric-store fabric]# mysqlfabric group lookup_servers test1
Command :
{ success = True
return = [{'status': 'FAULTY', 'server_uuid': '0efa44fb-d08e-11e3-92cf-08002760fc47', 'mode': 'READ_WRITE', 'weight': 1.0, 'address': '192.168.70.104'}, {'status': 'FAULTY', 'server_uuid': '1189e6be-d08e-11e3-92cf-08002760fc47', 'mode': 'READ_ONLY', 'weight': 1.0, 'address': '192.168.70.103'}, {'status': 'FAULTY', 'server_uuid': '12f4a168-d08e-11e3-92cf-08002760fc47', 'mode': 'READ_ONLY', 'weight': 1.0, 'address': '192.168.70.102'}]
activities =
}
[root@fabric-store fabric]# echo $?
0
[root@fabric-store fabric]# mysqlfabric group lookup_servers test12
Command :
{ success = False
return = GroupError: Group (test12) does not exist.
activities =
}
[root@fabric-store fabric]# echo $?
0
Suggested fix:
Add a secondary return value and send the "success" value separately in the method "command.dispatch" in order to use it for the exit code.
$ diff -r mysql-utilities-1.4.2/ mysql-utilities-1.4.2-original/
diff -r mysql-utilities-1.4.2/mysql/fabric/command.py mysql-utilities-1.4.2-original/mysql/fabric/command.py
385c385
< return ("\n".join([
---
> return "\n".join([
391c391
< ]), success)
---
> ])
diff -r mysql-utilities-1.4.2/scripts/mysqlfabric.py mysql-utilities-1.4.2-original/scripts/mysqlfabric.py
26,27d25
< import sys
<
345,348c343
< result, status = command.dispatch(*(command.append_options_to_args(args)))
<
< return_code = 0 if status else 1
<
---
> result = command.dispatch(*(command.append_options_to_args(args)))
351,353d345
<
< sys.exit(return_code)
<