Skip to content

Commit b7d69fe

Browse files
Merge pull request #1410 from rebtoor/fix/ovn-scp-ipv6-brackets
ovn_adoption: fix scp with IPv6 addresses in cluster-to-standalone
2 parents ed3d943 + 9cac77c commit b7d69fe

2 files changed

Lines changed: 15 additions & 7 deletions

File tree

docs_user/modules/proc_migrating-ovn-data.adoc

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,14 @@ $CONTROLLER1_SSH sudo ovsdb-tool cluster-to-standalone /tmp/ovn_standalone_conve
5757
$CONTROLLER1_SSH sudo chmod 644 /tmp/ovn_standalone_conversion/ovn*.db
5858
5959
# Create local directory and copy converted databases
60+
# Note: brackets around the address are required so that IPv6 colons
61+
# are not confused with the scp host:path separator.
6062
mkdir -p /tmp/ovn_adoption_dbs
61-
CONTROLLER1_SCP=$(echo "$CONTROLLER1_SSH" | sed 's/^ssh/scp/')
62-
${CONTROLLER1_SCP}:/tmp/ovn_standalone_conversion/ovnnb_db.db /tmp/ovn_adoption_dbs/
63-
${CONTROLLER1_SCP}:/tmp/ovn_standalone_conversion/ovnsb_db.db /tmp/ovn_adoption_dbs/
63+
CONTROLLER1_SCP=$(echo "$CONTROLLER1_SSH" | sed -e 's/^ssh/scp/' -e 's/ [^ ]*$//')
64+
CONTROLLER1_USERHOST=$(echo "$CONTROLLER1_SSH" | awk '{print $NF}')
65+
CONTROLLER1_SCP_DEST=$(echo "$CONTROLLER1_USERHOST" | sed 's/@\(.*\)/@[\1]/')
66+
${CONTROLLER1_SCP} ${CONTROLLER1_SCP_DEST}:/tmp/ovn_standalone_conversion/ovnnb_db.db /tmp/ovn_adoption_dbs/
67+
${CONTROLLER1_SCP} ${CONTROLLER1_SCP_DEST}:/tmp/ovn_standalone_conversion/ovnsb_db.db /tmp/ovn_adoption_dbs/
6468
6569
# Cleanup on controller
6670
$CONTROLLER1_SSH sudo rm -rf /tmp/ovn_standalone_conversion

tests/roles/ovn_adoption/tasks/cluster_to_standalone.yaml

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,18 @@
2323
# Create local temp directory
2424
mkdir -p /tmp/ovn_adoption_dbs
2525
26-
# Use scp like other parts of the codebase
27-
CONTROLLER1_SCP=$(echo "$CONTROLLER1_SSH" | sed 's/^ssh/scp/')
26+
# Build scp command from ssh command, wrapping the address in brackets
27+
# so that IPv6 colons are not confused with the scp host:path separator.
28+
# The last token is user@host; insert brackets around the host part only.
29+
CONTROLLER1_SCP=$(echo "$CONTROLLER1_SSH" | sed -e 's/^ssh/scp/' -e 's/ [^ ]*$//')
30+
CONTROLLER1_USERHOST=$(echo "$CONTROLLER1_SSH" | awk '{print $NF}')
31+
CONTROLLER1_SCP_DEST=$(echo "$CONTROLLER1_USERHOST" | sed 's/@\(.*\)/@[\1]/')
2832
2933
echo "Copying NB database to ansible controller..."
30-
${CONTROLLER1_SCP}:/tmp/ovn_standalone_conversion/ovnnb_db.db /tmp/ovn_adoption_dbs/
34+
${CONTROLLER1_SCP} ${CONTROLLER1_SCP_DEST}:/tmp/ovn_standalone_conversion/ovnnb_db.db /tmp/ovn_adoption_dbs/
3135
3236
echo "Copying SB database to ansible controller..."
33-
${CONTROLLER1_SCP}:/tmp/ovn_standalone_conversion/ovnsb_db.db /tmp/ovn_adoption_dbs/
37+
${CONTROLLER1_SCP} ${CONTROLLER1_SCP_DEST}:/tmp/ovn_standalone_conversion/ovnsb_db.db /tmp/ovn_adoption_dbs/
3438
3539
# Cleanup on controller
3640
$CONTROLLER1_SSH sudo rm -rf /tmp/ovn_standalone_conversion

0 commit comments

Comments
 (0)