New tool to generate lxd images from an OSM installation and push them to ETSI FTP
[osm/devops.git] / tools / gen-lxdimages.sh
1 #!/bin/bash
2
3 function usage() {
4 echo -e "usage: $0 [OPTIONS]"
5 echo -e " OPTIONS"
6 echo -e " -c <COMPONENT>: the component whose lxd image has to be generated. Allowed values: RO, VCA, SOUI, MON"
7 echo -e " -R <RELEASE>: push images to specific RELEASE folder"
8 }
9
10 GEN_ALL="y"
11 GEN_RO=""
12 GEN_VCA=""
13 GEN_SOUI=""
14 GEN_MON=""
15 RELEASE="ReleaseTHREE"
16
17 while getopts ":h" o; do
18 case "${o}" in
19 h)
20 usage
21 exit 0
22 ;;
23 R)
24 RELEASE="${OPTARG}"
25 ;;
26 c)
27 [ "${OPTARG}" == "RO" ] && GEN_ALL="" && GEN_RO="y" && continue
28 [ "${OPTARG}" == "VCA" ] && GEN_ALL="" && GEN_VCA="y" && continue
29 [ "${OPTARG}" == "SOUI" ] && GEN_ALL="" && GEN_SOUI="y" && continue
30 [ "${OPTARG}" == "MON" ] && GEN_ALL="" && GEN_MON="y" && continue
31 echo -e "Invalid option: '--$OPTARG'\n" >&2
32 usage && exit 1
33 ;;
34 *)
35 usage && exit 1
36 ;;
37 esac
38 done
39
40 [ "$GEN_ALL" == "y" ] && GEN_RO="y" && GEN_VCA="y" && GEN_SOUI="y" && GEN_MON="y"
41
42 echo "Stopping containers"
43 lxc stop RO
44 lxc stop VCA
45 lxc stop SO-ub
46 #lxc stop MON
47
48 echo "Saving containers as images in local lxd server"
49 OSM_RO_IMAGE="osm-ro"
50 OSM_VCA_IMAGE="osm-vca"
51 OSM_SOUI_IMAGE="osm-soui"
52 OSM_MON_IMAGE="osm-mon"
53
54 [ -n "$GEN_RO" ] && lxc publish --public RO --alias ${OSM_RO_IMAGE}
55 [ -n "$GEN_VCA" ] && lxc publish --public VCA --alias ${OSM_VCA_IMAGE}
56 [ -n "$GEN_SOUI" ] && lxc publish --public SO-ub --alias ${OSM_SOUI_IMAGE}
57 #[ -n "$GEN_MON" ] && lxc publish --public MON --alias ${OSM_MON_IMAGE}
58 #lxc image list
59
60 #echo "Copying images to a remote lxd server"
61 #[ -n "$GEN_RO" ] && lxc image copy ${OSM_RO_IMAGE} remote:
62 #[ -n "$GEN_VCA" ] && lxc image copy ${OSM_VCA_IMAGE} remote:
63 #[ -n "$GEN_SOUI" ] && lxc image copy ${OSM_SOUI_IMAGE} remote:
64 #[ -n "$GEN_MON" ] && lxc image copy ${OSM_MON_IMAGE} remote:
65
66 echo "Exporting images as targz"
67 TEMPDIR="$(mktemp -d -q --tmpdir "osmlxd.XXXXXX")"
68 trap 'rm -rf "$TEMPDIR"' EXIT
69 RELEASE_DIR="${TEMPDIR}/${RELEASE}"
70
71 [ -n "$GEN_RO" ] && lxc image export ${OSM_RO_IMAGE} $RELEASE_DIR/${OSM_RO_IMAGE}
72 [ -n "$GEN_VCA" ] && lxc image export ${OSM_VCA_IMAGE} $RELEASE_DIR/${OSM_VCA_IMAGE}
73 [ -n "$GEN_SOUI" ] && lxc image export ${OSM_SOUI_IMAGE} $RELEASE_DIR/${OSM_SOUI_IMAGE}
74 #[ -n "$GEN_MON" ] && lxc image export ${OSM_MON_IMAGE} $RELEASE_DIR/${OSM_MON_IMAGE}
75 [ -n "$GEN_RO" ] && chmod +r $RELEASE_DIR/${OSM_RO_IMAGE}
76 [ -n "$GEN_VCA" ] && chmod +r $RELEASE_DIR/${OSM_VCA_IMAGE}
77 [ -n "$GEN_SOUI" ] && chmod +r $RELEASE_DIR/${OSM_SOUI_IMAGE}
78 #[ -n "$GEN_MON" ] && chmod +r $RELEASE_DIR/${OSM_MON_IMAGE}
79
80 echo "Pushing images to ETSI FTP server"
81 RSYNC_USER_HOST=osmusers@osm-download.etsi.org
82 RSYNC_OPTIONS="--delete --password-file rsync.pass"
83 cd $TEMPDIR && rsync -avR $RSYNC_OPTIONS $RELEASE rsync://$RSYNC_USER_HOST/repos/osm/lxd
84
85