Testing the ogClient I found that if a value of the json match a key the
ogClient has an exception. For example:
body = "... shell/run {"run": "fdisk -l"} ..."
CURRENT
Enters in
if "disk" in body:...
if "run" in body:...
EXPECTED
Enters in
if "run" in body:...
This commit changes the behaviour to search for the keys in the
dictionary returned by json.loads() instead of searching in the raw
string. This way the ogClient looks for the keys without searching in
the values.
With our client disconnection, we hid that the ogClient process will be
closed too. This new way only close the subprocess keeping the ogClient
still working.
This patch allows us to control the thread using a state machine. This state
machine controls if the client is busy or not. This new way to control the
threads give us more control for avoiding race condition problems.
From pep-0008: Method Names and Instance Variables
Use the function naming rules: lowercase with words separated by underscores as
necessary to improve readability.
This is applied to /software and /hardware file reads.
We should use 'with' instead of opening and closing a file since this prevents
that files stay open after an exception is raised.
With this new patch, the image/create command will create a response message
with more information for the server. The new format is:
{"disk" : "1", "partition" : "1", "code" : "1", "id" : "1", "name" : "test",
"repository" : "192.168.2.4", "software" : "xyz"}
"xyz" will be the output saved during the execution of InventarioSoftware in
a specific path.
This patch allows us to execute refresh command using ogClient. This command
gets all the configuration in our machine and send this information to the
server. The format of the message that ogClient will send to the server will be:
{"disk": "1", "partition_setup": [{"partition": "1", "code": "LINUX",
"filesystem": "NTFS", "size": "498688", "format": "0"}, {"partition": "2",
"code": "LINUX", "filesystem": "NTFS", "size": "498688", "format": "0"},
{"partition": "3", "code": "LINUX", "filesystem": "NTFS", "size": "498688",
"format": "0"}]}
This patch allows us to use a new support for creating images using ogClient.
ogClient receives from the server a message which json body must be:
{"disk" : "1", "partition" : "1", "code" : "1", "id" : "1", "name" : "test",
"repository" : "192.168.2.4" }
ogClient returns to the server the software inventory executed before
create the image. The message for the server is:
{ "disk" : "0", "partition" : "1", "software" : "xyz" }
"xyz" will be the output saved during the execution of InventarioSoftware in
a specific path.