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);
+ }
}