package com.urbancode.terraform.tasks.microsoft;
import java.util.ArrayList;
import java.util.List;
import org.apache.log4j.Logger;
import com.urbancode.terraform.tasks.common.EnvironmentTask;
import com.urbancode.terraform.tasks.common.TerraformContext;
public class EnvironmentTaskMicrosoft extends EnvironmentTask {
//**********************************************************************************************
// CLASS
//**********************************************************************************************
static private final Logger log = Logger.getLogger(EnvironmentTaskMicrosoft.class);
//**********************************************************************************************
// INSTANCE
//**********************************************************************************************
private List<VMTask> vmTasks = new ArrayList<VMTask>();
private List<WebsiteTask> websiteTasks = new ArrayList<WebsiteTask>();
private List<CloudServiceTask> csTasks = new ArrayList<CloudServiceTask>();
//----------------------------------------------------------------------------------------------
public EnvironmentTaskMicrosoft(TerraformContext context) {
super(context);
}
//----------------------------------------------------------------------------------------------
public TerraformContext fetchContext() {
return (TerraformContext) this.context;
}
//----------------------------------------------------------------------------------------------
public List<VMTask> getVmTasks() {
return vmTasks;
}
//----------------------------------------------------------------------------------------------
public List<WebsiteTask> getWebsiteTasks(){
return websiteTasks;
}
//----------------------------------------------------------------------------------------------
public List<CloudServiceTask> getCloudServiceTasks(){
return csTasks;
}
//----------------------------------------------------------------------------------------------
public VMTask createVm() {
VMTask vmTask = new VMTask();
vmTasks.add(vmTask);
return vmTask;
}
//----------------------------------------------------------------------------------------------
public WebsiteTask createWebsite() {
WebsiteTask websiteTask = new WebsiteTask();
websiteTasks.add(websiteTask);
return websiteTask;
}
//----------------------------------------------------------------------------------------------
public CloudServiceTask createCloudService() {
CloudServiceTask csTask = new CloudServiceTask();
csTasks.add(csTask);
return csTask;
}
//----------------------------------------------------------------------------------------------
@Override
public void create() {
for(VMTask vmTask : vmTasks) {
try {
vmTask.setUuid(suffix);
vmTask.create();
//CloudServiceTask csTask = createCloudService();
//csTask.setName(vmTask.getDnsName());
} catch (Exception e) {
log.warn("Exception while creating Azure VM", e);
}
}
for(WebsiteTask site : websiteTasks) {
try {
site.create();
}
catch (Exception e) {
log.warn("Exception while creating Azure website", e);
}
}
}
//----------------------------------------------------------------------------------------------
@Override
public void restore() {
}
//----------------------------------------------------------------------------------------------
@Override
public void destroy() {
for(VMTask vmTask : vmTasks) {
try {
vmTask.destroy();
} catch (Exception e) {
log.warn("Exception while deleting Azure VM", e);
}
}
for(WebsiteTask site : websiteTasks) {
try {
site.destroy();
}
catch (Exception e) {
log.warn("Exception while creating Azure website", e);
}
}
}
}