You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by he...@apache.org on 2015/04/08 11:16:30 UTC

[2/6] incubator-brooklyn git commit: Riak - Support all bucket type actions

Riak - Support all bucket type actions


Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/02efc293
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/02efc293
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/02efc293

Branch: refs/heads/master
Commit: 02efc293b7641b79cc5928c06b75080361835c03
Parents: 6c1b517
Author: Valentin Aitken <bo...@gmail.com>
Authored: Thu Apr 2 16:52:44 2015 +0300
Committer: Valentin Aitken <bo...@gmail.com>
Committed: Thu Apr 2 16:55:09 2015 +0300

----------------------------------------------------------------------
 .../brooklyn/entity/nosql/riak/RiakNode.java    |  19 ++-
 .../entity/nosql/riak/RiakNodeDriver.java       |  12 +-
 .../entity/nosql/riak/RiakNodeImpl.java         |  24 +++-
 .../entity/nosql/riak/RiakNodeSshDriver.java    | 123 +++++++++++++------
 4 files changed, 136 insertions(+), 42 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/02efc293/software/nosql/src/main/java/brooklyn/entity/nosql/riak/RiakNode.java
----------------------------------------------------------------------
diff --git a/software/nosql/src/main/java/brooklyn/entity/nosql/riak/RiakNode.java b/software/nosql/src/main/java/brooklyn/entity/nosql/riak/RiakNode.java
index 30391fb..ea12f8b 100644
--- a/software/nosql/src/main/java/brooklyn/entity/nosql/riak/RiakNode.java
+++ b/software/nosql/src/main/java/brooklyn/entity/nosql/riak/RiakNode.java
@@ -197,7 +197,20 @@ public interface RiakNode extends SoftwareProcess {
     @Effector(description = "Commit changes made to the Riak cluster")
     void commitCluster();
 
-    @Effector(description = "Apply bucket type")
-    void applyBucketType(@EffectorParam(name = "bucketTypeName") String bucketTypeName,
-                         @EffectorParam(name = "bucketTypeProperties") String bucketTypeProperties);
+    @Effector(description = "Create bucket type")
+    void bucketTypeCreate(@EffectorParam(name = "bucketTypeName") String bucketTypeName,
+                          @EffectorParam(name = "bucketTypeProperties") String bucketTypeProperties);
+
+    @Effector(description = "List bucket types")
+    List<String> bucketTypeList();
+
+    @Effector(description = "Status bucket type")
+    List<String> bucketTypeStatus(@EffectorParam(name = "bucketTypeName") String bucketTypeName);
+
+    @Effector(description = "Update bucket type")
+    void bucketTypeUpdate(@EffectorParam(name = "bucketTypeName") String bucketTypeName,
+                          @EffectorParam(name = "bucketTypeProperties") String bucketTypeProperties);
+
+    @Effector(description = "Activate bucket type")
+    void bucketTypeActivate(@EffectorParam(name = "bucketTypeName") String bucketTypeName);
 }

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/02efc293/software/nosql/src/main/java/brooklyn/entity/nosql/riak/RiakNodeDriver.java
----------------------------------------------------------------------
diff --git a/software/nosql/src/main/java/brooklyn/entity/nosql/riak/RiakNodeDriver.java b/software/nosql/src/main/java/brooklyn/entity/nosql/riak/RiakNodeDriver.java
index a6c4805..13ce842 100644
--- a/software/nosql/src/main/java/brooklyn/entity/nosql/riak/RiakNodeDriver.java
+++ b/software/nosql/src/main/java/brooklyn/entity/nosql/riak/RiakNodeDriver.java
@@ -20,6 +20,8 @@ package brooklyn.entity.nosql.riak;
 
 import brooklyn.entity.basic.SoftwareProcessDriver;
 
+import java.util.List;
+
 public interface RiakNodeDriver extends SoftwareProcessDriver {
 
     String getRiakEtcDir();
@@ -36,5 +38,13 @@ public interface RiakNodeDriver extends SoftwareProcessDriver {
 
     String getOsMajorVersion();
 
-    void applyBucketType(String bucketTypeName, String bucketTypeProperties);
+    void bucketTypeCreate(String bucketTypeName, String bucketTypeProperties);
+
+    List<String> bucketTypeList();
+
+    List<String> bucketTypeStatus(String bucketTypeName);
+
+    void bucketTypeUpdate(String bucketTypeName, String bucketTypeProperties);
+
+    void bucketTypeActivate(String bucketTypeName);
 }

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/02efc293/software/nosql/src/main/java/brooklyn/entity/nosql/riak/RiakNodeImpl.java
----------------------------------------------------------------------
diff --git a/software/nosql/src/main/java/brooklyn/entity/nosql/riak/RiakNodeImpl.java b/software/nosql/src/main/java/brooklyn/entity/nosql/riak/RiakNodeImpl.java
index 7bb803c..e001989 100644
--- a/software/nosql/src/main/java/brooklyn/entity/nosql/riak/RiakNodeImpl.java
+++ b/software/nosql/src/main/java/brooklyn/entity/nosql/riak/RiakNodeImpl.java
@@ -208,8 +208,28 @@ public class RiakNodeImpl extends SoftwareProcessImpl implements RiakNode {
     }
 
     @Override
-    public void applyBucketType(String bucketTypeName, String bucketTypeProperties) {
-        getDriver().applyBucketType(bucketTypeName, bucketTypeProperties);
+    public void bucketTypeCreate(String bucketTypeName, String bucketTypeProperties) {
+        getDriver().bucketTypeCreate(bucketTypeName, bucketTypeProperties);
+    }
+
+    @Override
+    public List<String> bucketTypeList() {
+        return getDriver().bucketTypeList();
+    }
+
+    @Override
+    public List<String> bucketTypeStatus(String bucketTypeName) {
+        return getDriver().bucketTypeStatus(bucketTypeName);
+    }
+
+    @Override
+    public void bucketTypeUpdate(String bucketTypeName, String bucketTypeProperties) {
+        getDriver().bucketTypeUpdate(bucketTypeName, bucketTypeProperties);
+    }
+
+    @Override
+    public void bucketTypeActivate(String bucketTypeName) {
+        getDriver().bucketTypeActivate(bucketTypeName);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/02efc293/software/nosql/src/main/java/brooklyn/entity/nosql/riak/RiakNodeSshDriver.java
----------------------------------------------------------------------
diff --git a/software/nosql/src/main/java/brooklyn/entity/nosql/riak/RiakNodeSshDriver.java b/software/nosql/src/main/java/brooklyn/entity/nosql/riak/RiakNodeSshDriver.java
index 1056198..da336db 100644
--- a/software/nosql/src/main/java/brooklyn/entity/nosql/riak/RiakNodeSshDriver.java
+++ b/software/nosql/src/main/java/brooklyn/entity/nosql/riak/RiakNodeSshDriver.java
@@ -32,6 +32,7 @@ import static brooklyn.util.text.StringEscapes.BashStringEscapes.escapeLiteralFo
 import static java.lang.String.format;
 
 import java.net.URI;
+import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
 
@@ -59,6 +60,7 @@ import com.google.common.base.Predicate;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Lists;
+
 // TODO: Alter -env ERL_CRASH_DUMP path in vm.args
 public class RiakNodeSshDriver extends AbstractSoftwareProcessSshDriver implements RiakNodeDriver {
 
@@ -271,9 +273,7 @@ public class RiakNodeSshDriver extends AbstractSoftwareProcessSshDriver implemen
                 .body.append(commands);
 
         if (!isRiakOnPath()) {
-            Map<String, String> newPathVariable = ImmutableMap.of("PATH", sbinPath);
-            log.warn("riak command not found on PATH. Altering future commands' environment variables from {} to {}", getShellEnvironment(), newPathVariable);
-            customizeScript.environmentVariablesReset(newPathVariable);
+            addRiakOnPath(customizeScript);
         }
         customizeScript.failOnNonZeroResultCode().execute();
 
@@ -320,9 +320,7 @@ public class RiakNodeSshDriver extends AbstractSoftwareProcessSshDriver implemen
                 .body.append(commands);
 
         if (!isRiakOnPath()) {
-            Map<String, String> newPathVariable = ImmutableMap.of("PATH", sbinPath);
-            log.warn("riak command not found on PATH. Altering future commands' environment variables from {} to {}", getShellEnvironment(), newPathVariable);
-            launchScript.environmentVariablesReset(newPathVariable);
+            addRiakOnPath(launchScript);
         }
         launchScript.failOnNonZeroResultCode().execute();
 
@@ -341,9 +339,7 @@ public class RiakNodeSshDriver extends AbstractSoftwareProcessSshDriver implemen
                 .body.append(command);
 
         if (!isRiakOnPath()) {
-            Map<String, String> newPathVariable = ImmutableMap.of("PATH", sbinPath);
-            log.warn("riak command not found on PATH. Altering future commands' environment variables from {} to {}", getShellEnvironment(), newPathVariable);
-            stopScript.environmentVariablesReset(newPathVariable);
+            addRiakOnPath(stopScript);
         }
 
         int result = stopScript.failOnNonZeroResultCode().execute();
@@ -359,9 +355,7 @@ public class RiakNodeSshDriver extends AbstractSoftwareProcessSshDriver implemen
                 .body.append(sudo(format("%s ping", getRiakCmd())));
 
         if (!isRiakOnPath()) {
-            Map<String, String> newPathVariable = ImmutableMap.of("PATH", sbinPath);
-            log.warn("riak command not found on PATH. Altering future commands' environment variables from {} to {}", getShellEnvironment(), newPathVariable);
-            checkRunningScript.environmentVariablesReset(newPathVariable);
+            addRiakOnPath(checkRunningScript);
         }
         return (checkRunningScript.execute() == 0);
     }
@@ -399,9 +393,7 @@ public class RiakNodeSshDriver extends AbstractSoftwareProcessSshDriver implemen
                         .failOnNonZeroResultCode();
 
                 if (!isRiakOnPath()) {
-                    Map<String, String> newPathVariable = ImmutableMap.of("PATH", sbinPath);
-                    log.warn("riak command not found on PATH. Altering future commands' environment variables from {} to {}", getShellEnvironment(), newPathVariable);
-                    joinClusterScript.environmentVariablesReset(newPathVariable);
+                    addRiakOnPath(joinClusterScript);
                 }
 
                 joinClusterScript.execute();
@@ -423,9 +415,7 @@ public class RiakNodeSshDriver extends AbstractSoftwareProcessSshDriver implemen
                     .failOnNonZeroResultCode();
 
             if (!isRiakOnPath()) {
-                Map<String, String> newPathVariable = ImmutableMap.of("PATH", sbinPath);
-                log.warn("riak command not found on PATH. Altering future commands' environment variables from {} to {}", getShellEnvironment(), newPathVariable);
-                leaveClusterScript.environmentVariablesReset(newPathVariable);
+                addRiakOnPath(leaveClusterScript);
             }
 
             leaveClusterScript.execute();
@@ -446,9 +436,7 @@ public class RiakNodeSshDriver extends AbstractSoftwareProcessSshDriver implemen
                 .failOnNonZeroResultCode();
 
         if (!isRiakOnPath()) {
-            Map<String, String> newPathVariable = ImmutableMap.of("PATH", sbinPath);
-            log.warn("riak command not found on PATH. Altering future commands' environment variables from {} to {}", getShellEnvironment(), newPathVariable);
-            removeNodeScript.environmentVariablesReset(newPathVariable);
+            addRiakOnPath(removeNodeScript);
         }
 
         removeNodeScript.execute();
@@ -463,9 +451,7 @@ public class RiakNodeSshDriver extends AbstractSoftwareProcessSshDriver implemen
                     .failOnNonZeroResultCode();
 
             if (!isRiakOnPath()) {
-                Map<String, String> newPathVariable = ImmutableMap.of("PATH", sbinPath);
-                log.warn("riak command not found on PATH. Altering future commands' environment variables from {} to {}", getShellEnvironment(), newPathVariable);
-                commitClusterScript.environmentVariablesReset(newPathVariable);
+                addRiakOnPath(commitClusterScript);
             }
             commitClusterScript.execute();
 
@@ -475,15 +461,76 @@ public class RiakNodeSshDriver extends AbstractSoftwareProcessSshDriver implemen
     }
 
     @Override
-    public void applyBucketType(String bucketTypeName, String bucketTypeProperties) {
-        newScript("bucket-type create " + bucketTypeName)
-                .body.append(sudo(format(
-                    "%s bucket-type create %s %s",
-                    getRiakAdminCmd(),
-                    bucketTypeName,
-                    escapeLiteralForDoubleQuotedBash(bucketTypeProperties))))
-                .failOnNonZeroResultCode()
-                .execute();
+    public void bucketTypeCreate(String bucketTypeName, String bucketTypeProperties) {
+        ScriptHelper bucketTypeCreateScript = newScript("bucket-type_create " + bucketTypeName)
+                .body.append(sudo(format("%s bucket-type create %s %s",
+                        getRiakAdminCmd(),
+                        bucketTypeName,
+                        escapeLiteralForDoubleQuotedBash(bucketTypeProperties))));
+        if(!isRiakOnPath()) {
+            addRiakOnPath(bucketTypeCreateScript);
+        }
+        bucketTypeCreateScript.body.append(sudo(format("%s bucket-type activate %s", getRiakAdminCmd(), bucketTypeName)))
+                .failOnNonZeroResultCode();
+
+        bucketTypeCreateScript.execute();
+    }
+
+    @Override
+    public List<String> bucketTypeList() {
+        ScriptHelper bucketTypeListScript = newScript("bucket-types_list")
+                .body.append(sudo(format("%s bucket-type list", getRiakAdminCmd())))
+                .gatherOutput()
+                .noExtraOutput()
+                .failOnNonZeroResultCode();
+        if (!isRiakOnPath()) {
+            addRiakOnPath(bucketTypeListScript);
+        }
+        bucketTypeListScript.execute();
+        String stdout = bucketTypeListScript.getResultStdout();
+        return Arrays.asList(stdout.split("[\\r\\n]+"));
+    }
+
+    @Override
+    public List<String> bucketTypeStatus(String bucketTypeName) {
+        ScriptHelper bucketTypeStatusScript = newScript("bucket-type_status")
+                .body.append(sudo(format("%s bucket-type status %s", getRiakAdminCmd(), bucketTypeName)))
+                .gatherOutput()
+                .noExtraOutput()
+                .failOnNonZeroResultCode();
+        if (!isRiakOnPath()) {
+            addRiakOnPath(bucketTypeStatusScript);
+        }
+        bucketTypeStatusScript.execute();
+        String stdout = bucketTypeStatusScript.getResultStdout();
+        return Arrays.asList(stdout.split("[\\r\\n]+"));
+    }
+
+    @Override
+    public void bucketTypeUpdate(String bucketTypeName, String bucketTypeProperties) {
+        ScriptHelper bucketTypeStatusScript = newScript("bucket-type_update")
+                .body.append(sudo(format("%s bucket-type update %s %s",
+                        getRiakAdminCmd(),
+                        bucketTypeName,
+                        escapeLiteralForDoubleQuotedBash(bucketTypeProperties))))
+                .noExtraOutput()
+                .failOnNonZeroResultCode();
+        if (!isRiakOnPath()) {
+            addRiakOnPath(bucketTypeStatusScript);
+        }
+        bucketTypeStatusScript.execute();
+    }
+
+    @Override
+    public void bucketTypeActivate(String bucketTypeName) {
+        ScriptHelper bucketTypeStatusScript = newScript("bucket-type_activate")
+                .body.append(sudo(format("%s bucket-type activate %s", getRiakAdminCmd(), bucketTypeName)))
+                .noExtraOutput()
+                .failOnNonZeroResultCode();
+        if (!isRiakOnPath()) {
+            addRiakOnPath(bucketTypeStatusScript);
+        }
+        bucketTypeStatusScript.execute();
     }
 
     @Override
@@ -513,9 +560,7 @@ public class RiakNodeSshDriver extends AbstractSoftwareProcessSshDriver implemen
                     .failOnNonZeroResultCode();
 
             if (!isRiakOnPath()) {
-                Map<String, String> newPathVariable = ImmutableMap.of("PATH", sbinPath);
-                log.warn("riak command not found on PATH. Altering future commands' environment variables from {} to {}", getShellEnvironment(), newPathVariable);
-                recoverNodeScript.environmentVariablesReset(newPathVariable);
+                addRiakOnPath(recoverNodeScript);
             }
 
             recoverNodeScript.execute();
@@ -555,4 +600,10 @@ public class RiakNodeSshDriver extends AbstractSoftwareProcessSshDriver implemen
         String osVersion = osDetails.getVersion();
         return osVersion.contains(".") ? osVersion.substring(0, osVersion.indexOf(".")) : osVersion;
     }
+
+    private void addRiakOnPath(ScriptHelper scriptHelper) {
+        Map<String, String> newPathVariable = ImmutableMap.of("PATH", sbinPath);
+        log.warn("riak command not found on PATH. Altering future commands' environment variables from {} to {}", getShellEnvironment(), newPathVariable);
+        scriptHelper.environmentVariablesReset(newPathVariable);
+    }
 }