++ public List<Output> getOutputs() {
+ return outputs;
+ }
+
+ private Object _findOutputValue (String key) {
+ for (Output o : outputs) {
+ if (o.getOutputKey().equals(key)) {
+ return o.getOutputValue();
+ }
+ }
+ return null;
+ }
+
+ /*
+ * Return a stack output as a String.
+ * Generally speaking, most outputs will be Strings.
+ */
+ public String getOutputValue (String key)
+ {
+ Object value = _findOutputValue(key);
+ if (value != null)
+ return value.toString();
+ else
+ return null;
+ }
+
+ /*
+ * Return a stack output as a Json-mapped Object of the provided type.
+ * This is useful for json-object stack outputs.
+ */
+ public <T> T getOutputValue (String key, Class<T> type)
+ {
+ try {
+ String s = mapper.writeValueAsString(_findOutputValue(key));
+ return mapper.readValue(s, type);
+ }
+ catch (IOException e) {
+ return null;
+ }
+ }
+
+ @JsonProperty("parameters")
+ private Map<String,Object> parameters = new HashMap<>();
+
+ public void setParameters (Map<String,Object> params)
+ {
+ // Need to "fix" comma-delimited-list parameters for pre-Juno Heat
+ // (see https://bugs.launchpad.net/heat/+bug/1367393)
+ parameters = params;
+
+ for (Entry<String,Object> param : parameters.entrySet())
+ {
+ // CDL params are returned as a string with format:
+ // "[u'<value1>',u'<value2>',...]"
+ String value = param.getValue().toString();
+ if (value.startsWith("[") && value.endsWith("]"))
+ {
+ param.setValue(value.substring(1,value.length()-1).replaceAll("u'([^\']+)'","$1"));
+ }
+ }
+ }
+
+ public Map<String,Object> getParameters() {
+ return parameters;
+ }
}
@@ -112,10 +112,10 @@ public class UpdateStackParam {
}
public void setFiles(Map<String, Object> files) {
- this.files = files;
+ this.files = files;
}
public Map<String, Object> getFiles() {
- return this.files;
+ return this.files;
}
/**