Repository: incubator-brooklyn Updated Branches: refs/heads/master 21d9a91fc -> bf1801253
Fixes RabbitMQ installation on Centos 6 and 7 Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/2ae2e4d5 Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/2ae2e4d5 Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/2ae2e4d5 Branch: refs/heads/master Commit: 2ae2e4d5ed5f10e338248326027c9fd111610d51 Parents: 41b2805 Author: Martin Harris <git...@nakomis.com> Authored: Mon Feb 9 10:45:07 2015 +0000 Committer: Martin Harris <git...@nakomis.com> Committed: Mon Feb 9 10:45:07 2015 +0000 ---------------------------------------------------------------------- .../messaging/rabbit/RabbitSshDriver.java | 27 ++++++++++++++++++++ .../messaging/rabbit/RabbitEc2LiveTest.java | 13 +++++++++- 2 files changed, 39 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2ae2e4d5/software/messaging/src/main/java/brooklyn/entity/messaging/rabbit/RabbitSshDriver.java ---------------------------------------------------------------------- diff --git a/software/messaging/src/main/java/brooklyn/entity/messaging/rabbit/RabbitSshDriver.java b/software/messaging/src/main/java/brooklyn/entity/messaging/rabbit/RabbitSshDriver.java index bb8d4e2..3219a06 100644 --- a/software/messaging/src/main/java/brooklyn/entity/messaging/rabbit/RabbitSshDriver.java +++ b/software/messaging/src/main/java/brooklyn/entity/messaging/rabbit/RabbitSshDriver.java @@ -24,6 +24,7 @@ import static java.lang.String.format; import java.util.List; import java.util.Map; +import com.google.common.base.Strings; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -44,6 +45,13 @@ import com.google.common.collect.ImmutableMap; public class RabbitSshDriver extends AbstractSoftwareProcessSshDriver implements RabbitDriver { private static final Logger log = LoggerFactory.getLogger(RabbitSshDriver.class); + + // See http://fedoraproject.org/wiki/EPEL/FAQ#howtouse + private static final Map<String, String> CENTOS_VERSION_TO_EPEL_VERSION = ImmutableMap.of( + "5", "5-4", + "6", "6-8", + "7", "7-5" + ); public RabbitSshDriver(RabbitBrokerImpl entity, SshMachineLocation machine) { super(entity, machine); @@ -72,8 +80,27 @@ public class RabbitSshDriver extends AbstractSoftwareProcessSshDriver implements public void install() { List<String> urls = resolver.getTargets(); String saveAs = resolver.getFilename(); + // Version and architecture are only required for download of epel package on RHEL/Centos systems so pick sensible + // defaults if unavailable + String osMajorVersion = getMachine().getOsDetails().getVersion(); + if (Strings.isNullOrEmpty(osMajorVersion)) { + osMajorVersion = "7"; + } else { + osMajorVersion = osMajorVersion.indexOf(".") > 0 ? osMajorVersion.substring(0, osMajorVersion.indexOf('.')) : osMajorVersion; + if (!CENTOS_VERSION_TO_EPEL_VERSION.keySet().contains(osMajorVersion)) { + osMajorVersion = "7"; + } + } + String epelVersion = CENTOS_VERSION_TO_EPEL_VERSION.get(osMajorVersion); + String osArchitecture = getMachine().getOsDetails().getArch(); + if (Strings.isNullOrEmpty(osArchitecture)) { + osArchitecture = "x86_64"; + } List<String> commands = ImmutableList.<String>builder() + // EPEL repository for erlang install required on some Centos distributions + .add(chainGroup("which yum", sudo("yum -y update ca-certificates"), sudo("rpm -Uvh " + + format("http://download.fedoraproject.org/pub/epel/%s/%s/epel-release-%s.noarch.rpm", osMajorVersion, osArchitecture, epelVersion)))) .add(ifExecutableElse0("zypper", chainGroup( ok(sudo("zypper --non-interactive addrepo http://download.opensuse.org/repositories/devel:/languages:/erlang/SLE_11_SP3 erlang_sles_11")), ok(sudo("zypper --non-interactive addrepo http://download.opensuse.org/repositories/devel:/languages:/erlang/openSUSE_11.4 erlang_suse_11")), http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2ae2e4d5/software/messaging/src/test/java/brooklyn/entity/messaging/rabbit/RabbitEc2LiveTest.java ---------------------------------------------------------------------- diff --git a/software/messaging/src/test/java/brooklyn/entity/messaging/rabbit/RabbitEc2LiveTest.java b/software/messaging/src/test/java/brooklyn/entity/messaging/rabbit/RabbitEc2LiveTest.java index dc500f4..59ef9db 100644 --- a/software/messaging/src/test/java/brooklyn/entity/messaging/rabbit/RabbitEc2LiveTest.java +++ b/software/messaging/src/test/java/brooklyn/entity/messaging/rabbit/RabbitEc2LiveTest.java @@ -22,6 +22,7 @@ import static org.testng.Assert.assertEquals; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.testng.SkipException; import org.testng.annotations.Test; import brooklyn.entity.AbstractEc2LiveTest; @@ -81,7 +82,17 @@ public class RabbitEc2LiveTest extends AbstractEc2LiveTest { Channel channel = conn.createChannel(); return channel; } - + + @Override + public void test_CentOS_5_6() throws SkipException { + // Not supported. The EPEL repository described here at [1] does not contain erlang, and the + // Erlang repository at [1] requires old versions of rpmlib. Additionally, [2] suggests that + // Centos 5 is not supported + // [1]:http://www.rabbitmq.com/install-rpm.html + // [2]: https://www.erlang-solutions.com/downloads/download-erlang-otp + throw new SkipException("Centos 5 is not supported"); + } + @Test(enabled=false) public void testDummy() {} // Convince testng IDE integration that this really does have test methods }