fix(release): accept canonical infra hostname
This commit is contained in:
parent
761a34a121
commit
94d35f0b97
@ -5,6 +5,7 @@ set -euo pipefail
|
|||||||
|
|
||||||
readonly EXPECTED_ACK='IMPORT_NEWAPI_POOL_TO_STAGING'
|
readonly EXPECTED_ACK='IMPORT_NEWAPI_POOL_TO_STAGING'
|
||||||
readonly EXPECTED_SOURCE_HOST='mini-infra'
|
readonly EXPECTED_SOURCE_HOST='mini-infra'
|
||||||
|
readonly EXPECTED_SOURCE_RUNTIME_HOST='minione-ubuntu-infra'
|
||||||
readonly EXPECTED_TARGET_HOST='root@100.64.0.7'
|
readonly EXPECTED_TARGET_HOST='root@100.64.0.7'
|
||||||
readonly MYSQL_CONTAINER='game-staging-mysql'
|
readonly MYSQL_CONTAINER='game-staging-mysql'
|
||||||
readonly MYSQL_DATABASE='ruoyi-vue-pro'
|
readonly MYSQL_DATABASE='ruoyi-vue-pro'
|
||||||
@ -31,8 +32,10 @@ esac
|
|||||||
|
|
||||||
source_hostname="$("$HOSTNAME_BIN" -s 2>/dev/null || "$HOSTNAME_BIN")"
|
source_hostname="$("$HOSTNAME_BIN" -s 2>/dev/null || "$HOSTNAME_BIN")"
|
||||||
source_hostname="${source_hostname%%.*}"
|
source_hostname="${source_hostname%%.*}"
|
||||||
[ "$source_hostname" = "$EXPECTED_SOURCE_HOST" ] || \
|
case "$source_hostname" in
|
||||||
die "只允许在 mini-infra 离线执行,actual=$source_hostname"
|
"$EXPECTED_SOURCE_HOST"|"$EXPECTED_SOURCE_RUNTIME_HOST") ;;
|
||||||
|
*) die "只允许在 mini-infra 离线执行,actual=$source_hostname" ;;
|
||||||
|
esac
|
||||||
[ "$NEWAPI_POOL_IMPORT_HOST" = "$EXPECTED_TARGET_HOST" ] || \
|
[ "$NEWAPI_POOL_IMPORT_HOST" = "$EXPECTED_TARGET_HOST" ] || \
|
||||||
die "导入目标只允许 $EXPECTED_TARGET_HOST"
|
die "导入目标只允许 $EXPECTED_TARGET_HOST"
|
||||||
[ ! -e "$NEWAPI_POOL_IMPORT_EVIDENCE" ] || \
|
[ ! -e "$NEWAPI_POOL_IMPORT_EVIDENCE" ] || \
|
||||||
|
|||||||
@ -65,7 +65,10 @@ run_import() {
|
|||||||
|
|
||||||
run_import "$TMP_DIR/import-first.evidence" >"$TMP_DIR/first.log"
|
run_import "$TMP_DIR/import-first.evidence" >"$TMP_DIR/first.log"
|
||||||
run_import "$TMP_DIR/import-second.evidence" >"$TMP_DIR/second.log"
|
run_import "$TMP_DIR/import-second.evidence" >"$TMP_DIR/second.log"
|
||||||
for evidence in "$TMP_DIR/import-first.evidence" "$TMP_DIR/import-second.evidence"; do
|
MOCK_HOSTNAME_VALUE=minione-ubuntu-infra run_import "$TMP_DIR/import-runtime-host.evidence" \
|
||||||
|
>"$TMP_DIR/runtime-host.log"
|
||||||
|
for evidence in "$TMP_DIR/import-first.evidence" "$TMP_DIR/import-second.evidence" \
|
||||||
|
"$TMP_DIR/import-runtime-host.evidence"; do
|
||||||
[ "$(mode_of "$evidence")" = 400 ] || fail "脱敏证据权限不是 400:$evidence"
|
[ "$(mode_of "$evidence")" = 400 ] || fail "脱敏证据权限不是 400:$evidence"
|
||||||
rg -q '^status=PASS$' "$evidence" || fail "证据未记录 PASS"
|
rg -q '^status=PASS$' "$evidence" || fail "证据未记录 PASS"
|
||||||
rg -q '^source_row_count=4$' "$evidence" || fail "证据未记录四条输入"
|
rg -q '^source_row_count=4$' "$evidence" || fail "证据未记录四条输入"
|
||||||
|
|||||||
@ -242,7 +242,8 @@ def validate_provision_request(start: int, count: int, prefix: str, hostname: st
|
|||||||
安全字符与 20 字符上限,防止空跑被误记为成功或把不安全文本带入 SQL。
|
安全字符与 20 字符上限,防止空跑被误记为成功或把不安全文本带入 SQL。
|
||||||
"""
|
"""
|
||||||
short_hostname = hostname.split(".", 1)[0].lower()
|
short_hostname = hostname.split(".", 1)[0].lower()
|
||||||
if short_hostname != "mini-infra":
|
# mini-infra 是 SSH/业务别名,minione-ubuntu-infra 是机器实际 hostname;两者指向同一受控宿主。
|
||||||
|
if short_hostname not in {"mini-infra", "minione-ubuntu-infra"}:
|
||||||
raise ValueError(f"额度池预置只允许在 mini-infra 离线执行,actual={short_hostname}")
|
raise ValueError(f"额度池预置只允许在 mini-infra 离线执行,actual={short_hostname}")
|
||||||
if start < 1:
|
if start < 1:
|
||||||
raise ValueError("--start 必须大于等于 1")
|
raise ValueError("--start 必须大于等于 1")
|
||||||
|
|||||||
@ -26,6 +26,10 @@ class ProvisionRequestTest(unittest.TestCase):
|
|||||||
names = MODULE.validate_provision_request(51, 4, "neice_", "mini-infra")
|
names = MODULE.validate_provision_request(51, 4, "neice_", "mini-infra")
|
||||||
self.assertEqual(names, ["neice_051", "neice_052", "neice_053", "neice_054"])
|
self.assertEqual(names, ["neice_051", "neice_052", "neice_053", "neice_054"])
|
||||||
|
|
||||||
|
def test_accepts_canonical_runtime_hostname(self) -> None:
|
||||||
|
names = MODULE.validate_provision_request(51, 4, "neice_", "minione-ubuntu-infra")
|
||||||
|
self.assertEqual(names, ["neice_051", "neice_052", "neice_053", "neice_054"])
|
||||||
|
|
||||||
def test_rejects_non_mini_infra_host(self) -> None:
|
def test_rejects_non_mini_infra_host(self) -> None:
|
||||||
with self.assertRaisesRegex(ValueError, "mini-infra"):
|
with self.assertRaisesRegex(ValueError, "mini-infra"):
|
||||||
MODULE.validate_provision_request(51, 4, "neice_", "mini-desktop")
|
MODULE.validate_provision_request(51, 4, "neice_", "mini-desktop")
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user