All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.huawei.openstack4j.openstack.heat.domain.HeatStackCreate Maven / Gradle / Ivy

There is a newer version: 1.0.26
Show newest version
/*******************************************************************************
 * 	Copyright 2016 ContainX and OpenStack4j                                          
 * 	                                                                                 
 * 	Licensed under the Apache License, Version 2.0 (the "License"); you may not      
 * 	use this file except in compliance with the License. You may obtain a copy of    
 * 	the License at                                                                   
 * 	                                                                                 
 * 	    http://www.apache.org/licenses/LICENSE-2.0                                   
 * 	                                                                                 
 * 	Unless required by applicable law or agreed to in writing, software              
 * 	distributed under the License is distributed on an "AS IS" BASIS, WITHOUT        
 * 	WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the         
 * 	License for the specific language governing permissions and limitations under    
 * 	the License.                                                                     
 *******************************************************************************/
package com.huawei.openstack4j.openstack.heat.domain;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.huawei.openstack4j.model.heat.StackCreate;
import com.huawei.openstack4j.model.heat.builder.StackCreateBuilder;
import com.huawei.openstack4j.openstack.heat.utils.Environment;
import com.huawei.openstack4j.openstack.heat.utils.Template;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.HashMap;
import java.util.Map;

/**
 * This class contains all elements required for the creation of a HeatStack. It
 * uses Jackson annotation for (de)serialization into JSON
 *
 * @author Matthias Reisser
 *
 */
public class HeatStackCreate implements StackCreate {

	private static final long serialVersionUID = -8775995682456485275L;
    private static final Logger LOG = LoggerFactory.getLogger(HeatStackCreate.class);

	@JsonProperty("disableRollback")
	private boolean disableRollback;
	@JsonProperty("stack_name")
	private String name;
	@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();
	@JsonProperty("tags")
	private String tags;

	/**
	 * Returnes a {@link HeatStackCreateConcreteBuilder} for configuration and
	 * creation of a {@link HeatStackCreate} object.
	 *
	 * @return a {@link HeatStackCreateConcreteBuilder}
	 */
	public static HeatStackCreateConcreteBuilder build() {
		return new HeatStackCreateConcreteBuilder();
	}

	@Override
	public StackCreateBuilder toBuilder() {
		return new HeatStackCreateConcreteBuilder(this);
	}

	@Override
	public String getName() {
		return name;
	}

	@Override
	public Map getParameters() {
		return parameters;
	}

	@Override
	public boolean getDisableRollback() {
		return disableRollback;
	}

	@Override
	public String getTemplate() {
		return template;
	}

	public String getTempateURL() {
	    return templateURL;
	}

	public String getEnvironment(){
	    return environment;
	}

	public Map getFiles() {
	    return files;
	}

	public String getTags() {
		return tags;
	}

	/**
	 * A Builder to create a HeatStack. Use {@link #build()} to receive the
	 * {@link StackCreate} object.
	 *
	 * @author Matthias Reisser
	 *
	 */
	public static class HeatStackCreateConcreteBuilder implements
			StackCreateBuilder {

		private HeatStackCreate model;

		/**
		 * Constructor to create a {@link HeatStackCreateConcreteBuilder} object
		 * with a new, empty {@link HeatStackCreate} object.
		 */
		public HeatStackCreateConcreteBuilder() {
			this(new HeatStackCreate());
		}

		/**
		 * Constructor for manipulation of an existing {@link HeatStackCreate}
		 * object.
		 *
		 * @param model
		 *            the {@link HeatStackCreate} object which is to be
		 *            modified.
		 */
		public HeatStackCreateConcreteBuilder(HeatStackCreate model) {
			this.model = model;
		}

		@Override
		public StackCreate build() {
			return model;
		}

		@Override
		public StackCreateBuilder from(StackCreate in) {
			model = (HeatStackCreate) in;
			return this;
		}

		@Override
		public StackCreateBuilder name(String name) {
			model.name = name;
			return this;
		}

		@Override
		public StackCreateBuilder parameters(Map parameters) {
			model.parameters = parameters;
			return this;
		}

		@Override
		public StackCreateBuilder timeoutMins(Long timeoutMins) {
			model.timeoutMins = timeoutMins;
			return this;
		}

		@Override
		public StackCreateBuilder disableRollback(boolean disableRollback) {
			model.disableRollback = disableRollback;
			return this;
		}

        @Override
        public StackCreateBuilder template(String template) {
           model.template = template;
           return this;
        }

        @Override
        public StackCreateBuilder templateFromFile(String tplFile) {
            try {
                Template tpl = new Template(tplFile);
                model.template = tpl.getTplContent();
                model.files.putAll(tpl.getFiles());
            } catch (Exception e) {
                LOG.error(e.getMessage(), e);
            }
            return this;
        }

        @Override
        public StackCreateBuilder templateURL(String templateURL) {
           model.templateURL = templateURL;
           return this;
        }

        @Override
        public StackCreateBuilder environment(String environment){
            model.environment = environment;
            return this;
        }

        @Override
        public StackCreateBuilder environmentFromFile(String envFile) {
            try {
                Environment env = new Environment(envFile);
                model.environment = env.getEnvContent();
                model.files.putAll(env.getFiles());
            } catch (Exception e) {
                LOG.error(e.getMessage(), e);
            }
            return this;
        }

        @Override
		public StackCreateBuilder files(Map files) {
			model.files = files;
			return this;
		}

		@Override
		public StackCreateBuilder tags(String tags) {
			model.tags = tags;
			return this;
		}

	}

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy