@@ -13,18 +13,23 @@ data:
13
13
#!/bin/bash
14
14
set -e
15
15
16
+ function log()
17
+ {
18
+ echo "$(date --iso-8601=seconds) [cnibincopy] ${1}"
19
+ }
20
+
16
21
DESTINATION_DIRECTORY=/host/opt/cni/bin/
17
22
18
23
# Perform validation of usage
19
24
if [ -z "$RHEL7_SOURCE_DIRECTORY" ] ||
20
25
[ -z "$RHEL8_SOURCE_DIRECTORY" ] ||
21
26
[ -z "$DEFAULT_SOURCE_DIRECTORY" ]; then
22
- echo "FATAL ERROR: You must set env variables: RHEL7_SOURCE_DIRECTORY, RHEL8_SOURCE_DIRECTORY, DEFAULT_SOURCE_DIRECTORY"
27
+ log "FATAL ERROR: You must set env variables: RHEL7_SOURCE_DIRECTORY, RHEL8_SOURCE_DIRECTORY, DEFAULT_SOURCE_DIRECTORY"
23
28
exit 1
24
29
fi
25
30
26
31
if [ ! -d "$DESTINATION_DIRECTORY" ]; then
27
- echo "FATAL ERROR: Destination directory ($DESTINATION_DIRECTORY) does not exist"
32
+ log "FATAL ERROR: Destination directory ($DESTINATION_DIRECTORY) does not exist"
28
33
exit 1
29
34
fi
30
35
@@ -41,11 +46,11 @@ data:
41
46
if [ "${VARIANT_ID}" == "coreos" ]; then
42
47
rhelmajor=8
43
48
else
44
- echo "FATAL ERROR: Unsupported Fedora variant=${VARIANT_ID}"
49
+ log "FATAL ERROR: Unsupported Fedora variant=${VARIANT_ID}"
45
50
exit 1
46
51
fi
47
52
;;
48
- *) echo "FATAL ERROR: Unsupported OS ID=${ID}"; exit 1
53
+ *) log "FATAL ERROR: Unsupported OS ID=${ID}"; exit 1
49
54
;;
50
55
esac
51
56
@@ -66,24 +71,38 @@ data:
66
71
fi
67
72
;;
68
73
*)
69
- echo "ERROR: RHEL Major Version Unsupported, rhelmajor=${rhelmajor}"
74
+ log "ERROR: RHEL Major Version Unsupported, rhelmajor=${rhelmajor}"
70
75
;;
71
76
esac
72
77
73
78
# When it doesn't exist, fall back to the original directory.
74
79
if [ "$founddir" == false ]; then
75
- echo "Source directory unavailable for OS version: ${rhelmajor}"
80
+ log "Source directory unavailable for OS version: ${rhelmajor}"
76
81
sourcedir=$DEFAULT_SOURCE_DIRECTORY
77
82
fi
78
83
79
- cp -rf ${sourcedir}* $DESTINATION_DIRECTORY
80
-
84
+ # Use a subdirectory called "upgrade" so we can atomically move fully copied files.
85
+ UPGRADE_DIRECTORY=${DESTINATION_DIRECTORY}upgrade_$(uuidgen)
86
+ rm -Rf $UPGRADE_DIRECTORY
87
+ mkdir -p $UPGRADE_DIRECTORY
88
+ cp -rf ${sourcedir}* $UPGRADE_DIRECTORY
81
89
if [ $? -eq 0 ]; then
82
- echo "Successfully copied files in ${sourcedir} to $DESTINATION_DIRECTORY "
90
+ log "Successfully copied files in ${sourcedir} to $UPGRADE_DIRECTORY "
83
91
else
84
- echo "Failed to copy files in ${sourcedir} to $DESTINATION_DIRECTORY"
92
+ log "Failed to copy files in ${sourcedir} to $UPGRADE_DIRECTORY"
93
+ rm -Rf $UPGRADE_DIRECTORY
85
94
exit 1
86
95
fi
96
+ mv -f $UPGRADE_DIRECTORY/* ${DESTINATION_DIRECTORY}/
97
+ if [ $? -eq 0 ]; then
98
+ log "Successfully moved files in $UPGRADE_DIRECTORY to ${DESTINATION_DIRECTORY}"
99
+ else
100
+ log "Failed to move files in $UPGRADE_DIRECTORY to ${DESTINATION_DIRECTORY}"
101
+ rm -Rf $UPGRADE_DIRECTORY
102
+ exit 1
103
+ fi
104
+ rm -Rf $UPGRADE_DIRECTORY
105
+
87
106
#
88
107
# Safe sysctls
89
108
# -------------
0 commit comments