
+check_iso_name() +{ + local skipped_iso_prefixes + case ${iso_os} in + "openeuler") + skipped_iso_prefixes=("openEuler-2.0-SP8")
感觉这样的测试没抓住问题的本质 -- 想要的是xxx, 测试的却是yyy. 有什么办法直接测试xxx? 这样的测试就有鲁棒性.
我们当前的检测iso更新的策略如下: 监测是不同os(如openeuler)的iso是否有发布更新,目前openeuler 提供的是一个iso的sha256sum文件,该文件会在每次发布新的iso时候被更新。 文件中有如下两个内容: - latest iso url; - latest iso sha256sum; 关于iso url中的iso名称,我咨询了下openeuler的iso版本发布的支持人员, 得到以下答复: - iso名称当前有两种,openEuler-2.0-SP8-xxx.iso,openEuler-20.03-xxx.iso; - 其中openEuler-2.0.SP8-xx.iso不是给我们用的; - 不确定以后是否会有用作新用途的iso加入进来; 所以我这边的策略是准备了一个array,用来填写要跳过的iso names,以后openeuler 若有新增则进行排除。
上面的列表将来需要更新, 会有长期维护代价.
所以说优化的话,限于上面说的背景,我能想到的是把array从记录要跳过的iso名, 换为记录要执行的iso名,但这样我觉得意义不是很大? 由于我这边暂时也没有其他好的思路,所以如果有好的办法来实现,还望不吝赐教~ -------- Thanks Yu Chuan
Thanks, Fengguang
+ ;; + *) + return + ;; + esac + + local prefix + for prefix in "${skipped_iso_prefixes[@]}" + do + [[ ${ISO_NAME} != ${prefix}* ]] || + exit_info "${iso_os} haven't release new iso for openEuler, no need to generate rootfs" + done +} + get_daily_iso_checksum() { ISO_URL="$(curl "${iso_url_file}")" @@ -63,8 +89,10 @@ get_daily_iso_checksum() local pub_ip=$(echo "${iso_url_file}" | grep -oEw "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}") ISO_URL="$(curl "${iso_url_file}" |sed -r "s/[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/${pub_ip}/g")" } + ISO_NAME=$(basename "$ISO_URL") ISO_CHECKSUM_URL="${ISO_URL}.sha256sum" + check_iso_name
curl -o "${CHECKSUM_FILE_CACHE}.tmp" "${ISO_CHECKSUM_URL}" SHA256SUM_NET=$(awk '{print $1}' "${CHECKSUM_FILE_CACHE}.tmp") @@ -118,9 +146,8 @@ check_sha256sum_update()
if [ "$SHA256SUM_CACHE" == "$SHA256SUM_NET" ] then - log_info "${iso_os} haven't release new iso, no need to generate rootfs" rm -f "${CHECKSUM_FILE_CACHE}.tmp" - exit 0 + exit_info "${iso_os} haven't release new iso, no need to generate rootfs" else log_info "${iso_os} release a new iso, start to generate rootfs ..." return -- 2.23.0