Commit 385d581b authored by Ophélie Gagnard's avatar Ophélie Gagnard

Add information messages to be displayed at boot time in the supported VMs.

Add a wait() call in main to improve fluent-bit behavior.
(Note: first working version with UEFI.)
parent 263ef9ee
...@@ -6,7 +6,7 @@ define collect_sh := ...@@ -6,7 +6,7 @@ define collect_sh :=
/sbin/metadata-collect-agent "$$NEWROOT" /sbin/metadata-collect-agent "$$NEWROOT"
sleep 120 sleep 10
endef endef
......
...@@ -54,7 +54,7 @@ nopython: main.cpp#$(EXE) ...@@ -54,7 +54,7 @@ nopython: main.cpp#$(EXE)
make fake_python.o make fake_python.o
g++ -O2 -g -Wno-unused-result -Wsign-compare -pthread -I/usr/include/python3.7 main.cpp fake_python.o -lcrypto -lfmt -o metadata-collect-agent g++ -O2 -g -Wno-unused-result -Wsign-compare -pthread -I/usr/include/python3.7 main.cpp fake_python.o -lcrypto -lfmt -o metadata-collect-agent
#-ln -f ../../metadata-collect-agent metadata-collect-agent #-ln -f ../../metadata-collect-agent metadata-collect-agent
#-ln -f metadata-collect-agent ../../dracut.module/90metadata-collect/metadata-collect-agent -ln -f metadata-collect-agent ../../dracut.module/90metadata-collect/metadata-collect-agent
#-ln -f metadata-collect-agent ../../debian.package.unsafe/unsafe-boot-metadata-collect-agent/sbin/metadata-collect-agent #-ln -f metadata-collect-agent ../../debian.package.unsafe/unsafe-boot-metadata-collect-agent/sbin/metadata-collect-agent
%.cpp: %.pyx %.cpp: %.pyx
......
...@@ -2,10 +2,11 @@ ...@@ -2,10 +2,11 @@
from libcythonplus.list cimport cyplist from libcythonplus.list cimport cyplist
from libc.stdio cimport fprintf, fopen, fclose, fread, fwrite, FILE, stdout, printf, ferror from libc.stdio cimport fprintf, fopen, fclose, fread, fwrite, FILE, stdout, stderr, printf, ferror
from runtime.runtime cimport SequentialMailBox, BatchMailBox, NullResult, Scheduler from runtime.runtime cimport SequentialMailBox, BatchMailBox, NullResult, Scheduler
from runtime.unistd cimport pid_t, execlp, fork, sleep from runtime.unistd cimport pid_t, execlp, fork, sleep
from runtime.wait cimport wait, waitpid
from stdlib.stat cimport Stat, dev_t from stdlib.stat cimport Stat, dev_t
from stdlib.digest cimport MessageDigest, md5sum, sha1sum, sha256sum, sha512sum from stdlib.digest cimport MessageDigest, md5sum, sha1sum, sha256sum, sha512sum
...@@ -251,19 +252,26 @@ cdef cypclass SymlinkNode(Node): ...@@ -251,19 +252,26 @@ cdef cypclass SymlinkNode(Node):
cdef int start(string path) nogil: cdef int start(string path) nogil:
printf("TEST TEST TEST TEST TEST\n\n") # DEBUG
cdef pid_t wait_error = -1 # DEBUG
cdef char* program_name = "fluentbit" cdef char* program_name = "fluentbit"
cdef char* arg1 = "-e" cdef char* arg1 = "-e"
cdef char* arg2 = "/root/metadata-collect-agent/dracut.module/90metadata-collect/fluentbit_wendelin.so" cdef char* arg2 = "/etc/fluentbit_wendelin.so"
cdef char* arg3 = "-c" cdef char* arg3 = "-c"
cdef char* arg4 = "/root/metadata-collect-agent/dracut.module/90metadata-collect/flb.conf" cdef char* arg4 = "/etc/flb.conf"
cdef pid_t child_pid = -1 # DEBUG cdef pid_t child_pid = -1 # DEBUG
child_pid = fork() # DEBUG child_pid = fork() # DEBUG
cdef int err cdef int err
if child_pid == 0: # CHILD if child_pid == 0: # CHILD
err = execlp("/root/metadata-collect-agent/dracut.module/90metadata-collect/fluent-bit", program_name, arg1, arg2, arg3, arg4, 0) err = execlp("/sbin/fluent-bit", program_name, arg1, arg2, arg3, arg4, 0)
printf("ERROR with execlp() in CHILD: %d\n", err) fprintf(stderr, "ERROR with execlp() in CHILD: %d\n", err)
else: # PARENT else: # PARENT
printf("WELCOME TO PARENT\n\n") # DEBUG
sleep(2) # TODO error handling ; check if a wait can be made to wait for the child to perform execlp() (instead of the sleep)
global scheduler global scheduler
scheduler = Scheduler() scheduler = Scheduler()
...@@ -300,6 +308,8 @@ cdef int start(string path) nogil: ...@@ -300,6 +308,8 @@ cdef int start(string path) nogil:
if result is NULL: if result is NULL:
return -1 return -1
printf("WRITE_NOTE STAGE\n\n") # DEBUG
fprintf(result, '[\n') fprintf(result, '[\n')
node.write_node(result) node.write_node(result)
fprintf(result, ' {}\n]\n') fprintf(result, ' {}\n]\n')
...@@ -309,6 +319,14 @@ cdef int start(string path) nogil: ...@@ -309,6 +319,14 @@ cdef int start(string path) nogil:
#""" # DEBUG #""" # DEBUG
del scheduler del scheduler
fprintf(stderr, "WAITING [error version]\n\n")
printf("WAITING...\n\n")
wait_error = wait(NULL) # TODO improve this call (error handling, etc.)
#wait_error = waitpid(child_pid, NULL, 1) # TODO improve this call (error handling, etc.)
fprintf(stderr, "WAITING ENDS [error version]\n\n")
printf("WAITING ENDS NOW!\n\n")
return 0 return 0
cdef public int main() nogil: cdef public int main() nogil:
......
from runtime.unistd cimport pid_t
cdef extern from "<wait.h>" nogil:
pid_t wait(int *wstatus)
pid_t waitpid(pid_t pid, int *wstatus, int options);
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment