clearfog: Unit files for the SDN ROADM

Change-Id: I1df79eddd217bb757f4ad2e8e67ad7914d6b9aee
diff --git a/package/cla-sysrepo/cla-appliance.service.in b/package/cla-sysrepo/cla-appliance.service.in
new file mode 100644
index 0000000..fb7b29a
--- /dev/null
+++ b/package/cla-sysrepo/cla-appliance.service.in
@@ -0,0 +1,23 @@
+[Unit]
+Description=CzechLight __MODEL__ driver
+After=syslog.target network.target sysrepod.service
+Before=rauc-mark-good.service
+Requires=sysrepod.service
+PartOf=sysrepod.service
+StartLimitIntervalSec=0
+ConditionKernelCommandLine=czechlight=__MODEL__
+
+[Service]
+Type=simple
+ExecStart=/usr/bin/cla-sysrepod --properties-log-level=5 --sr-bridge-log-level=5 --sysrepo-log-level=3 --appliance=__MODEL__-clearfog
+PrivateTmp=yes
+PrivateDevices=no
+ProtectSystem=yes
+ProtectHome=yes
+Restart=on-abnormal
+SystemCallArchitectures=native
+Restart=always
+WatchdogSec=15s
+
+[Install]
+WantedBy=multi-user.target
diff --git a/package/cla-sysrepo/cla-install-yang.service.in b/package/cla-sysrepo/cla-install-yang.service.in
new file mode 100644
index 0000000..c3df8ea
--- /dev/null
+++ b/package/cla-sysrepo/cla-install-yang.service.in
@@ -0,0 +1,15 @@
+[Unit]
+Description=Install YANG and initial data for __MODEL__
+Requires=sysrepod.service
+ConditionKernelCommandLine=czechlight=__MODEL__
+ConditionPathExistsGlob=!/etc/sysrepo/yang/__YANG__@*.yang
+Before=sysrepod.service
+
+[Service]
+Type=oneshot
+ExecStart=/usr/bin/sysrepoctl --install --yang /usr/share/cla-sysrepo/yang/__YANG__.yang
+ExecStart=/usr/bin/sysrepoctl --module __YANG__ --feature-enable __FEATURE__
+ExecStart=/usr/bin/sysrepocfg --datastore=startup --import=/usr/share/cla-sysrepo/yang/__MODEL__.json __YANG__
+
+[Install]
+WantedBy=multi-user.target
diff --git a/package/cla-sysrepo/cla-sysrepo.mk b/package/cla-sysrepo/cla-sysrepo.mk
index ace8f9c..ddef562 100644
--- a/package/cla-sysrepo/cla-sysrepo.mk
+++ b/package/cla-sysrepo/cla-sysrepo.mk
@@ -6,4 +6,31 @@
 CLA_SYSREPO_CONF_OPTS = -DTHREADS_PTHREAD_ARG:STRING=-pthread
 CLA_SYSREPO_LICENSE_FILES = LICENSE.md
 
+define CLA_SYSREPO_ONE_MODEL
+	sed \
+		-e "s/__MODEL__/$1/g" \
+		-e "s/__YANG__/$2/g" \
+		$(BR2_EXTERNAL_CZECHLIGHT_PATH)/package/cla-sysrepo/cla-install-yang.service.in \
+		> $(TARGET_DIR)/usr/lib/systemd/system/cla-install-yang-$1.service
+	# FIXME: zero or multiple features...
+	sed -i 's|__FEATURE__|ExecStart=/usr/bin/sysrepoctl --module $2 --feature-enable $3\n__FEATURE__|' \
+		$(TARGET_DIR)/usr/lib/systemd/system/cla-install-yang-$1.service
+	sed -i '/__FEATURE__/d' $(TARGET_DIR)/usr/lib/systemd/system/cla-install-yang-$1.service
+	sed \
+		-e "s/__MODEL__/$1/g" \
+		-e "s/__YANG__/$2/g" \
+		$(BR2_EXTERNAL_CZECHLIGHT_PATH)/package/cla-sysrepo/cla-appliance.service.in \
+		> $(TARGET_DIR)/usr/lib/systemd/system/cla-$1.service
+	mkdir -p $(TARGET_DIR)/usr/lib/systemd/system/multi-user.target.wants
+	ln -sf ../cla-install-yang-$1.service \
+		$(TARGET_DIR)/usr/lib/systemd/system/multi-user.target.wants/
+	ln -sf ../cla-$1.service \
+		$(TARGET_DIR)/usr/lib/systemd/system/multi-user.target.wants/
+endef
+
+define CLA_SYSREPO_INSTALL_INIT_SYSTEMD
+	$(call CLA_SYSREPO_ONE_MODEL,sdn-roadm-add-drop,czechlight-roadm-device,hw-add-drop-20)
+	$(call CLA_SYSREPO_ONE_MODEL,sdn-roadm-line,czechlight-roadm-device,hw-line-9)
+endef
+
 $(eval $(cmake-package))