package com.telefonica.euro_iaas.placement.init;
import java.io.FileNotFoundException;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.logging.Logger;
import javax.activation.UnsupportedDataTypeException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.support.TransactionSynchronizationManager;
import com.telefonica.euro_iaas.placement.dao.CloudProviderDao;
import com.telefonica.euro_iaas.placement.helper.XmlCloudProviderHelper;
import com.telefonica.euro_iaas.placement.model.provider.CloudProvider;
import com.telefonica.euro_iaas.placement.model.provider.Location;
import com.telefonica.euro_iaas.placement.model.provider.MemoryConf;
import com.telefonica.euro_iaas.placement.model.provider.VEE;
@Service
public class InitDbCloudProviders{
private static final Logger LOGGER = Logger.getLogger(InitDbCloudProviders.class.getName());
@Autowired
private CloudProviderDao cloudProviderDao;
/* -- ESTO NO FUNCIONA - NO EXISTE DICHO FICHERO!!!
* public static void main(final String[] args) throws Exception {
AbstractApplicationContext ctx = new ClassPathXmlApplicationContext(
new String[] { "spring.xml" });
ctx.registerShutdownHook();
InitDbCloudProviders init = ctx.getBean(InitDbCloudProviders.class);
init.load();
//init.loadTestBedBCN();
}*/
public InitDbCloudProviders() {
}
@Transactional
public void loadTestBedBCN(){
LOGGER.info(" ");
assert TransactionSynchronizationManager.isActualTransactionActive();
List<CloudProvider> list = cloudProviderDao.findAll();
LOGGER.info(" size of current cloudProviders: " + list.size());
if (list.size() != 0){
LOGGER.info(" ALREADY LOADED!! ");
return;
}
/**
VEE vee1cp1 = new VEE();
vee1cp1.setName("VEE1 EMOTIVE1");
vee1cp1.setCost(10);
MemoryConf mc=new MemoryConf();
mc.setMemoryUnit(MemoryUnit.GB);
mc.setQuantity(128);
vee1cp1.setMemoryConf(mc);
CloudProvider cp1 = new CloudProvider();
cp1.setUri("http://84.21.173.26:8080/DRP");
cp1.setName("EMOTIVE1");
cp1.setVees(new HashSet<VEE>(Arrays.asList(new VEE[] {vee1cp1})));
vee1cp1.setCloudProvider(cp1);
VEE vee1cp2 = new VEE();
vee1cp2.setName("VEE1 EMOTIVE2");
vee1cp2.setCost(20);
CloudProvider cp2 = new CloudProvider();
cp2.setUri("http://84.21.173.27:8080/DRP");
cp2.setName("EMOTIVE2");
cp2.setVees(new HashSet<VEE>(Arrays.asList(new VEE[] {vee1cp2})));
vee1cp2.setCloudProvider(cp2);
VEE vee1cp3 = new VEE();
vee1cp3.setName("VEE1 ONE");
vee1cp3.setCost(30);
CloudProvider cp3 = new CloudProvider();
cp3.setUri("http://84.21.173.28:4567");
cp3.setName("ONE");
cp3.setVees(new HashSet<VEE>(Arrays.asList(new VEE[] {vee1cp3})));
vee1cp3.setCloudProvider(cp3);
// * ----------- temporal ------------------- *
try {
XMLEncoder encoder=new XMLEncoder(
new BufferedOutputStream(new FileOutputStream("/tmp/mf.xml")));
encoder.writeObject(cp1);
encoder.writeObject(vee1cp1);
encoder.writeObject(cp2);
encoder.writeObject(vee1cp2);
encoder.writeObject(cp3);
encoder.writeObject(vee1cp3);
encoder.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// * ----------- fin temporal ------------------- *
cloudProviderDao.save(cp1);
cloudProviderDao.save(cp2);
cloudProviderDao.save(cp3);
LOGGER.info("loadTestBedBCN load end");
**/
/**/XmlCloudProviderHelper x=XmlCloudProviderHelper.getInstance();
try {
Set<CloudProvider> newcps=x.decode();
for (CloudProvider cp : newcps) {
System.out.println("cn.nombre: " + cp.getName());
for (VEE vee : cp.getVees()) {
System.out.println("....vee.nombre: "+vee.getName() + " --> " + vee.getCost());
}
System.out.flush();
cloudProviderDao.save(cp);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedDataTypeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
/**/
}
@Transactional
public void load(){
assert TransactionSynchronizationManager.isActualTransactionActive();
List<CloudProvider> list = cloudProviderDao.findAll();
LOGGER.info(" size of current cloudProviders: " + list.size());
if (list.size() != 0){
LOGGER.info(" ALREADY LOADED!! ");
return;
}
LOGGER.info("load start");
Location loccp1 = new Location();
loccp1.setName("Madrid");
VEE vee1cp1 = new VEE();
vee1cp1.setName("VEE1 Amazon");
vee1cp1.setCost(10);
MemoryConf memconfvee1cp1 = new MemoryConf();
memconfvee1cp1.setQuantity(5);
vee1cp1.setMemoryConf(memconfvee1cp1);
VEE vee2cp1 = new VEE();
vee2cp1.setName("VEE2 Amazon");
vee2cp1.setCost(10);
MemoryConf memconfvee2cp1 = new MemoryConf();
memconfvee2cp1.setQuantity(20);
vee2cp1.setMemoryConf(memconfvee2cp1);
CloudProvider cp1 = new CloudProvider();
cp1.setLocation(loccp1);
cp1.setUri("http://www.amazon.com");
cp1.setName("Amazon");
cp1.setVees(new HashSet<VEE>(Arrays.asList(new VEE[] {vee1cp1, vee2cp1})));
vee1cp1.setCloudProvider(cp1);
vee2cp1.setCloudProvider(cp1);
Location loccp2 = new Location();
loccp2.setName("Barcelona");
VEE vee1cp2 = new VEE();
vee1cp2.setName("VEE1 RackSpace");
vee1cp2.setCost(20);
MemoryConf memconfvee1cp2 = new MemoryConf();
memconfvee1cp2.setQuantity(256);
vee1cp2.setMemoryConf(memconfvee1cp2);
VEE vee2cp2 = new VEE();
vee2cp2.setName("VEE2 RackSpace");
vee2cp2.setCost(20);
MemoryConf memconfvee2cp2 = new MemoryConf();
memconfvee2cp2.setQuantity(40);
vee2cp2.setMemoryConf(memconfvee2cp2);
CloudProvider cp2 = new CloudProvider();
cp2.setName("RackSpace");
cp2.setVees(new HashSet<VEE>(Arrays.asList(new VEE[] {vee1cp2, vee2cp2})));
cp2.setLocation(loccp2);
cp2.setUri("http://www.rackspace.com");
vee1cp2.setCloudProvider(cp2);
vee2cp2.setCloudProvider(cp2);
Location loccp3 = new Location();
loccp3.setName("NY");
VEE vee1cp3 = new VEE();
vee1cp3.setName("VEE1 FlexiScale");
vee1cp3.setCost(1);
MemoryConf memconfvee1cp3 = new MemoryConf();
memconfvee1cp3.setQuantity(256);
vee1cp3.setMemoryConf(memconfvee1cp3);
VEE vee2cp3 = new VEE();
vee2cp3.setName("VEE2 FlexiScale");
vee2cp3.setCost(100);
MemoryConf memconfvee2cp3 = new MemoryConf();
memconfvee2cp3.setQuantity(5);
vee2cp3.setMemoryConf(memconfvee2cp3);
CloudProvider cp3 = new CloudProvider();
cp3.setName("FlexiScale");
cp3.setUri("http://www.flexiscale.com");
cp3.setVees(new HashSet<VEE>(Arrays.asList(new VEE[] {vee1cp3, vee2cp3})));
cp3.setLocation(loccp3);
vee1cp3.setCloudProvider(cp3);
vee2cp3.setCloudProvider(cp3);
Location loccp4 = new Location();
loccp4.setName("Paris");
VEE vee1cp4 = new VEE();
vee1cp4.setName("VEE1 OpenNebula");
vee1cp4.setCost(100);
MemoryConf memconfvee1cp4 = new MemoryConf();
memconfvee1cp4.setQuantity(100);
vee1cp4.setMemoryConf(memconfvee1cp4);
CloudProvider cp4 = new CloudProvider();
cp4.setName("OpenNebula");
cp4.setUri("http://www.opennebula.com");
cp4.setVees(new HashSet<VEE>(Arrays.asList(new VEE[] {vee1cp4})));
cp4.setLocation(loccp4);
vee1cp4.setCloudProvider(cp4);
cloudProviderDao.save(cp1);
cloudProviderDao.save(cp2);
cloudProviderDao.save(cp3);
cloudProviderDao.save(cp4);
LOGGER.info("load end");
}
/**
* @return the cloudProviderDao
*/
public CloudProviderDao getCloudProviderDao() {
return cloudProviderDao;
}
/**
* @param cloudProviderDao the cloudProviderDao to set
*/
public void setCloudProviderDao(CloudProviderDao cloudProviderDao) {
this.cloudProviderDao = cloudProviderDao;
}
}