Browse code

Add etcd3 support for s390x

Since [1] devstack is failing on s390x with "Distro not supported".
The reason for this is the missing etcd3 support. It worked before
[1] as we were able to disable etcd3 via local.conf. But as etcd3 is
a base service, we might not be able to rely on this workarond in
the future anymore.

As there is no etcd3 binary hosted on github like it is for other
architectures, the user needs to specify an alternative download
URL via local.conf. Otherwise devstack will exit with an appropriate
error message.

ETCD_DOWNLOAD_URL=<custom-download-url>

[1] https://github.com/openstack-dev/devstack/commit/d8bb220606737719bcdf7c5b4f54906f2974c71c

Change-Id: I1c378a0456dcf2e94d79a02de9d3e16753d946d6
Partial-Bug: #1693192

Andreas Scheuring authored on 2017/09/13 07:24:02
Showing 2 changed files
... ...
@@ -779,9 +779,15 @@ are needed::
779 779
     DOWNLOAD_DEFAULT_IMAGES=False
780 780
     IMAGE_URLS="https://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-s390x-disk1.img"
781 781
 
782
+    # Provide a custom etcd3 binary download URL and ints sha256.
783
+    # The binary must be located under '/<etcd version>/etcd-<etcd-version>-linux-s390x.tar.gz'
784
+    # on this URL.
785
+    # Build instructions for etcd3: https://github.com/linux-on-ibm-z/docs/wiki/Building-etcd
786
+    ETCD_DOWNLOAD_URL=<your-etcd-download-url>
787
+    ETCD_SHA256=<your-etcd3-sha256>
788
+
782 789
     enable_service n-sproxy
783 790
     disable_service n-novnc
784
-    disable_service etcd3  # https://bugs.launchpad.net/devstack/+bug/1693192
785 791
 
786 792
     [[post-config|$NOVA_CONF]]
787 793
 
... ...
@@ -803,8 +809,11 @@ Reasoning:
803 803
   needed if you want to use the *serial console* outside of the all-in-one
804 804
   setup.
805 805
 
806
-* The service ``etcd3`` needs to be disabled as long as bug report
807
-  https://bugs.launchpad.net/devstack/+bug/1693192 is not resolved.
806
+* A link to an etcd3 binary and its sha256 needs to be provided as the
807
+  binary for s390x is not hosted on github like it is for other
808
+  architectures. For more details see
809
+  https://bugs.launchpad.net/devstack/+bug/1693192. Etcd3 can easily be
810
+  built along https://github.com/linux-on-ibm-z/docs/wiki/Building-etcd.
808 811
 
809 812
 .. note:: To run *Tempest* against this *Devstack* all-in-one, you'll need
810 813
    to use a guest image which is smaller than 1GB when uncompressed.
... ...
@@ -719,6 +719,7 @@ ETCD_SHA256_AMD64="4fde194bbcd259401e2b5c462dfa579ee7f6af539f13f130b8f5b4f52e3b3
719 719
 # NOTE(sdague): etcd v3.1.7 doesn't have anything for these architectures, though 3.2.0 does.
720 720
 ETCD_SHA256_ARM64=""
721 721
 ETCD_SHA256_PPC64=""
722
+ETCD_SHA256_S390X=""
722 723
 # Make sure etcd3 downloads the correct architecture
723 724
 if is_arch "x86_64"; then
724 725
     ETCD_ARCH="amd64"
... ...
@@ -729,6 +730,16 @@ elif is_arch "aarch64"; then
729 729
 elif is_arch "ppc64le"; then
730 730
     ETCD_ARCH="ppc64le"
731 731
     ETCD_SHA256=${ETCD_SHA256:-$ETCD_SHA256_PPC64}
732
+elif is_arch "s390x"; then
733
+    # An etcd3 binary for s390x is not available on github like it is
734
+    # for other arches. Only continue if a custom download URL was
735
+    # provided.
736
+    if [[ -n "${ETCD_DOWNLOAD_URL}" ]]; then
737
+        ETCD_ARCH="s390x"
738
+        ETCD_SHA256=${ETCD_SHA256:-$ETCD_SHA256_S390X}
739
+    else
740
+        exit_distro_not_supported "etcd3. No custom ETCD_DOWNLOAD_URL provided."
741
+    fi
732 742
 else
733 743
     exit_distro_not_supported "invalid hardware type - $ETCD_ARCH"
734 744
 fi