migrate agent from py2 & qt4/qt5 to py3 & qt6 #1
Loading…
Reference in New Issue
There is no content yet.
Delete Branch "python3"
Deleting a branch is permanent. Although the deleted branch may exist for a short time before cleaning up, in most cases it CANNOT be undone. Continue?
Historia de usuario: https://ognproject.evlt.uma.es/redmine/issues/247
En esta rama hay trabajo de Ramón Gómez de hace 4 años para migrar el agente a python3, y unas adaptaciones mías recientes para quitar unos restos de Qt4 y migrar lo de Qt5 a Qt6.
Este PR es para revisar el agente de linux. Los agentes para macos y windows recibirán cambios en otras ramas y se revisarán en otros PRs.
Nos han pedido que quitemos la generación de paquetes RPM para linux, por eso se borra tal código.
En PyQt5 se usaba una herramienta llamada pyrcc5 a fin de convertir
src/img/oga.png
ensrc/OGAgent_rc.py
(mediantesrc/OGAgent.qrc
). En PyQt6 ya no existe esa herramienta 🫤 Sí que existe en un conjunto de bindings paralelo llamado PySide6, por lo que temporalmente necesitamos un virtualenv donde deplegar PySide6 (600 Mb) solo con la finalidad de tenerpyside6-rcc
. Propongo pasar por el aro a fin de mergear esta rama, pero habrá que buscar otra manera porque no puede quedar así.Para probar el PR hay que hacer varias cosas:
gpg
Coger la clave privada gpg "Opengnsys developers" del keepassx:
Crear el paquete debian
El proceso da varios avisos de lintian que habrá que arreglar en el futuro:
Se genera el paquete debian
ogagent_1.3.0-2_all.deb
Montar entorno
plantilla-modelo
aplantilla-modelo-6gb
plantilla-modelo-26gb
aplantilla-modelo
plantilla-modelo
aplantilla-modelo-26gb
plantilla-modelo-6gb
aplantilla-modelo
dpkg
sed -i "0,/remote=/ s,remote=.*,remote=https://IPServidorOpenGnsys/opengnsys/rest/," /usr/share/OGAgent/cfg/ogagent.cfg
Probar el agente
Arrancar linux
Con el simple hecho de reiniciar el cliente modelo, en la consola web del ogserver https://ognproject.evlt.uma.es/main-$EXTRA_NAME/) debería ponerse en morado al arrancar linux.
Si al arrancar el cliente modelo, el arranque se interrumpe pidiendo la contraseña de root para entrar en modo mantenimiento, es porque hay una entrada en el fstab para un disco NVMe que no existe. Basta con borrarla y el arranque continúa normalmente.
Iniciar sesión
Al iniciar sesión, el icono de la consola web se tiene que poner en morado con dos ventanitas blancas dentro.
Cerrar sesión
El icono de la consola web debe volver a morado sin las ventanitas dentro.
"Acerca de"
Al iniciar sesión, tiene que haber un icono del agente en la barra de tareas cerca del reloj. Al pinchar con el botón derecho del ratón tiene que aparecer un menú, y tiene que haber una opción "Acerca de" o algo así (no me acuerdo de memoria ahora mismo).
Llamar al API del agente
/status
:/script
:El script
echo foo >/tmp/foo
debe haberse ejecutado en el cliente. Lo comprobamos:/popup
:/poweroff
:Al hacer logout, la consola web debería reflejar este hecho (cambiando el icono por uno con ventanitas a otro sin ventanitas). Y al hacer login de nuevo, 3/4 de lo mismo.
Cuando arrancas el cliente modelo y se queda en "Contraseña de root para mantenimiento", eso es porque en el fstab hay una entrada para un disco que no existe. Mete la contraseña de root (que debería ser la de qindel, o quizá "og") y modifica el fstab. Edito también el OP.
He generado el paquete ogagent
└─$ dpkg -I ogagent_1.3.0-2_all.deb new Debian package, version 2.0. size 45528 bytes: control archive=2428 bytes. 59 bytes, 2 lines conffiles 521 bytes, 11 lines control 3817 bytes, 50 lines md5sums 610 bytes, 28 lines * postinst #!/bin/sh 143 bytes, 10 lines * postrm #!/bin/sh 231 bytes, 7 lines * preinst #!/bin/sh Package: ogagent Version: 1.3.0-2 Architecture: all Maintainer: OpenGnsys developers <info@opengnsys.es> Installed-Size: 269 Depends: policykit-1 (>= 0.100), python3 (>= 3.4) | python (>= 3.4), python3-pyqt6, python3-requests, python3-six, python3-prctl, python3-distro, libxss1, zenity Section: admin Priority: optional Homepage: https://opengnsys.es/ Description: OpenGnsys Agent for Operating Systems This package provides the required components to allow this machine to work on an environment managed by OpenGnsys.
Posteriormente genero un entorno, llamado PR247
Antes de iniciar el cliente modelo, aparece oglive y tiene el disco del modelo montaldo, como la shell está en root, cambio la password por otra, en este caso root:qindel
Una vez iniciada la sesión, y copiado el paquete, la instalación pide dependencias
root@arq-lt1-71:~# dpkg -i ogagent_ 1.3.0-2. _all. deb Seleccionando el paquete ogagent previamente no seleccionado. (Leyendo la base de datos ... 318543 ficheros o directorios instalados actualmente.) Preparando para desempaquetar ogagent_1.3.0-2_all. deb ... Desempaquetando ogagent (1.3.0-2) ... dpkg: problemas de dependencias impiden la configuración de ogagent: ogagent depende de python3-pyqto; sin embargo: I El paquete 'python3-pyqt6' no está instalado. ogagent depende de python3-prctl; sin embargo: El paquete •'python3-prctl' no está instalado. ogagent depende de python3-distro; sin embargo: El paquete 'python3-distro' no está instalado.
He añadido una segunda interfaz al modelo cliente par atener salida a internet, pero con los repositorios que tiene el cliente modelo, no se cubren las dependencias
root@ara-lt1-71:~# apt install ogagent_ 1.3.0-2_all. deb Leyendo lista de paquetes... Hecho Creando árbol de dependencias Leyendo la información de estado... Hecho No se ha podido localizar el paquete ogagent_ 1.3.0-2_all. deb E: No se pudo encontrar ningún paquete usando «*» con «ogagent _1.3.0-2_all. deb» E: No se pudo encontrar ningún paquete con la expresión regular «ogagent_ 1.3.0-2_all. deb»
Por lo que si no me he saltado ningún paso, estoy atascado en el paso
Instalar el paquete con dpkg
Sí, yo he tenido que dar salida a internet al cliente para poder instalarlo. En el ogserver como root:
Haciendo eso, y sin necesidad de meterle otro interface de red al cliente, éste ya debería salir a internet.
El problema no es la salida a internet, eso está resuelto con la segunda interfaz. Teniendo salida a internet, no resuelve dependencias.
De todas formas, he realizado lo que sugieres, para tener una salida a internet "más limpia" y el resultado es el mismo:
root@arq-lt1-71:~# dpkg -i ogagent_1.3.0-2_all.deb Seleccionando el paquete ogagent previamente no seleccionado. (Leyendo la base de datos ... 318545 ficheros o directorios instalados actualmente.) Preparando para desempaquetar ogagent_1.3.0-2_all.deb ... Desempaquetando ogagent (1.3.0-2) ... dpkg: problemas de dependencias impiden la configuración de ogagent: ogagent depende de python3-pyqt6; sin embargo: El paquete
python3-pyqt6' no está instalado.ogagent depende de python3-prctl; sin embargo:
El paquete
python3-prctl' no está instalado. ogagent depende de python3-distro; sin embargo: El paquete
python3-distro' no está instalado.dpkg: error al procesar el paquete ogagent (--install):
problemas de dependencias - se deja sin configurar
Procesando disparadores para systemd (237-3ubuntu10.29) ...
Procesando disparadores para ureadahead (0.100.0-21) ...
Procesando disparadores para desktop-file-utils (0.23-1ubuntu3.18.04.2) ...
Procesando disparadores para gnome-menus (3.13.3-11ubuntu1.1) ...
Procesando disparadores para bamfdaemon (0.5.3+18.04.20180207.2-0ubuntu1) ...
Rebuilding /usr/share/applications/bamf-2.index...
Procesando disparadores para mime-support (3.60ubuntu1) ...
Se encontraron errores al procesar:
ogagent
root@arq-lt1-71:~# apt -f install
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Corrigiendo dependencias... Listo
Los siguientes paquetes se ELIMINARÁN:
ogagent
0 actualizados, 0 nuevos se instalarán, 1 para eliminar y 837 no actualizados.
1 no instalados del todo o eliminados.
Se liberarán 275 kB después de esta operación.
¿Desea continuar? [S/n] s
(Leyendo la base de datos ... 318613 ficheros o directorios instalados actualmente.).........................................................................................................................]
Desinstalando ogagent (1.3.0-2) ...`
`root@arq-lt1-71:~# apt install python3-pyqt6
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
El paquete python3-pyqt6 no está disponible, pero algún otro paquete hace referencia
a él. Esto puede significar que el paquete falta, está obsoleto o sólo se
encuentra disponible desde alguna otra fuente
E: El paquete «python3-pyqt6» no tiene un candidato para la instalación`
He instalado python3 y python3-pip, pero tampoco.
¿Debo subir el cliente a Ubuntu 22?
Vaya, pues lo único que se me ocurre es que no lo probé realmente. Que usé el agente anterior (1.1.2) para ver el API y documentar este PR, y luego con el .deb de la 1.3.0 no hice nada 🤦
Hagamos una cosa: a ver si puedes pegarle un dist-upgrade al cliente modelo y subirlo de versión, y luego cuando termines no destruyas el entorno, y sacamos una imagen de disco actualizada. ¿Te parece?
He subido a la versión Ubuntu 22.04 pero tampoco resuelve las dependencias:
root@arq-lt1-71:~# apt -f install ./ogagent_1.3.0-2_all.deb
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias... Hecho
Leyendo la información de estado... Hecho
Nota, seleccionando «ogagent» en lugar de «./ogagent_1.3.0-2_all.deb»
No se pudieron instalar algunos paquetes. Esto puede significar que
usted pidió una situación imposible o, si está usando la distribución
inestable, que algunos paquetes necesarios aún no se han creado o se
han sacado de «Incoming».
La siguiente información puede ayudar a resolver la situación:
Los siguientes paquetes tienen dependencias incumplidas:
ogagent : Depende: python3-pyqt6 pero no es instalable
E: No se pudieron corregir los problemas, usted ha retenido paquetes rotos.
He probado con pip3, pero tampoco.
He probado a instalar python3-pyqt6.sip, pero tampoco.
No se instala...
La PR247
Credenciales: te las paso por chat.
ogServer
eth0 UP 172.17.8.62/24
eth1 UP 192.168.2.1/24
ogModelo
ens32 UP 192.168.2.199/24
Pues no hay python3-pyqt6 para jammy: https://packages.ubuntu.com/jammy/python/ (la página me está dando 500s y timeouts ahora mismo, si no te funciona insiste un par de veces y terminará cargando)
Parece que en mantic sí está: https://packages.ubuntu.com/mantic/python/
Toca actualizar!
Limpiamos espacio:
Volvemos a intentar:
Y listo!
Después de la actualización a 23.04, todos los pasos funcionan correctamente.
Colores iconos en Consola OG - OK (morado, morado con ventana, gris apagado)
Probar /status OK
Probar /script OK
Probar /popup OK
Probar /poweroff OK
Salvedades:
Pull request closed