
org.openstack4j.openstack.heat.domain.HeatStackUpdate Maven / Gradle / Ivy
package org.openstack4j.openstack.heat.domain;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URISyntaxException;
import java.util.HashMap;
import java.util.Map;
import org.openstack4j.model.heat.StackUpdate;
import org.openstack4j.model.heat.builder.StackUpdateBuilder;
import org.openstack4j.openstack.heat.utils.Environment;
import org.openstack4j.openstack.heat.utils.Template;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.core.JsonParseException;
/**
* Model Entity used for updating a Stack
*
* @author Jeremy Unruh
*/
public class HeatStackUpdate implements StackUpdate {
private static final long serialVersionUID = 1L;
@JsonProperty("template")
private String template;
@JsonProperty("template_url")
private String templateURL;
@JsonProperty("parameters")
private Map parameters;
@JsonProperty("timeout_mins")
private Long timeoutMins;
@JsonProperty("environment")
private String environment;
@JsonProperty("files")
private Map files = new HashMap();
public static StackUpdateBuilder builder() {
return new HeatStackUpdateConcreteBuilder();
}
@Override
public Map getParameters() {
return parameters;
}
@Override
public String getTemplate() {
return template;
}
public String getTempateURL() {
return templateURL;
}
public String getEnvironment(){
return environment;
}
public Map getFiles() {
return files;
}
@Override
public StackUpdateBuilder toBuilder() {
return new HeatStackUpdateConcreteBuilder(this);
}
public static class HeatStackUpdateConcreteBuilder implements StackUpdateBuilder {
private HeatStackUpdate model;
public HeatStackUpdateConcreteBuilder() {
this(new HeatStackUpdate());
}
public HeatStackUpdateConcreteBuilder(HeatStackUpdate model) {
this.model = model;
}
@Override
public StackUpdate build() {
return model;
}
@Override
public StackUpdateBuilder from(StackUpdate in) {
model = (HeatStackUpdate) in;
return this;
}
@Override
public StackUpdateBuilder template(String template) {
model.template = template;
return this;
}
@Override
public StackUpdateBuilder templateFromFile(String tplFile) {
try {
Template tpl = new Template(tplFile);
model.template = tpl.getTplContent();
model.files.putAll(tpl.getFiles());
} catch (JsonParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (URISyntaxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return this;
}
@Override
public StackUpdateBuilder templateURL(String templateURL) {
model.templateURL = templateURL;
return this;
}
@Override
public StackUpdateBuilder parameters(Map parameters) {
model.parameters = parameters;
return this;
}
@Override
public StackUpdateBuilder timeoutMins(Long timeoutMins) {
model.timeoutMins = timeoutMins;
return this;
}
@Override
public StackUpdateBuilder environment(String environment){
model.environment = environment;
return this;
}
@Override
public StackUpdateBuilder environmentFromFile(String envFile){
try {
Environment env = new Environment(envFile);
model.environment = env.getEnvContent();
model.files.putAll(env.getFiles());
} catch (JsonParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (URISyntaxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return this;
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy