You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@brooklyn.apache.org by ahgittin <gi...@git.apache.org> on 2015/03/02 17:19:30 UTC

[GitHub] incubator-brooklyn pull request: Basho Riak - Linux Install

Github user ahgittin commented on a diff in the pull request:

    https://github.com/apache/incubator-brooklyn/pull/531#discussion_r25611104
  
    --- 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 --
    
    can these come from `BashCommands` ?


---
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.
---