You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@slider.apache.org by st...@apache.org on 2014/05/05 20:36:31 UTC
svn commit: r1592599 - in /incubator/slider/trunk/slider-core/src:
main/java/org/apache/slider/client/
main/java/org/apache/slider/core/registry/docstore/
test/groovy/org/apache/slider/agent/standalone/
Author: stevel
Date: Mon May 5 18:36:30 2014
New Revision: 1592599
URL: http://svn.apache.org/r1592599
Log:
SLIDER-5 CLI can now get and save artifacts
Added:
incubator/slider/trunk/slider-core/src/main/java/org/apache/slider/core/registry/docstore/ConfigFormat.java
- copied, changed from r1592568, incubator/slider/trunk/slider-core/src/main/java/org/apache/slider/core/registry/docstore/ConfigFormats.java
Removed:
incubator/slider/trunk/slider-core/src/main/java/org/apache/slider/core/registry/docstore/ConfigFormats.java
Modified:
incubator/slider/trunk/slider-core/src/main/java/org/apache/slider/client/SliderClient.java
incubator/slider/trunk/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedConfigurationOutputter.java
incubator/slider/trunk/slider-core/src/test/groovy/org/apache/slider/agent/standalone/TestStandaloneRegistryAM.groovy
Modified: incubator/slider/trunk/slider-core/src/main/java/org/apache/slider/client/SliderClient.java
URL: http://svn.apache.org/viewvc/incubator/slider/trunk/slider-core/src/main/java/org/apache/slider/client/SliderClient.java?rev=1592599&r1=1592598&r2=1592599&view=diff
==============================================================================
--- incubator/slider/trunk/slider-core/src/main/java/org/apache/slider/client/SliderClient.java (original)
+++ incubator/slider/trunk/slider-core/src/main/java/org/apache/slider/client/SliderClient.java Mon May 5 18:36:30 2014
@@ -84,8 +84,10 @@ import org.apache.slider.core.main.RunSe
import org.apache.slider.core.persist.ConfPersister;
import org.apache.slider.core.persist.LockAcquireFailedException;
import org.apache.slider.core.registry.YARNRegistryClient;
+import org.apache.slider.core.registry.docstore.ConfigFormat;
import org.apache.slider.core.registry.docstore.PublishedConfigSet;
import org.apache.slider.core.registry.docstore.PublishedConfiguration;
+import org.apache.slider.core.registry.docstore.PublishedConfigurationOutputter;
import org.apache.slider.core.registry.info.ServiceInstanceData;
import org.apache.slider.core.registry.retrieve.RegistryRetriever;
import org.apache.slider.core.registry.zk.ZKPathBuilder;
@@ -1962,6 +1964,7 @@ public class SliderClient extends Abstra
// get a configuration
PublishedConfiguration publishedConfiguration =
actionRegistryGetConfig(registryArgs);
+ outputConfig(publishedConfiguration, registryArgs);
} else {
exitCode = EXIT_FALSE;
@@ -2040,19 +2043,32 @@ public class SliderClient extends Abstra
}
private void outputConfig(PublishedConfiguration published,
- ActionRegistryArgs registryArgs) {
+ ActionRegistryArgs registryArgs) throws
+ BadCommandArgumentsException,
+ IOException {
// decide whether or not to print
- boolean print = registryArgs.dest == null;
String entry = registryArgs.getConf;
String format = registryArgs.format;
- File destFile;
+ ConfigFormat configFormat = ConfigFormat.resolve(format);
+ if (configFormat == null) {
+ throw new BadCommandArgumentsException(
+ "Unknown/Unsupported format %s ", format);
+ }
+ PublishedConfigurationOutputter outputter =
+ PublishedConfigurationOutputter.createOutputter(configFormat,
+ published);
+ boolean print = registryArgs.dest == null;
if (!print) {
+ File destFile;
destFile = registryArgs.dest;
if (destFile.isDirectory()) {
// creating it under a directory
destFile = new File(destFile, entry + "." + format);
}
log.info("Destination path: {}", destFile);
+ outputter.save(destFile);
+ } else {
+ print(outputter.asString());
}
}
Copied: incubator/slider/trunk/slider-core/src/main/java/org/apache/slider/core/registry/docstore/ConfigFormat.java (from r1592568, incubator/slider/trunk/slider-core/src/main/java/org/apache/slider/core/registry/docstore/ConfigFormats.java)
URL: http://svn.apache.org/viewvc/incubator/slider/trunk/slider-core/src/main/java/org/apache/slider/core/registry/docstore/ConfigFormat.java?p2=incubator/slider/trunk/slider-core/src/main/java/org/apache/slider/core/registry/docstore/ConfigFormat.java&p1=incubator/slider/trunk/slider-core/src/main/java/org/apache/slider/core/registry/docstore/ConfigFormats.java&r1=1592568&r2=1592599&rev=1592599&view=diff
==============================================================================
--- incubator/slider/trunk/slider-core/src/main/java/org/apache/slider/core/registry/docstore/ConfigFormats.java (original)
+++ incubator/slider/trunk/slider-core/src/main/java/org/apache/slider/core/registry/docstore/ConfigFormat.java Mon May 5 18:36:30 2014
@@ -18,14 +18,14 @@
package org.apache.slider.core.registry.docstore;
-public enum ConfigFormats {
+public enum ConfigFormat {
JSON("json"),
PROPERTIES("properties"),
XML("xml"),
- YAML("yaml");
-
- ConfigFormats(String suffix) {
+// YAML("yaml");
+ ;
+ ConfigFormat(String suffix) {
this.suffix = suffix;
}
@@ -34,5 +34,24 @@ public enum ConfigFormats {
public String getSuffix() {
return suffix;
}
-
+
+
+ @Override
+ public String toString() {
+ return suffix;
+ }
+
+ /**
+ * Get a matching format or null
+ * @param type
+ * @return
+ */
+ public static ConfigFormat resolve(String type) {
+ for (ConfigFormat format: values()) {
+ if (format.getSuffix().equals(type)) {
+ return format;
+ }
+ }
+ return null;
+ }
}
Modified: incubator/slider/trunk/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedConfigurationOutputter.java
URL: http://svn.apache.org/viewvc/incubator/slider/trunk/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedConfigurationOutputter.java?rev=1592599&r1=1592598&r2=1592599&view=diff
==============================================================================
--- incubator/slider/trunk/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedConfigurationOutputter.java (original)
+++ incubator/slider/trunk/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedConfigurationOutputter.java Mon May 5 18:36:30 2014
@@ -18,17 +18,122 @@
package org.apache.slider.core.registry.docstore;
+import com.google.common.base.Charsets;
+import com.google.common.base.Preconditions;
+import org.apache.commons.io.FileUtils;
+import org.apache.hadoop.conf.Configuration;
+import org.apache.slider.common.tools.ConfigHelper;
+
import java.io.File;
+import java.io.FileOutputStream;
import java.io.IOException;
+import java.util.Properties;
public abstract class PublishedConfigurationOutputter {
+ protected final PublishedConfiguration owner;
+
+ protected PublishedConfigurationOutputter(PublishedConfiguration owner) {
+ this.owner = owner;
+ }
+
public void save(File dest) throws IOException {
}
- public String asString() {
+ public String asString() throws IOException {
return "";
- }
+ }
+
+ public static PublishedConfigurationOutputter createOutputter(ConfigFormat format,
+ PublishedConfiguration owner) {
+ Preconditions.checkNotNull(owner);
+ switch (format) {
+ case XML:
+ return new XmlOutputter(owner);
+ case PROPERTIES:
+ return new PropertiesOutputter(owner);
+ case JSON:
+ return new JsonOutputter(owner);
+ default:
+ throw new RuntimeException("Unsupported format :" + format);
+ }
+ }
+
+ public static class XmlOutputter extends PublishedConfigurationOutputter {
+
+
+ private final Configuration configuration;
+ public XmlOutputter(PublishedConfiguration owner) {
+ super(owner);
+ configuration = owner.asConfiguration();
+ }
+
+ @Override
+ public void save(File dest) throws IOException {
+ FileOutputStream out = new FileOutputStream(dest);
+ try {
+ configuration.writeXml(out);
+ } finally {
+ out.close();
+ }
+ }
+
+ @Override
+ public String asString() throws IOException {
+ return ConfigHelper.toXml(configuration);
+ }
+
+ public Configuration getConfiguration() {
+ return configuration;
+ }
+ }
+
+ public static class PropertiesOutputter extends PublishedConfigurationOutputter {
+
+ private final Properties properties;
+
+ public PropertiesOutputter(PublishedConfiguration owner) {
+ super(owner);
+ properties = owner.asProperties();
+ }
+
+ @Override
+ public void save(File dest) throws IOException {
+ FileOutputStream out = new FileOutputStream(dest);
+ try {
+ properties.store(out, "");
+ } finally {
+ out.close();
+ }
+
+ }
+
+ @Override
+ public String asString() throws IOException {
+ return properties.toString();
+ }
+ }
+
+
+ public static class JsonOutputter extends PublishedConfigurationOutputter {
+
+ public JsonOutputter(PublishedConfiguration owner) {
+ super(owner);
+ }
+
+ @Override
+ public void save(File dest) throws IOException {
+ FileUtils.writeStringToFile(dest, asString(), Charsets.UTF_8);
+ }
+
+ @Override
+ public String asString() throws IOException {
+ return owner.asJson();
+ }
+ }
+
+
+
}
Modified: incubator/slider/trunk/slider-core/src/test/groovy/org/apache/slider/agent/standalone/TestStandaloneRegistryAM.groovy
URL: http://svn.apache.org/viewvc/incubator/slider/trunk/slider-core/src/test/groovy/org/apache/slider/agent/standalone/TestStandaloneRegistryAM.groovy?rev=1592599&r1=1592598&r2=1592599&view=diff
==============================================================================
--- incubator/slider/trunk/slider-core/src/test/groovy/org/apache/slider/agent/standalone/TestStandaloneRegistryAM.groovy (original)
+++ incubator/slider/trunk/slider-core/src/test/groovy/org/apache/slider/agent/standalone/TestStandaloneRegistryAM.groovy Mon May 5 18:36:30 2014
@@ -30,6 +30,7 @@ import org.apache.slider.common.SliderKe
import org.apache.slider.common.params.ActionRegistryArgs
import org.apache.slider.core.main.ServiceLauncher
import org.apache.slider.core.persist.JsonSerDeser
+import org.apache.slider.core.registry.docstore.ConfigFormat
import org.apache.slider.core.registry.docstore.PublishedConfigSet
import org.apache.slider.core.registry.docstore.PublishedConfiguration
import org.apache.slider.core.registry.info.CustomRegistryConstants
@@ -232,6 +233,8 @@ class TestStandaloneRegistryAM extends A
assert 0 == client.actionRegistry(registryArgs)
+
+
// listconf --internal
registryArgs.list = false;
registryArgs.listConf = true
@@ -244,6 +247,27 @@ class TestStandaloneRegistryAM extends A
//expected
}
+ registryArgs.list = false;
+ registryArgs.listConf = false
+ registryArgs.internal = false
+ registryArgs.format = "properties"
+ registryArgs.getConf = YARN_SITE
+
+ describe registryArgs.toString()
+ assert 0 == client.actionRegistry(registryArgs)
+
+ File outputDir = new File("target/test_standalone_registry_am/output")
+ outputDir.mkdirs()
+
+ registryArgs.dest = outputDir
+ describe registryArgs.toString()
+ assert 0 == client.actionRegistry(registryArgs)
+ assert new File(outputDir,YARN_SITE + ".properties").exists()
+
+ registryArgs.format = "xml"
+ assert 0 == client.actionRegistry(registryArgs)
+ assert new File(outputDir,YARN_SITE + ".xml").exists()
+
describe "freeze cluster"