diff --git a/debian/fuel-umm.dirs b/debian/fuel-umm.dirs deleted file mode 100644 index eb325da5f1..0000000000 --- a/debian/fuel-umm.dirs +++ /dev/null @@ -1 +0,0 @@ -var/lib/umm/ \ No newline at end of file diff --git a/debian/fuel-umm.install b/debian/fuel-umm.install index 3ee17945a3..f196adb8aa 100644 --- a/debian/fuel-umm.install +++ b/debian/fuel-umm.install @@ -1,11 +1,3 @@ -files/fuel-umm/issue.mm /etc/ -files/fuel-umm/umm.conf /etc/ -files/fuel-umm/umm.sh /etc/profile.d/ -files/fuel-umm/umm /usr/bin/ -files/fuel-umm/umm_svc /usr/lib/umm/ -files/fuel-umm/umm_svc.u1404 /usr/lib/umm/ -files/fuel-umm/umm_vars /usr/lib/umm/ -files/fuel-umm/umm-br.conf /etc/init/ -files/fuel-umm/umm-console.conf /etc/init/ -files/fuel-umm/umm-run.conf /etc/init/ -files/fuel-umm/umm-tr.conf /etc/init/ +files/fuel-umm/root/* / +files/fuel-umm/ub14/* /usr/lib/umm/ +files/fuel-umm/upstart/* /etc/init/ diff --git a/debian/fuel-umm.postinst b/debian/fuel-umm.postinst index a87f67f123..7656ed938e 100644 --- a/debian/fuel-umm.postinst +++ b/debian/fuel-umm.postinst @@ -1,36 +1,2 @@ #!/bin/bash - -cat >/etc/init/rc-sysinit.override <<"EOF" -start on umm -EOF - -cat >/etc/init/failsafe.override <<"EOF" -stop on static-network-up or starting rc-sysinit or starting umm -EOF - -cat >/etc/init/umm.conf <<"EOF" -# umm - Openstak maiteenace mode. -# - -description "Openstack maintenance mode" -author "pzhurba@mirantis.com" - -start on (filesystem and static-network-up) or failsafe-boot - -emits umm - -script -[ -f /usr/lib/umm/umm_svc ] && /usr/lib/umm/umm_svc -initctl emit umm -end script -EOF - -cat >/etc/grub.d/55_umm << "EOF" -if [ -f /etc/grub.d/10_linux ] ; then - /etc/grub.d/10_linux | sed -n -e '/menuentry.*{/,/}/p' | sed -e "s/menuentry\s*'[^']*' /menuentry 'Unified maintenance mode (UMM)' /" -e 's/\(^\s*linux\s.*\)/\1 umm/' -e '/}/,$d'; echo '}' -fi -EOF - -chmod +x /etc/grub.d/55_umm - -update-grub \ No newline at end of file +/usr/lib/umm/umm-install diff --git a/debian/fuel-umm.prerm b/debian/fuel-umm.prerm index 617af05591..5e13e96e1b 100644 --- a/debian/fuel-umm.prerm +++ b/debian/fuel-umm.prerm @@ -2,5 +2,5 @@ rm -f /etc/init/rc-sysinit.override rm -f /etc/init/failsafe.override rm -f /etc/init/umm.conf -rm -f /etc/grub.d/55_umm +rm -f /etc/grub.d/55_umm update-grub \ No newline at end of file diff --git a/debian/rules b/debian/rules index 353804a7dc..d87045e15d 100755 --- a/debian/rules +++ b/debian/rules @@ -13,5 +13,4 @@ override_dh_install: mv debian/fuel-ha-utils/usr/lib/ocf/resource.d/fuel/rabbitmq debian/fuel-ha-utils/usr/lib/ocf/resource.d/fuel/rabbitmq-server-upstream mv debian/fuel-ha-utils/usr/lib/ocf/resource.d/fuel/rabbitmq-fuel debian/fuel-ha-utils/usr/lib/ocf/resource.d/fuel/rabbitmq-server mv debian/fuel-misc/usr/bin/logrotate debian/fuel-misc/usr/bin/fuel-logrotate - mv debian/fuel-umm/usr/lib/umm/umm_svc.u1404 debian/fuel-umm/usr/lib/umm/umm_svc.local diff --git a/files/fuel-umm/umm-install.rh6 b/files/fuel-umm/rh6/umm-install similarity index 100% rename from files/fuel-umm/umm-install.rh6 rename to files/fuel-umm/rh6/umm-install diff --git a/files/fuel-umm/umm_svc.rh6 b/files/fuel-umm/rh6/umm_svc.local similarity index 100% rename from files/fuel-umm/umm_svc.rh6 rename to files/fuel-umm/rh6/umm_svc.local diff --git a/files/fuel-umm/rh7/umm-install b/files/fuel-umm/rh7/umm-install new file mode 100755 index 0000000000..6c669eb3ad --- /dev/null +++ b/files/fuel-umm/rh7/umm-install @@ -0,0 +1,23 @@ +#!/bin/bash + +if [[ "$1" == "add" ]] ; then + + systemctl enable umm-br.service + systemctl enable umm-run.service + systemctl enable umm.service + systemctl enable umm-tr.service + + cat >/etc/grub.d/55_umm << "EOF" +if [ -f /etc/grub.d/10_linux ] ; then + /etc/grub.d/10_linux | sed -n -e '/menuentry.*{/,/}/p' | sed -e "s/menuentry\s*'[^']*' /menuentry 'Unified maintenance mode (UMM)' /" -e 's/\(^\s*linux\s.*\)/\1 umm/' -e '/}/,$d'; echo '}' +fi +EOF + chmod +x /etc/grub.d/55_umm +else + systemctl disable umm-br.service + systemctl disable umm-run.service + systemctl disable umm.service + systemctl disable umm-tr.service + rm -f /etc/grub.d/55_umm +fi +grub2-mkconfig >/boot/grub2/grub.cfg diff --git a/files/fuel-umm/rh7/umm_svc.local b/files/fuel-umm/rh7/umm_svc.local new file mode 100755 index 0000000000..7b275094df --- /dev/null +++ b/files/fuel-umm/rh7/umm_svc.local @@ -0,0 +1,42 @@ +allowed_list="basic.target +firewalld.service +microcode.service +umm.service +umm-tr.service +umm-run.service +network.target +NetworkManager.service +sshd.service +sshd-keygen.service +systemd-readahead-done.timer +systemd-update-utmp-runlevel.service +dbus.service +network.service +" + +cancel_job(){ + + if ! echo "$allowed_list" | grep -q "$2" ; then + if [[ "$1" != "No" ]] ; then + systemctl cancel $1 || true + fi + fi +} + +umm-run(){ +# systemctl list-jobs >/var/log/umm.log + [ -x /bin/plymouth quit] && /bin/plymouth quit || true + sleep 10 + systemctl list-jobs | while read JI ; do + cancel_job $JI + done + systemctl start --no-block getty@tty2.service +} + +umm-off(){ + systemctl isolate default.target +} + +umm-skip(){ + return 0 +} diff --git a/files/fuel-umm/issue.mm b/files/fuel-umm/root/etc/issue.mm similarity index 100% rename from files/fuel-umm/issue.mm rename to files/fuel-umm/root/etc/issue.mm diff --git a/files/fuel-umm/root/etc/profile.d/umm.sh b/files/fuel-umm/root/etc/profile.d/umm.sh new file mode 100755 index 0000000000..8491b7b58e --- /dev/null +++ b/files/fuel-umm/root/etc/profile.d/umm.sh @@ -0,0 +1,4 @@ +if [ "z`umm status`" == "zumm" ] ; then + cat /etc/issue.mm + [ "$#" != "0" ] && echo "$@" +fi diff --git a/files/fuel-umm/umm.conf b/files/fuel-umm/root/etc/umm.conf similarity index 100% rename from files/fuel-umm/umm.conf rename to files/fuel-umm/root/etc/umm.conf diff --git a/files/fuel-umm/umm b/files/fuel-umm/root/usr/bin/umm similarity index 96% rename from files/fuel-umm/umm rename to files/fuel-umm/root/usr/bin/umm index 0257d50d1e..90f8d73ee3 100755 --- a/files/fuel-umm/umm +++ b/files/fuel-umm/root/usr/bin/umm @@ -1,6 +1,7 @@ #!/bin/bash . /usr/lib/umm/umm_vars +. /usr/lib/umm/umm_svc.local Usage(){ echo "Usage @@ -63,6 +64,8 @@ else rm $UMM_DATA/UMM_DRC.var sleep 1 reboot + else + umm-off fi fi else diff --git a/files/fuel-umm/root/usr/lib/umm/umm_svc b/files/fuel-umm/root/usr/lib/umm/umm_svc new file mode 100755 index 0000000000..95abde3816 --- /dev/null +++ b/files/fuel-umm/root/usr/lib/umm/umm_svc @@ -0,0 +1,59 @@ +#!/bin/bash +. /usr/lib/umm/umm_vars +[[ -x ${0}.local ]] && source ${0}.local + + +set_umm(){ + echo umm >$UMM_FLAG +} + +# check if UMM enabled and sckip processing any services +[[ "$UMM" == "yes" ]] || exit 0 + +if [[ "$1" == "timer" ]] ; then + sleep $(($COUNTER_RESET_TIME*60)) + rm -f $UMM_DATA/UMM_DRC.var + exit 0 +fi + +# gracefull shutdown restart processing +if [[ "$1" == "down" ]] ; then + rm -f $UMM_DATA/UMM_DRC.var + exit 0 +fi + +# run sceduled programm in maintenace mode +if [[ "$1" == "run" ]] ; then + if [[ -f "$UMM_DATA/UMM_CMD" && -f "$UMM_FLAG" ]] ; then + cmd=$(cat $UMM_DATA/UMM_CMD) + rm $UMM_DATA/UMM_CMD + $cmd &> $UMM_DATA/UMM_CMD.out || true + fi + exit 0 +fi + +# clean previos state +[[ -f $UMM_FLAG ]] && rm $UMM_FLAG + +# check if umm enforsed parameter is present +if [[ -f $UMM_DATA/UMM_ENFORCED ]] ; then + set_umm + rm $UMM_DATA/UMM_ENFORCED +fi + +# check if umm kernel parameter is present +for t in $(cat /proc/cmdline); do + [[ "$t" == "umm" ]] && set_umm +done + +# check if dirty rebout count is reached +UMM_DRC=$((UMM_DRC+1)) +echo "UMM_DRC=$UMM_DRC">$UMM_DATA/UMM_DRC.var + +[[ ${UMM_DRC} -gt ${REBOOT_COUNT} ]] && set_umm + +if [[ -f $UMM_FLAG ]] ; then + umm-run +else + umm-skip +fi diff --git a/files/fuel-umm/umm_vars b/files/fuel-umm/root/usr/lib/umm/umm_vars similarity index 100% rename from files/fuel-umm/umm_vars rename to files/fuel-umm/root/usr/lib/umm/umm_vars diff --git a/files/fuel-umm/root/var/lib/umm/.gitkeep b/files/fuel-umm/root/var/lib/umm/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/files/fuel-umm/systemd/umm-br.service b/files/fuel-umm/systemd/umm-br.service new file mode 100644 index 0000000000..2127a45484 --- /dev/null +++ b/files/fuel-umm/systemd/umm-br.service @@ -0,0 +1,17 @@ +[Unit] +Description=Unified maintenance mode reset timer +After=umm.service +Requires=umm.service +Before=shutdown.target +Conflicts=shutdown.target + + +[Service] +ExecStart=/bin/true +ExecStop=/usr/lib/umm/umm_svc down +Type=oneshot +RemainAfterExit=yes + +[Install] +WantedBy=basic.target + diff --git a/files/fuel-umm/systemd/umm-run.service b/files/fuel-umm/systemd/umm-run.service new file mode 100644 index 0000000000..8d6b8ee221 --- /dev/null +++ b/files/fuel-umm/systemd/umm-run.service @@ -0,0 +1,12 @@ +[Unit] +Description=Unified maintenance mode runner +After=umm.service + +[Service] +ExecStart=/usr/lib/umm/umm_svc run +Type=oneshot +TimeoutSec=0 +RemainAfterExit=yes + +[Install] +WantedBy=basic.target diff --git a/files/fuel-umm/systemd/umm-tr.service b/files/fuel-umm/systemd/umm-tr.service new file mode 100644 index 0000000000..6ea6ee8c6c --- /dev/null +++ b/files/fuel-umm/systemd/umm-tr.service @@ -0,0 +1,14 @@ +[Unit] +Description=Unified maintenance mode reset timer +After=local-fs.target umm.service +Requires=local-fs.target umm.service + +[Service] +ExecStart=/usr/lib/umm/umm_svc timer +Type=oneshot +TimeoutSec=0 +RemainAfterExit=yes + +[Install] +WantedBy=basic.target + diff --git a/files/fuel-umm/systemd/umm.service b/files/fuel-umm/systemd/umm.service new file mode 100644 index 0000000000..16c9272494 --- /dev/null +++ b/files/fuel-umm/systemd/umm.service @@ -0,0 +1,17 @@ +[Unit] +Description=Unified maintenance mode service +DefaultDependencies=no +Before=basic.target shutdown.target +After=local-fs.target sysinit.target sockets.target +Requires=local-fs.target sysinit.target sockets.target + +[Service] +ExecStart=/usr/lib/umm/umm_svc svc +ExecStartPost=-/bin/sh -c '/etc/profile.d/umm.sh "Console started on tty2"' +Type=oneshot +TimeoutSec=0 +StandardInput=tty +RemainAfterExit=yes + +[Install] +WantedBy=basic.target diff --git a/files/fuel-umm/umm-install.u1404 b/files/fuel-umm/ub14/umm-install similarity index 90% rename from files/fuel-umm/umm-install.u1404 rename to files/fuel-umm/ub14/umm-install index a87f67f123..deb22589c7 100755 --- a/files/fuel-umm/umm-install.u1404 +++ b/files/fuel-umm/ub14/umm-install @@ -20,8 +20,7 @@ start on (filesystem and static-network-up) or failsafe-boot emits umm script -[ -f /usr/lib/umm/umm_svc ] && /usr/lib/umm/umm_svc -initctl emit umm +[ -f /usr/lib/umm/umm_svc ] && /usr/lib/umm/umm_svc wait end script EOF diff --git a/files/fuel-umm/ub14/umm_svc.local b/files/fuel-umm/ub14/umm_svc.local new file mode 100755 index 0000000000..9038a99a86 --- /dev/null +++ b/files/fuel-umm/ub14/umm_svc.local @@ -0,0 +1,17 @@ +umm-run(){ + /sbin/initctl start ssh || true + cp /etc/issue.mm /dev/console + /sbin/initctl start umm-console + if /bin/plymouth --ping; then + /bin/plymouth hide-splash || true + fi +} + +umm-off(){ + /sbin/initctl emit umm +} + +umm-skip(){ + /sbin/initctl emit umm + return 0 +} diff --git a/files/fuel-umm/umm.sh b/files/fuel-umm/umm.sh deleted file mode 100755 index a6a4ace506..0000000000 --- a/files/fuel-umm/umm.sh +++ /dev/null @@ -1 +0,0 @@ -[ "z`umm status`" == "zumm" ] && cat /etc/issue.mm \ No newline at end of file diff --git a/files/fuel-umm/umm_svc b/files/fuel-umm/umm_svc deleted file mode 100755 index 0e3c64814e..0000000000 --- a/files/fuel-umm/umm_svc +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/bash - -. /usr/lib/umm/umm_vars - -# clean previos state -[ -f $UMM_FLAG ] && rm $UMM_FLAG - -# check if UMM enabled -[ "$UMM" == "yes" ] || exit 0 - - -if [ -f $UMM_DATA/UMM_ENFORCED ] ; then - echo umm >$UMM_FLAG - rm $UMM_DATA/UMM_ENFORCED -fi - -# check if umm kernel parameter is present -for t in $(cat /proc/cmdline); do - [ "$t" == "umm" ] && echo umm >$UMM_FLAG -done - -# check if dirty rebout count is reached -UMM_DRC=$((UMM_DRC+1)) -echo "UMM_DRC=$UMM_DRC">$UMM_DATA/UMM_DRC.var -[ ${UMM_DRC} -gt ${REBOOT_COUNT} ] && echo umm >$UMM_FLAG - -initctl start umm-tr || true - - -if [ -f $UMM_FLAG ] ; then - [ -x ${0}.local ] && ${0}.local - initctl start umm-run || true -fi - - -while [ -f $UMM_FLAG ] ; do sleep 1 ; done; - diff --git a/files/fuel-umm/umm_svc.u1404 b/files/fuel-umm/umm_svc.u1404 deleted file mode 100755 index 2c0470391d..0000000000 --- a/files/fuel-umm/umm_svc.u1404 +++ /dev/null @@ -1,3 +0,0 @@ -/sbin/initctl start ssh || true -cp /etc/issue.mm /dev/console -/sbin/initctl start umm-console diff --git a/files/fuel-umm/umm-br.conf b/files/fuel-umm/upstart/umm-br.conf similarity index 100% rename from files/fuel-umm/umm-br.conf rename to files/fuel-umm/upstart/umm-br.conf diff --git a/files/fuel-umm/umm-console.conf b/files/fuel-umm/upstart/umm-console.conf similarity index 100% rename from files/fuel-umm/umm-console.conf rename to files/fuel-umm/upstart/umm-console.conf diff --git a/files/fuel-umm/umm-run.conf b/files/fuel-umm/upstart/umm-run.conf similarity index 100% rename from files/fuel-umm/umm-run.conf rename to files/fuel-umm/upstart/umm-run.conf diff --git a/files/fuel-umm/umm-tr.conf b/files/fuel-umm/upstart/umm-tr.conf similarity index 100% rename from files/fuel-umm/umm-tr.conf rename to files/fuel-umm/upstart/umm-tr.conf diff --git a/specs/fuel-library9.0.spec b/specs/fuel-library9.0.spec index 82b530dea6..f0f5df198c 100644 --- a/specs/fuel-library9.0.spec +++ b/specs/fuel-library9.0.spec @@ -128,23 +128,10 @@ install -m 0755 %{files_source}/fuel-migrate/fuel-migrate %{buildroot}/usr/bin/f install -m 0644 %{files_source}/fuel-migrate/umm-mg.service %{buildroot}/etc/systemd/system/umm-mg.service install -m 0644 %{files_source}/fuel-migrate/umm-mg.target %{buildroot}/etc/systemd/system/umm-mg.target #UMM -mkdir -p %{buildroot}/etc/init -mkdir -p %{buildroot}/etc/profile.d/ -mkdir -p %{buildroot}/usr/bin -mkdir -p %{buildroot}/usr/lib/umm -mkdir -p %{buildroot}/var/lib/umm -install -m 0644 %{files_source}/fuel-umm/issue.mm %{buildroot}/etc/issue.mm -install -m 0644 %{files_source}/fuel-umm/umm.conf %{buildroot}/etc/umm.conf -install -m 0755 %{files_source}/fuel-umm/umm.sh %{buildroot}/etc/profile.d/umm.sh -install -m 0755 %{files_source}/fuel-umm/umm %{buildroot}/usr/bin/umm -install -m 0755 %{files_source}/fuel-umm/umm_svc %{buildroot}/usr/lib/umm/umm_svc -install -m 0755 %{files_source}/fuel-umm/umm_svc.rh6 %{buildroot}/usr/lib/umm/umm_svc.local -install -m 0755 %{files_source}/fuel-umm/umm_vars %{buildroot}/usr/lib/umm/umm_vars -install -m 0755 %{files_source}/fuel-umm/umm-install.rh6 %{buildroot}/usr/lib/umm/umm-install.rh6 -install -m 0644 %{files_source}/fuel-umm/umm-br.conf %{buildroot}/etc/init/umm-br.conf -install -m 0644 %{files_source}/fuel-umm/umm-console.conf %{buildroot}/etc/init/umm-console.conf -install -m 0644 %{files_source}/fuel-umm/umm-run.conf %{buildroot}/etc/init/umm-run.conf -install -m 0644 %{files_source}/fuel-umm/umm-tr.conf %{buildroot}/etc/init/umm-tr.conf +mkdir -p %{buildroot}/usr/lib/systemd/system/ +cp -r %{files_source}/fuel-umm/root/* %{buildroot}/ +cp -r %{files_source}/fuel-umm/systemd/* %{buildroot}/usr/lib/systemd/system/ +cp -r %{files_source}/fuel-umm/rh7/* %{buildroot}/usr/lib/umm/ %post -p /bin/bash @@ -312,18 +299,19 @@ operations. Also node in MM state is reachable with ssh from network. For further information go to: https://www.mirantis.com/products/mirantis-openstack-software/documentation/ -# %post -n fuel-umm -# /usr/lib/umm/umm-install.rh6 add -# %preun -n fuel-umm -# /usr/lib/umm/umm-install.rh6 del +%post -n fuel-umm +/usr/lib/umm/umm-install add +%preun -n fuel-umm +/usr/lib/umm/umm-install del %files -n fuel-umm /etc/issue.mm /etc/profile.d/umm.sh -/etc/init/umm-* +#/etc/init/umm-* +/usr/lib/systemd/system/umm* /usr/lib/umm/* /usr/bin/umm -%dir /var/lib/umm +/var/lib/umm/.gitkeep %config(noreplace) /etc/umm.conf %package -n fuel-notify