brooklyn-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bostko <...@git.apache.org>
Subject [GitHub] incubator-brooklyn pull request: Basho Riak - Linux Install
Date Mon, 02 Mar 2015 16:31:34 GMT
Github user bostko commented on a diff in the pull request:

    https://github.com/apache/incubator-brooklyn/pull/531#discussion_r25612190
  
    --- Diff: software/nosql/src/main/java/brooklyn/entity/nosql/riak/RiakNodeSshDriver.java
---
    @@ -112,48 +106,65 @@ public void install() {
                     .execute();
         }
     
    -    private List<String> installLinux(String expandedInstallDir) {
    -        DynamicTasks.queueIfPossible(SshTasks.dontRequireTtyForSudo(getMachine(), SshTasks.OnFailingTask.WARN_OR_IF_DYNAMIC_FAIL_MARKING_INESSENTIAL)).orSubmitAndBlock();
    -
    -        String installBin = Urls.mergePaths(expandedInstallDir, "bin");
    -        String saveAsYum = "riak.rpm";
    -        String saveAsApt = "riak.deb";
    -        OsDetails osDetails = getMachine().getOsDetails();
    -        
    -        String downloadUrl;
    -        String osReleaseCmd;
    -        if ("debian".equalsIgnoreCase(osDetails.getName())) {
    -            // TODO osDetails.getName() is returning "linux", instead of debian/ubuntu
on AWS with jenkins image,
    -            //      running as integration test targetting localhost. 
    -            // TODO Debian support (default debian image fails with 'sudo: command not
found')
    -            downloadUrl = (String)entity.getAttribute(RiakNode.DOWNLOAD_URL_DEBIAN);
    -            osReleaseCmd = osDetails.getVersion().substring(0, osDetails.getVersion().indexOf("."));
    -        } else {
    -            // assume Ubuntu
    -            downloadUrl = (String)entity.getAttribute(RiakNode.DOWNLOAD_URL_UBUNTU);
    -            osReleaseCmd = "`lsb_release -sc` && " +
    -                    "export OS_RELEASE=`([[ \"lucid natty precise\" =~ (^| )\\$OS_RELEASE($|
) ]] && echo $OS_RELEASE || echo precise)`";
    -        }
    -        String apt = chainGroup(
    -                //debian fix
    -                "export PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
    -                "which apt-get",
    -                ok(sudo("apt-get -y --allow-unauthenticated install logrotate libpam0g-dev
libssl0.9.8")),
    -                "export OS_NAME=" + Strings.toLowerCase(osDetails.getName()),
    -                "export OS_RELEASE=" + osReleaseCmd,
    -                String.format("wget -O %s %s", saveAsApt, downloadUrl),
    -                sudo(String.format("dpkg -i %s", saveAsApt)));
    -        String yum = chainGroup(
    -                "which yum",
    -                ok(sudo("yum -y install openssl")),
    -                String.format("wget -O %s %s", saveAsYum, entity.getAttribute(RiakNode.DOWNLOAD_URL_RHEL_CENTOS)),
    -                sudo(String.format("rpm -Uvh %s", saveAsYum)));
    +    private List<String> installFromPackageCloud() {
    +        OsDetails osDetails = getMachine().getMachineDetails().getOsDetails();
             return ImmutableList.<String>builder()
    -                .add("mkdir -p " + installBin)
    -                .add(INSTALL_CURL)
    -                .add(alternatives(apt, yum))
    -                .add("ln -s `which riak` " + Urls.mergePaths(installBin, "riak"))
    -                .add("ln -s `which riak-admin` " + Urls.mergePaths(installBin, "riak-admin"))
    +                .add(osDetails.getName().toLowerCase().contains("debian") ? addSbinPathCommand()
: "")
    +                .add(ifNotExecutable("curl", Joiner.on('\n').join(installCurl())))
    +                .addAll(ifExecutableElse("yum", installDebianBased(), installRpmBased()))
    +                .build();
    +    }
    +
    +    public List<String> installCurl() {
    +        return ImmutableList.<String>builder()
    +                .add(ifExecutableElse("yum",
    +                        BashCommands.sudo("apt-get install --assume-yes curl"),
    +                        BashCommands.sudo("yum install -y curl")))
    +                .build();
    +    }
    +
    +    private ImmutableList<String> installDebianBased() {
    +        return ImmutableList.<String>builder()
    +                .add("curl https://packagecloud.io/install/repositories/basho/riak/script.deb
| " + BashCommands.sudo("bash"))
    +                .add(BashCommands.sudo("apt-get install --assume-yes riak"))
    +                .build();
    +    }
    +
    +    private ImmutableList<String> installRpmBased() {
    +        return ImmutableList.<String>builder()
    +                .add("curl https://packagecloud.io/install/repositories/basho/riak/script.rpm
| " + BashCommands.sudo("bash"))
    +                .add(BashCommands.sudo("yum install -y riak"))
    +                .build();
    +    }
    +
    +    private static String addSbinPathCommand() {
    +        return "export PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin";
    +    }
    +
    +    /**
    +     * Returns a command which
    +     * executes <code>statement</code> only if <code>command</code>
is NOT found in <code>$PATH</code>
    +     *
    +     * @param command
    +     * @param statement
    +     * @return command
    +     */
    +    private static String ifNotExecutable(String command, String statement) {
    --- End diff --
    
    Yes I will do that


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

Mime
View raw message