Commit Graph

387 Commits (9be639ae78ff2910669c95c400e10afdf802ec97)

Author SHA1 Message Date
Javier Sánchez Parra 36b5064970 #1000 Fix ogClient HTTP length handling
Irina reports that "Partition assistant"/"Asistente de particionado" is
not working. This is happening because ogClient is not reading the full
data ogServer sends when the entire HTTP PDU is larger than 1024.
However, ogClient should read the whole message, reading until read data
length is greater or equal to "Content-Length" header value.

ogClient fails to obtain "Content-Length" value because is looking for
"content-length", be aware of the case sensitivity. It also needs to
take into account the header length because read data length also
includes headers.

This patch updates ogClient to:

1) look for "Content-Length instead of "content-length".

2) compare read date length with content length plus headers
   length.
2020-08-25 10:55:45 +02:00
Javier Sánchez Parra 0593119352 #999 Fix ogClient session command
Disconnect gracefully from ogServer after booting OS, the script to start the
OS calls kexec, so everything is gone after it. For Windows, this results in a
reboot.

This commit also improves the disconnect function to make sure the
disconnection is synchronous.
2020-08-21 18:39:35 +02:00
Javier Sánchez Parra de129f7449 Add Virtual status
Since version 1.2.0, OpenGnsys supports ogVDI hypervisor OS. This commit
a new status which indicates that clients are running ogVDI
2020-06-26 14:39:21 +02:00
Roberto Hueso Gómez 93f1b35fcd Add syslog logs for HTTP requests and responses
This is useful for debuging and getting information on the processes that are
being executed in ogclient.

syslog outputs are something similar to:

Jun 26 10:36:40 ogAdministrator /ogclient: GET refresh HTTP/1.1
Jun 26 10:36:40 ogAdministrator /ogclient: HTTP/1.0 500 Internal Server Err
2020-06-26 12:37:09 +02:00
Javier Sánchez Parra ffbcf7ebba Check return code on restore image command
When restore image command was sent and the restoration failed, you
could see in WebConsole the image as restored and the command completed,
as it if had not failed. This happened because ogClient did not check
the return code of restoration script.

This commit adds return code check on restore image. So, when return
code is a non-zero value ogClient responses with an error 500. When
ogServer receives this error response, it did not set in the database
the image as restored and command as completed without errors.
2020-06-23 13:42:39 +02:00
Roberto Hueso Gómez 93bbc39d4b Import OgLinuxOperations only when necessary
This fixes a circular import error produced by the import of ogClient inside of
OgLinuxOperations.
2020-06-08 14:26:35 +02:00
Roberto Hueso Gómez 1377aceec2 Rename 'linux' mode to 'live' mode
'linux' represents ogLive mode that is the reason for the rename.
2020-06-05 14:55:10 +02:00
Roberto Hueso Gómez d7b7b0b175 Delete ogConfig.py
This file is only used for its OG_PATH variable, this variable is now in
ogClient.
2020-06-05 13:08:00 +02:00
Roberto Hueso Gómez 3205e0f1e8 Refresh partitions.json after image restore
This is necessary for cloneer-manager to start the guest OS after the next
reboot.
2020-05-29 13:29:16 +02:00
Roberto Hueso Gómez b29b2eb452 Move check_vm_state_loop() into OgVirtualOperations
Improves code encapsulation by moving check_vm_state_loop method into
OgVirtualOperations class. This also fixes import error when running ogclient in
'linux' mode.
2020-05-26 11:24:26 +02:00
Javier Sánchez Parra 147c890617 Fix OgLinuxOperations class params
Commit 621fb7a7 added class initialization with two parameters. These
two parameters were wrongly initialized, "self." was missing. The call
of these params in other functions of the class was also wrong.

This commit fix the initialization of the parameters of
OgLinuxOperations and fix the calls to these params.
2020-05-20 12:04:28 +02:00
Javier Sánchez Parra 6502180fc8 Only import virtual functions when needed.
ogClient may runs on an OS that do not have all the dependencies needed
to use virtual functions.

This commit change the behaviour to only import virtual functions when
the ogClient has to work with Virtual Machines. This way ogClient works
on environments which do not need virtual functions.
2020-05-20 10:33:41 +02:00
Roberto Hueso Gómez 2ab5db74fe Handle other exceptions on virtual /refresh
Ths patch handles different cases when a /refresh request can be made. More
specifically this handles the situation in which the VM is stopped when /refresh
is called but it starts during the processing of /refresh, in this case we just
send the last recorded setup.
2020-05-19 12:40:35 +02:00
Roberto Hueso Gómez de2ce69e46 Refactor OgQMP and adapt operations
This patch:
- Fixes logic errors in the communication with QMP (the order of handshake
  messages was not right).
- Rewrite parts of OgQMP class.
- Enforces better coding practices by using Python's "context managers" to avoid
  forgeting an open socket in case exceptions occur.
- Adapt virtual operations to the use of "context managers" using the "with"
  statement.
2020-05-19 12:34:31 +02:00
Roberto Hueso Gómez 28a25918b2 Update filesystems on /refresh
This updates partitions.json filesystems.
2020-05-18 15:58:22 +02:00
Roberto Hueso Gómez 2e6b73da53 Use virtio-vga to run VMs
This is the device that has the best empirical performance right now and it
seems like it is where most of the qemu development is directed towards for the
future.
2020-05-18 10:28:18 +02:00
Javier Sánchez Parra 621fb7a786 Adapt ogLinuxOperation to work with json config file
ogClient changed its config file format to json. This patch adapts
ogLinuxOperation to use new config file.

Co-authored-by: Roberto Hueso <rhueso@soleta.eu>
2020-05-18 08:33:37 +02:00
Roberto Hueso Gómez 3c055d198d Wait before polling QMP for host poweroff
This patch waits before polling qemu with QMP so that it has time to be ready
for requests. It also increases wait time in case the host machine is slow.
2020-05-14 17:28:50 +02:00
Roberto Hueso Gómez 32b73c50b1 Fix typo on linux shellrun operation 2020-05-14 17:27:42 +02:00
Roberto Hueso Gómez 269c7b5055 Rename operation 'execCMD' to 'shellrun'
This patch also ignores calls to shellrun when virtual mode is activated.
2020-05-13 17:30:12 +02:00
OpenGnSys Support Team 5f874030f5 remove platform check 2020-05-13 17:01:20 +02:00
Roberto Hueso Gómez b63bd727f9 Change permissions on virtual images for /refresh
Write permission is not needed to get information about each virtual drive so
this patch changes permissions to 'only read'. This can prevent race conditions.
2020-05-13 14:15:44 +02:00
Roberto Hueso Gómez ff988b80b5 Add VNC support for virtual mode VMs
This patch makes possible to interact with guest OS from a remote machine using
VNC.
2020-05-13 14:13:47 +02:00
Roberto Hueso Gómez 38b6d77561 Switch config file to json
This patch makes configuration parsing easier as well as making the full
configuration available in many subclasses.
2020-05-13 14:10:01 +02:00
Roberto Hueso Gómez 404b8c79d0 Extend use of OG_PARTITIONS_CFG_PATH for /setup and /refresh
This is a refactor to consolidate the use of this single variable across all
virtual operations.
2020-05-11 12:13:39 +02:00
Roberto Hueso Gómez 6ca16dd200 Poweroff when no VM and no jobs are running
This patch calls poweroff in virtual mode when no VM is running and no jobs are
being executed. This is useful when the guest OS shutdowns so that the host OS
does not continue to run.
2020-05-11 11:12:11 +02:00
Roberto Hueso Gómez 7bde2a04e9 Add OgVM class to abstract VMs
This patch implements OgVM class. OgVM abstracts VM emulator from its
operations.
2020-04-28 16:40:30 +02:00
Roberto Hueso Gómez c86328181f Poweroff VM before some operations
This patch includes changes to:
- Poweroff VM before running operations that require access to virtual disks.
- Poweroff VM before host system poweroff.
2020-04-28 11:32:05 +02:00
Roberto Hueso Gómez 298e156317 Send last stored setup if VM is running
When virtual mode is activated, send the last stored partitions setup because
it is not possible to access a running virtual drive to get its information.
2020-04-28 11:27:16 +02:00
Roberto Hueso Gómez deb2e075cd Add OgQMP recv method
recv method is useful for receiving information that was not previously
requested (such as "events"). This patch also implements automatic handshake
on OgQMP by sending an "qmp_capabilities" request.
2020-04-28 11:21:49 +02:00
Roberto Hueso Gómez 5444e453ee Fix disk used size calculation
This patch calculates correctly the percentage of disk used. This could cause
an overflow on the ogAdmSever DB.
2020-04-28 11:16:59 +02:00
Roberto Hueso Gómez 1a83ebba23 Control errors in OgQMP for virtual mode
This patch handles possible communication errors between ogclient and Qemu when
making QMP requests.
2020-04-22 13:02:55 +02:00
Javier Sánchez Parra 0807ec76ed Add realtime log menu
We observed that with the new ogClient the ogLive did not show the
realtime log menu*.

This commit changes the ogClient to launch the browser and show the
realtime log menu when some commands are executed.

* The realtime log menu is a menu that shows current status and info
  about the command that the ogLive is executing.
2020-04-22 10:39:02 +02:00
Roberto Hueso Gómez b576836e43 Avoid killing ogclient in virtual mode 2020-04-20 09:14:52 +02:00
Roberto Hueso Gómez 2e3d47b7b8 Avoid writting /software output to a file 2020-04-17 16:59:48 +02:00
Roberto Hueso Gómez 7ccc498014 Use samba for create and restore virtual partitions
This requires to configure user and password for samba repositories.
2020-04-17 15:50:35 +02:00
Roberto Hueso Gómez dfb69e9dd5 Use libguestfs for virtual setup 2020-04-17 15:49:21 +02:00
Roberto Hueso Gómez 84e02462c0 Use libguestfs for virtual refresh 2020-04-17 15:49:21 +02:00
Roberto Hueso Gómez 8ec8572da2 Transform absolute paths into relative paths for virtual mode 2020-04-17 15:49:21 +02:00
Javier Sánchez Parra eec50f777c Increase HTML menu regeneration cases
We have observed that the ogLive browser did not show the changes when
an image restoration o script execution was called. The problem was that
the HTML menu was not updated/regenerated in these cases.

This commit adds the call to the HTML regeneration function to image
restore and script execution commands. This way, when the browser is
restarted it loads the updated HTML menu.
2020-04-16 13:53:13 +02:00
Javier Sánchez Parra f0c550ee2a Change browser behaviour
We have observed that the browser did not show changes. This happens
because the ogClient opens the browser at the beginning and forget
about it. To show correctly the changes ogClient had to restart the
browser every time the menu html changes.

This commit changes the behaviour to restart the browser when the menu
html has changed.
2020-04-16 13:29:06 +02:00
OpenGnSys Support Team 439e5db7b7 wait for 1 second if connection is refused 2020-04-14 12:05:15 +02:00
Roberto Hueso Gomez 8a927a352d Sleep 1 second to avoid high CPU load 2020-04-14 11:48:13 +02:00
Roberto Hueso Gomez d6c5f2443a Avoid connection status infinite print loop
This patch avoids infinite writting of connection status messages to the log.
2020-04-14 11:31:22 +02:00
Roberto Hueso Gomez f56065a438 Fix reboot and poweroff threads args 2020-04-13 15:16:52 +02:00
Roberto Hueso Gomez 0ddf3f287a Add placeholder for virtual execCMD 2020-04-13 12:38:45 +02:00
Roberto Hueso Gomez 7f646fc468 Use 75% of disk space in virtual mode 2020-04-08 13:35:34 +02:00
Roberto Hueso Gomez 4f03c31f85 Add mode selection for ogClient 2020-04-08 13:31:45 +02:00
Roberto Hueso Gomez 99ae598fbd Encapsulate operations in classes 2020-04-08 13:30:16 +02:00
Roberto Hueso Gomez c279325919 Add virtual operations 2020-04-07 13:55:09 +02:00
OpenGnSys Support Team 2cd7f5b4fc missing update to use ogConfig.OG_PATH in linux/ogOperations.py 2020-03-20 15:11:02 +01:00
Javier Sanchez Parra 4cd87e9875 Make OG_PATH public
This commit changes the OG_PATH to a public varible of the class
ogConfig. This way we improve the configurability of the path.
2020-03-20 14:53:07 +01:00
OpenGnSys Support Team d69841ed97 rename getURI to get_uri in restRequest 2020-03-09 18:10:57 +01:00
OpenGnSys Support Team 5964e48df9 rename execcmd to shellrun 2020-03-09 18:10:54 +01:00
OpenGnSys Support Team a6d3b7915c use lowercase attribute name in restRequest 2020-03-09 18:10:49 +01:00
Roberto Hueso Gómez 4e1ad0f949 Put state to IDLE after run/schedule 2020-03-03 14:13:10 +01:00
Roberto Hueso Gómez b53f8d0f8f Send complete HTTP header when response has no body 2020-03-02 09:32:40 +01:00
OpenGnSys Support Team a85c113ee7 Rename operation to method
As defined by the HTTP standard.
2020-02-26 17:58:15 +01:00
Javier Sanchez Parra 8e81b8091e Search the key in the parsed json
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.
2020-02-26 17:55:03 +01:00
Roberto Hueso Gómez bb9ec5d7a5 Handle scripts that end in \r 2020-02-25 18:56:49 +01:00
Alvaro Neira Ayuso 6f7ba325b8 Modify way to close PID process
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.
2020-02-24 09:35:24 +01:00
Alvaro Neira Ayuso 583057bd69 Use state machine to avoid race condition problems
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.
2020-02-23 20:04:47 +01:00
OpenGnSys Support Team e5f1db1e47 remove unused getters 2020-02-21 12:58:11 +01:00
OpenGnSys Support Team 3917c3675f pep-0008 cleanup
From pep-0008: Method Names and Instance Variables

Use the function naming rules: lowercase with words separated by underscores as
necessary to improve readability.
2020-02-21 12:57:54 +01:00
Roberto Hueso Gómez 54c0ebf098 Use 'bash' as the default shell for operations scripts 2020-02-09 00:04:43 +01:00
Roberto Hueso Gómez 1fd9f2e07c Use 'with' keyword for file reading
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.
2020-02-05 16:49:42 +01:00
Roberto Hueso Gómez 1c236b4548 Use python f-strings for commands composition 2020-02-05 16:49:37 +01:00
Roberto Hueso Gómez eaba1acbc3 Fix /session execution
The script now reads arguments correctly.
2020-02-05 13:42:20 +01:00
Roberto Hueso Gómez fe4236dcd8 Fix /image/restore execution and response 2020-02-05 13:42:10 +01:00
Roberto Hueso Gómez 680214317e Fix /image/create execution and response 2020-02-05 13:41:54 +01:00
Alvaro Neira Ayuso 38056d78a7 (BUG) Rename OG_SCRIPT_PATH to OG_PATH 2020-02-04 14:19:38 +01:00
Roberto Hueso Gómez 2934773d88 Fix /setup execution and response 2020-02-03 10:15:54 +01:00
Roberto Hueso Gómez e96e187825 Fix parseGetConf(...) configuration parsing
This patch also reformats the response to the /refresh command.
2020-02-03 10:15:49 +01:00
OpenGnSys Support Team f86999da0c add space after Content-Length and Content-Type
ogAdmServer needs this space to work fine.
2020-01-28 09:14:13 +01:00
Roberto Hueso Gómez dabc7ebf83 Change POST /refresh to GET /refresh
This patch changes the HTTP method for /refresh and cleans up the implementation
of the /refresh Linux operator.
2020-01-21 17:33:05 +01:00
Roberto Hueso Gómez ca0a62f9c6 Fix /software command Linux operation
This patch runs the script InventarioSoftware with the right arguments.
This also increases the recv buffer size for the test server.
2020-01-21 17:32:57 +01:00
Roberto Hueso Gómez 9890d60300 Fix /shell/run commands splitting
This patch splits shell commands either with ';' or '\n'.
2020-01-21 17:32:48 +01:00
Roberto Hueso Gómez 96c2ddea2d Fix /hardware command Linux operation
This patch runs the script InventarioHardware with the right arguments.
2020-01-21 17:32:42 +01:00
Alvaro Neira Ayuso 2e806531a0 (Clean-Up) Rename all the functions in ogRest to new ones more clears 2020-01-19 20:18:14 +01:00
Alvaro Neira Ayuso e39fe2fc52 (Clean-Up) Rename HTTPParser file to restRequest 2020-01-19 20:18:14 +01:00
Alvaro Neira Ayuso 86eb703964 (Clean-Up) Modify restResponse to get the response using constructor and get function 2020-01-19 20:18:07 +01:00
Alvaro Neira Ayuso 8fc251eff3 (Clean-Up) Rename HTTPParser to restRequest 2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso 44a4662fef (Clean-Up) Rename cmd variable to body 2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso 8e54420dfd (Clean-Up) Rename cmd function/variables to use "run" syntax 2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso 51ad896dee (Clean-Up) Rename jsoncmd variable to json_param 2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso 5603a280ef Improve /image/create command response
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.
2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso b5e182f7dd Add Refresh command
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"}]}
2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso b2fd0b5fff Add image/create command for creating a new image
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.
2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso fdd4ba59c7 (BUG) Include client parameter in restore command 2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso 05b1088827 Include License header 2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso d5dca0f756 Add stop command
This patch includes a new support for stopping all the process running on
the ogClient.
2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso 230bdca0ea Execute cmd command using thread
This patch prepares the code for future stop command.
2020-01-19 19:50:44 +01:00
Roberto Hueso Gómez b9c33f2c83 Fix echo check for process_shellrun in ogRest 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 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 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 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 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