Start building sysrepo-ietf-alarms
The project also requires date library[1] but it was not running
correctly on our ARM. I had to patch the library with the workaround
from [2], hence the buildroot update.
[1] https://github.com/HowardHinnant/date
[2] https://github.com/HowardHinnant/date/issues/252
Change-Id: Ie82b8c9ea50b0198b024256ff81d67ba7344c190
diff --git a/.gitmodules b/.gitmodules
index 7a7d552..744946f 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -19,3 +19,6 @@
[submodule "submodules/rousette"]
path = submodules/rousette
url = ../rousette
+[submodule "submodules/sysrepo-ietf-alarms"]
+ path = submodules/sysrepo-ietf-alarms
+ url = ../sysrepo-ietf-alarms
diff --git a/.zuul.yaml b/.zuul.yaml
index da25c73..c33b12b 100644
--- a/.zuul.yaml
+++ b/.zuul.yaml
@@ -18,6 +18,7 @@
- CzechLight/libyang-cpp
- CzechLight/sysrepo-cpp
- CzechLight/libnetconf2-cpp
+ - CzechLight/sysrepo-ietf-alarms
- github/CESNET/libyang
- github/sysrepo/sysrepo
- github/CESNET/libnetconf2
diff --git a/ci/build.sh b/ci/build.sh
index 6d0be8a..35d3981 100755
--- a/ci/build.sh
+++ b/ci/build.sh
@@ -36,7 +36,7 @@
echo BR2_PRIMARY_SITE=\"https://object-store.cloud.muni.cz/swift/v1/ci-artifacts-public/mirror/buildroot\" >> .config
if [[ ${TRIGGERED_VIA_DEP} == 1 ]]; then
- for PROJECT in cla-sysrepo netconf-cli gammarus velia rousette; do
+ for PROJECT in cla-sysrepo netconf-cli gammarus velia rousette sysrepo-ietf-alarms; do
# If there's a change for ${PROJECT} queued ahead, ensure it gets used.
# This means that if our submodules still pin, say, `cla-sysrepo` to some ancient version and we're testing a `netconf-cli` change,
# then we will keep using that ancient `cla-sysrepo`. Hopefully this reduces the number of false alerts.
diff --git a/configs/czechlight_clearfog_defconfig b/configs/czechlight_clearfog_defconfig
index 7397582..654a5cc 100644
--- a/configs/czechlight_clearfog_defconfig
+++ b/configs/czechlight_clearfog_defconfig
@@ -117,3 +117,4 @@
BR2_PACKAGE_VELIA=y
BR2_PACKAGE_RESET_SYSREPO=y
BR2_PACKAGE_ROUSETTE=y
+BR2_PACKAGE_SYSREPO_IETF_ALARMS=y
diff --git a/dev-setup-git.sh b/dev-setup-git.sh
index 580dbda..6792070 100755
--- a/dev-setup-git.sh
+++ b/dev-setup-git.sh
@@ -25,6 +25,7 @@
GAMMARUS_OVERRIDE_SRCDIR = ${CZECHLIGHT_BR2_EXT_LOC}/submodules/gammarus
VELIA_OVERRIDE_SRCDIR = ${CZECHLIGHT_BR2_EXT_LOC}/submodules/velia
ROUSETTE_OVERRIDE_SRCDIR = ${CZECHLIGHT_BR2_EXT_LOC}/submodules/rousette
+SYSREPO_IETF_ALARMS_OVERRIDE_SRCDIR = ${CZECHLIGHT_BR2_EXT_LOC}/submodules/sysrepo-ietf-alarms
define CZECHLIGHT_GIT_FIX_GITDIR
echo "gitdir: \$\$(git rev-parse --resolve-git-dir \$(SRCDIR)/.git)" > \$(@D)/.git
@@ -34,6 +35,7 @@
GAMMARUS_POST_RSYNC_HOOKS += CZECHLIGHT_GIT_FIX_GITDIR
VELIA_POST_RSYNC_HOOKS += CZECHLIGHT_GIT_FIX_GITDIR
ROUSETTE_POST_RSYNC_HOOKS += CZECHLIGHT_GIT_FIX_GITDIR
+SYSREPO_IETF_ALARMS_POST_RSYNC_HOOKS += CZECHLIGHT_GIT_FIX_GITDIR
EOF
diff --git a/package/Config.in b/package/Config.in
index 0ef80ea..a494e28 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -8,3 +8,4 @@
source "$BR2_EXTERNAL_CZECHLIGHT_PATH/package/grub2-tools/Config.in"
source "$BR2_EXTERNAL_CZECHLIGHT_PATH/package/reset-sysrepo/Config.in"
source "$BR2_EXTERNAL_CZECHLIGHT_PATH/package/rousette/Config.in"
+source "$BR2_EXTERNAL_CZECHLIGHT_PATH/package/sysrepo-ietf-alarms/Config.in"
diff --git a/package/czechlight-cfg-fs/czechlight-install-yang.sh b/package/czechlight-cfg-fs/czechlight-install-yang.sh
index 9c072d4..edfd6b1 100755
--- a/package/czechlight-cfg-fs/czechlight-install-yang.sh
+++ b/package/czechlight-cfg-fs/czechlight-install-yang.sh
@@ -9,6 +9,7 @@
CLA_YANG="${CLA_YANG:-/usr/share/cla-sysrepo/yang}"
VELIA_YANG="${VELIA_YANG:-/usr/share/velia/yang}"
+ALARMS_YANG="${ALARMS_YANG:-/usr/share/sysrepo-ietf-alarms/yang}"
PROC_CMDLINE="${PROC_CMDLINE:-/proc/cmdline}"
for ARG in $(cat "$PROC_CMDLINE"); do
@@ -73,6 +74,9 @@
sysrepoctl --search-dirs ${CLA_YANG} --install ${CLA_YANG}/czechlight-calibration-device@2019-06-25.yang --permissions 0660
fi
+sysrepoctl --search-dirs ${ALARMS_YANG} --install ${ALARMS_YANG}/ietf-alarms@2019-09-11.yang --permissions 0660 --enable-feature alarm-shelving --enable-feature alarm-summary
+sysrepoctl --search-dirs ${ALARMS_YANG} --install ${ALARMS_YANG}/sysrepo-ietf-alarms@2022-02-17.yang --permissions 0660
+
sysrepoctl --search-dirs ${VELIA_YANG} --install ${VELIA_YANG}/ietf-system@2014-08-06.yang --permissions 0660
sysrepoctl --search-dirs ${VELIA_YANG} --install ${VELIA_YANG}/czechlight-lldp@2020-11-04.yang --permissions 0660
diff --git a/package/czechlight-cfg-fs/czechlight-migrate.sh b/package/czechlight-cfg-fs/czechlight-migrate.sh
index bb95783..2046010 100755
--- a/package/czechlight-cfg-fs/czechlight-migrate.sh
+++ b/package/czechlight-cfg-fs/czechlight-migrate.sh
@@ -11,6 +11,7 @@
export CLA_YANG="${CLA_YANG:-/usr/share/cla-sysrepo/yang}"
export VELIA_YANG="${VELIA_YANG:-/usr/share/velia/yang}"
+export ALARMS_YANG="${ALARMS_YANG:-/usr/share/sysrepo-ietf-alarms/yang}"
# load migrations and perform a sanity check (filename's numerical prefix corresponds to the order in the MIGRATIONS array)
source $MIGRATIONS
diff --git a/package/sysrepo-ietf-alarms/Config.in b/package/sysrepo-ietf-alarms/Config.in
new file mode 100644
index 0000000..0d87925
--- /dev/null
+++ b/package/sysrepo-ietf-alarms/Config.in
@@ -0,0 +1,12 @@
+config BR2_PACKAGE_SYSREPO_IETF_ALARMS
+ bool "velia"
+ select BR2_PACKAGE_DOCOPT_CPP
+ select BR2_PACKAGE_SPDLOG
+ select BR2_PACKAGE_SYSREPO
+ select BR2_PACKAGE_SYSREPO_CPP
+ select BR2_PACKAGE_CZECHLIGHT_CFG_FS
+ select BR2_PACKAGE_DATE
+ help
+ Implementing the `ietf-alarms` YANG module for sysrepo.
+
+ https://gerrit.cesnet.cz/q/project:CzechLight/sysrepo-ietf-alarms
diff --git a/package/sysrepo-ietf-alarms/sysrepo-ietf-alarms.hash b/package/sysrepo-ietf-alarms/sysrepo-ietf-alarms.hash
new file mode 100644
index 0000000..075e53a
--- /dev/null
+++ b/package/sysrepo-ietf-alarms/sysrepo-ietf-alarms.hash
@@ -0,0 +1 @@
+none xxx
diff --git a/package/sysrepo-ietf-alarms/sysrepo-ietf-alarms.mk b/package/sysrepo-ietf-alarms/sysrepo-ietf-alarms.mk
new file mode 100644
index 0000000..dab9957
--- /dev/null
+++ b/package/sysrepo-ietf-alarms/sysrepo-ietf-alarms.mk
@@ -0,0 +1,17 @@
+SYSREPO_IETF_ALARMS_VERSION = master
+SYSREPO_IETF_ALARMS_SITE = https://gerrit.cesnet.cz/CzechLight/sysrepo-ietf-alarms
+SYSREPO_IETF_ALARMS_SITE_METHOD = git
+SYSREPO_IETF_ALARMS_INSTALL_STAGING = NO
+SYSREPO_IETF_ALARMS_DEPENDENCIES = docopt-cpp spdlog date sysrepo sysrepo-cpp
+SYSREPO_IETF_ALARMS_LICENSE = Apache-2.0
+SYSREPO_IETF_ALARMS_LICENSE_FILES = LICENSE.md
+
+define SYSREPO_IETF_ALARMS_INSTALL_INIT_SYSTEMD
+ mkdir -p $(TARGET_DIR)/usr/lib/systemd/system/multi-user.target.wants/
+ $(INSTALL) -D -m 0644 \
+ $(BR2_EXTERNAL_CZECHLIGHT_PATH)/package/sysrepo-ietf-alarms/sysrepo-ietf-alarms.service \
+ $(TARGET_DIR)/usr/lib/systemd/system/
+ ln -sf ../sysrepo-ietf-alarms.service $(TARGET_DIR)/usr/lib/systemd/system/multi-user.target.wants/
+endef
+
+$(eval $(cmake-package))
diff --git a/package/sysrepo-ietf-alarms/sysrepo-ietf-alarms.service b/package/sysrepo-ietf-alarms/sysrepo-ietf-alarms.service
new file mode 100644
index 0000000..0bb5884
--- /dev/null
+++ b/package/sysrepo-ietf-alarms/sysrepo-ietf-alarms.service
@@ -0,0 +1,25 @@
+[Unit]
+Description=IETF-alarms management via sysrepo
+After=syslog.target network.target cfg-restore-sysrepo.service czechlight-migrate.service nacm-restore.service
+Before=rauc-mark-good.service
+PartOf=netopeer2.service
+Requires=cfg-restore-sysrepo.service czechlight-migrate.service nacm-restore.service
+ConditionKernelCommandLine=czechlight
+
+[Service]
+Type=simple
+ExecStart=/usr/bin/sysrepo-ietf-alarmsd
+Group=sysrepo
+PrivateTmp=yes
+PrivateDevices=no
+ProtectSystem=yes
+ProtectHome=yes
+Restart=always
+RestartSec=10s
+LogRateLimitIntervalSec=10
+LogRateLimitBurst=30000
+SyslogLevel=alert
+
+[Install]
+WantedBy=multi-user.target
+RequiredBy=velia-health.service
diff --git a/submodules/buildroot b/submodules/buildroot
index c189d19..8be83c1 160000
--- a/submodules/buildroot
+++ b/submodules/buildroot
@@ -1 +1 @@
-Subproject commit c189d19d56af5dca0a387ae78a40dc14698ef469
+Subproject commit 8be83c1c817c47e0a9c2192e2926a0a75fff1317
diff --git a/submodules/sysrepo-ietf-alarms b/submodules/sysrepo-ietf-alarms
new file mode 160000
index 0000000..2b99fa9
--- /dev/null
+++ b/submodules/sysrepo-ietf-alarms
@@ -0,0 +1 @@
+Subproject commit 2b99fa9e1762d3cda63f3b9e47be127ee7c93147
diff --git a/tests/czechlight-cfg-fs/migrations.py b/tests/czechlight-cfg-fs/migrations.py
index 87f4b4a..d243d06 100644
--- a/tests/czechlight-cfg-fs/migrations.py
+++ b/tests/czechlight-cfg-fs/migrations.py
@@ -21,6 +21,7 @@
CLA_SYSREPO_PATH = BR2_ROOT / 'submodules/cla-sysrepo'
VELIA_PATH = BR2_ROOT / 'submodules/velia'
+ALARMS_PATH = BR2_ROOT / 'submodules/sysrepo-ietf-alarms'
NETOPEER2_PATH = BR2_ROOT / 'submodules/dependencies/Netopeer2'
@@ -68,6 +69,7 @@
res['SYSREPO_REPOSITORY_PATH'] = self._running_directory / 'sysrepo_repository'
res['CLA_YANG'] = CLA_SYSREPO_PATH / 'yang'
res['VELIA_YANG'] = VELIA_PATH / 'yang'
+ res['ALARMS_YANG'] = ALARMS_PATH / 'yang'
res['PROC_CMDLINE'] = self.proc_cmdline
res['CFG_VERSION_FILE'] = self.version_file
res['CFG_STARTUP_FILE'] = self.startup_file