Commit Graph

51 Commits (df98db2c3c11c7b1b96e175dd275bbeb0acb250f)
 

Author SHA1 Message Date
Roberto Hueso Gómez df98db2c3c Add /shell/run tests
These tests cover:
- Correct request with echo
- Correct request without echo
- No json request
- Malformed json request
2020-01-19 19:50:44 +01:00
Roberto Hueso Gómez 9c34a8e69f Change /probe from GET to POST in ogClient 2020-01-19 19:50:44 +01:00
Roberto Hueso Gómez 3a44e48e4b Adapt client responses to the server's
Header parameters need to be sorted for the test server.
2020-01-19 19:50:44 +01:00
Roberto Hueso Gómez 3c450b0d81 Fix ogClient socket.error typo 2020-01-19 19:50:44 +01:00
Roberto Hueso Gómez 23cc1e6b86 Add /probe tests
These tests cover:
- Correct request
- No json request
- Malformed json request
2020-01-19 19:50:44 +01:00
Roberto Hueso Gómez bb65bd7bf0 Add unit testing basic structure 2020-01-19 19:50:44 +01:00
Roberto Hueso gomez 0c5cbee301 Change ogClient.py encoding from dos to unix 2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso a9d81adb1f Include echo option for returning shell output
This patch adds a new echo option in /shell/run command. In case that the option
is set up to true, the server will receive in the response a json with the shell
output. Otherwise, the server will receive a response message without json
body.

A side effect of this change is that the command /shell/output/ disapears.
2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso 336b02371d Send OPG (opengnsys) status when a probe command is received 2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso 38b57c4ae4 Improve setup command response
This patch adds a new response support. This way allows us to send a new
response message with more information about the partitions already set up.
The format of the response is:

{ "disk" : "1", "cache" : "1", "cache_size" : "0",
"partition_setup": [{"partition": "1", "code": "LINUX", "filesystem": "EMPTY",
"size": "498688", "format": "0"}...]
2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso a306b8b9d8 Catch execution errors during restore image command
This patch allows us to send feedback to the server in case of error during
the execution of the command. In case of error, ogClient will send an
"Internal Error" http message.
2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso 1ced3dd069 Improve hardware command response behavior
This patch give us a better support in case of error or success execution.
In error cases, the new behavior is to send an Internal Error http message (500).
Otherwise, the server will receive a message with a json with this format:

    { "hardware" : "xyz" }

"xyz" is the output saved in a specific path during the execution of
InventarioHardware.
2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso 683afa6465 Improve software command response behavior
During our tests, we found some limitation during the execution of the software
command. We don't manage errors during the execution of this command. Moreover,
the server needs some information in case that everything is OK.

This patch modified the code for controlling the errors during the execution,
returning an "Internal Error" http message (500). Moreover, in case that
everything is OK, ogClient sends a message with this json body:

    { "disk" : "0", "partition" : "1", "software" : "xyz" }

"xyz" will be the output saved during the execution of InventarioSoftware in
a specific path.
2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso 0f32b9ca88 Catch execution errors during init session command
This patch allows us to catch an exception when something wrong is happening
executing the init session command. In error cases, ogClient sends an internal
error http message to the server. Otherwise, an OK http message.
2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso 2e342b50c8 Modify methods to use less arguments
Now, all the arguments are received from httpparser. Those arguments convert
the function in long lines of codes. Passing directly the httpparser, all the
function will have less arguments and will be more clear the code.
2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso cc11d8f38f Add restore/image command for restoring images on the machine
ogAdmClient has a support to restore image on the machine. This new command
allows the new ogClient to execute the same script to restore the images
on the machine. The json format sent from the server must be:

{ "disk" : "1", "partition" : "1", "name" : "test",\
 "repository" : "192.168.56.10", "type" : "UNICAST", "profile": "1", "id": "1"}
2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso efbe8a7960 Add setup command for configuring the machine
ogAdmClient has a support to configure the machines. This new command allows
the new ogClient to execute the same script to configure the machine.
The json format sent from the server must be:

{ "disk" : "1", "cache" : "0", "cache_size" : "70000000",\
"partition_setup": [{"partition": "1", "code": "NTFS", "filesystem": "NTFS",\
 "size": "11000000", "format": "0"}]}
2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso 9fd8f2dbd0 Add schedule command
No action executed. This command only return a 200 OK message.
2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso 261a5edf7c Add hardware command to inventory the machine hardware
ogAdmClient has a support to inventory the hardware in a machine. This new
command allows the new ogClient to execute the same script to inventory the hw.
No arguments needed for executing the command
2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso 6d1e79b8eb Add software command to inventory the machine software
ogAdmClient has a support to inventory the software in a machine. This new
command allows the new ogClient to execute the same script to inventory the sw.
The arguments will be received from the server as a json message. Format:

{ "disk" : "0", "partition" : "1"}
2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso 2fa8aa4ff7 Add session command to init the opengnsys session
ogAdmClient has a support for initializing the session in the machine. This new
command allows the new ogClient to execute the same script to init the session.
The arguments will be received from the server as a json message. Format:

{ "disk" : "0", "partition" : "1"}
2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso f566579f8e Set up the ip server for working in localhost by default 2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso 7c26c55074 Create new object for creating dynamic json messages 2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso e6eba4b91f (BUG) Handling command error
This patch adds support for handling the error when the command is wrong formed.
Now, if we send a shell/run command and the shell command is incomplete,
the program crashes.
2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso af903503a2 Modify Thread methods names
This patch modifies the method names to use names more clear.
2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso b571f40482 Blocks the program execution until a command is processing
This patch changes the command process blocking the execution until is processing.
Moreover, the response will be OK (200) instead of IN_PROGRESS (202).
2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso 59a28237f1 Create ogThread class to move all thread functions
Right now, all the thread functions are declared inside the processor function.
Those functions were created for execute specific commands in the machine
(poweroff, reboot, etc). Creating this new class we are cleaning up the code.
2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso d065e1998d Execute command received using Threads
Now we are blocking the execution when we apply a command sent from the server.
This behavior is unacceptable for our client.
2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso db7cc0d99e (BUG) Fix crash when json message received is incomplete 2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso 445497fe01 Avoid a broken pipe error on opengnsys 2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso 6764fc44e1 Split the commands taking into account GET/POST operations 2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso e20daf639d Add shell run and output commands
Opengnsys needs a support to execute commands on the machine. This patch adds
the support for executing two new commands "shell/run" and "shell/output". The
first one, give us the support for executing a command in the machine and keep
save in a queue the output. The second one, give us the support for sending the
output from the command executed.
2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso dfc97ffedb Merge ogRest and ogProcess to have only one class 2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso 77906be87f Include disconnect and send function on client side
To disconnect the socket or send a message we use in different parts of the code
the attribute socket which is declared inside of the client. This way will
create us important problem in the future if we want to change the behavior in
our client sockets. This patch adds two new methods inside the client and we
can use them in other classes giving us the easy way to send messages and
disconnect the client.
2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso 2997952bc9 Add global variable to set up OpenGnsys path
This variable allow us to modify the opengnsys path without modify several parts
of the code. This change reduces the probability to add any bug forgetting to
change any line.
2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso 694bc492a2 Add ogRest class to generate API Rest Responses
This class now, allow us to generate API Rest responses. In the future, the idea
is to complete this class with get and post messages if it's needed.
2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso 7548870a92 Port program to Python 3
Python 2.7 will be deprecated in January of 2020. So, we need to have the program
with a supported api.
2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso 4ad2759e55 Remove remote from cfg file
This information is older for this version. We don't need to have any information
about the remote.
2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso cb57e66300 Remove unneeded logs 2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso dbbc7fa858 Include the reboot support in ogOperation
This new patch allows us to reboot the linux machine using reboot binary or in
OpenGnsys client case, use the specific script.
2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso 62a8ca4cd8 Include the poweroff support in ogOperation
This new patch allows us to turn off the linux machine using poweroff binary
or in OpenGnsys client case, use the specific script.
2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso 6479530bf5 Add Probe HTTP Command 2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso 72e93be46f Remove unneeded logs 2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso 2d72f00d95 Send bad request when the APIRest operation is not supported
Our program sends always the HTTP message:

HTTP/1.0 200 OK

but if the operation sent is not supported, we are sending the same correct
message. This patch add the support to check if the message is supported.

If the message is not supported, we are going to send:
 HTTP/1.0 400 Bad request\r\n\r\n
Otherwise, in operations supported:
 HTTP/1.0 200 OK
2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso fdf7701a03 Add new process support for reboot message 2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso 9eabc7f9a8 Execute socket loop on run socket function
Ported code from main function to a client function for clearing the main loop.
2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso ebd640a9c5 Add ogProcess and ogOperation for linux
Thoses new classes allows us to process and execute commands from server side
sent using HTTP format.
2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso bfdeae840c Add HTTP parser support
The new OpenGnsys support to communicate server and client side will be
HTTP. This new class allows us the support for parsing all the message received
from the server in HTTP format.
2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso 076e15bb29 Modify Client state to use enum
During our connections, we are using states to control the Client Socket. We
defined using global variables. In case that we modify this global variable,
we need to change it in serveral parts of the code.

Using enums and declaring a new class, we can redefine the values or create new
states without changing the same code in differents python files.
2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso 29fe301ec8 Create new ogClient
This commit init the new ogClient. The new ogClient has support for configuring
and for connecting with the ogAdminServer.
2020-01-19 19:50:44 +01:00