/*
(c) Copyright 2010 Telefonica, I+D. Printed in Spain (Europe). All Righ
Reserved.
The copyright to the software program(s) is property of Telefonica I+D.
The program(s) may be used and or copied only with the express written
consent of Telefonica I+D or in acordance with the terms and conditions
stipulated in the agreement/contract under which the program(s) have
been supplied.
*/
package es.tid.reservoir.serviceManager.maniParser.test;
import static org.junit.Assert.fail;
import java.io.ByteArrayOutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import org.junit.Before;
import org.junit.Test;
import com.telefonica.claudia.slm.common.SMConfiguration;
import com.telefonica.claudia.slm.deployment.Customer;
import com.telefonica.claudia.slm.deployment.ServiceApplication;
import com.telefonica.claudia.slm.deployment.VEE;
import com.telefonica.claudia.slm.deployment.VEEReplica;
import com.telefonica.claudia.slm.maniParser.ManiParserException;
import com.telefonica.claudia.slm.maniParser.Parser;
import com.telefonica.claudia.slm.serviceconfiganalyzer.ServiceConfigurationAnalyzer;
public class ThalesUseCase {
/**
* @throws java.lang.Exception
*/
@Before
public void setUp() throws Exception {
}
@Test
public void testParser2_thales() {
String xmlFileName = "src/test/resources/thales.xml";
try {
SMConfiguration.loadProperties();
System.out.println("------------------------------------------------------------------------------------");
System.out.println("procesing " + xmlFileName);
Parser p = new Parser(xmlFileName, new Customer("SP_STANDARD"), "ANONYMOUSSERVICE");
p.parse();
// Manually populate the replicas to continue the test
ServiceApplication sa = p.getServiceApplication();
Iterator<VEE> vees = sa.getVEEs().iterator();
VEE master = vees.next();
VEE executor = vees.next();
VEEReplica vee1 = new VEEReplica(master);
VEEReplica vee2 = new VEEReplica(executor);
master.registerVEEReplica(vee1);
executor.registerVEEReplica(vee2);
HashMap<String,String> netmasks = new HashMap<String,String>();
netmasks.put("service_network","255.255.255.0");
// DNS is not used by Thales
HashMap<String,String> dnsServers = new HashMap<String,String>();
dnsServers.put("service_network","1.2.3.4");
HashMap<String,String> gateways = new HashMap<String,String>();
gateways.put("service_network","172.17.100.1");
HashMap<String, HashMap<String,String>> eps = new HashMap<String, HashMap<String,String>>();
HashMap<String,String> eps1 = new HashMap<String,String>();
eps1.put("Monitoring", "172.17.10.60");
eps1.put("Database", "172.17.10.23");
eps1.put("Load_Balancer", "172.17.10.22 172.17.10.51 172.17.10.52 172.17.10.53"); // Load_Balancer uses 4 IPs in virtual_network1
eps.put("virtual_network1", eps1);
HashMap<String,String> eps2 = new HashMap<String,String>();
eps2.put("Load_Balancer", "172.17.100.48 172.17.100.50"); // Load_Balancer uses 2 IPs in service_network
eps.put("service_network", eps2);
// Let's generate the OVF Environment for every VirtualSystem type */
p.generateEnvironments("Load_Balancer",0,getFreshIPS4LoadBalancer(),netmasks,dnsServers,gateways,eps);
p.generateEnvironments("Portail",0,null,netmasks,dnsServers,gateways,eps);
p.generateEnvironments("Service_Map",0,null,netmasks,dnsServers,gateways,eps);
p.generateEnvironments("Service_Portal",0,null,netmasks,dnsServers,gateways,eps);
p.generateEnvironments("Service_Reference",0,null,netmasks,dnsServers,gateways,eps);
p.generateEnvironments("Database",0,getFreshIPS4Database(),netmasks,dnsServers,gateways,eps);
p.generateEnvironments("Monitoring",0,getFreshIPS4Monitoring(),netmasks,dnsServers,gateways,eps);
/* Testing SCA */
ServiceConfigurationAnalyzer sca = new ServiceConfigurationAnalyzer();
HashMap<String,String> hm = sca.getBuildingBlockAvailabilyLabel(sa);
for (Iterator<String> i = hm.keySet().iterator(); i.hasNext() ; ) {
String vee = i.next();
// FIXME: use the proper logger
System.out.println("availability for VEE " + vee + ": " + hm.get(vee));
}
hm = sca.getBuildingBlockCapacityLabel(sa);
for (Iterator<String> i = hm.keySet().iterator(); i.hasNext() ; ) {
String vee = i.next();
// FIXME: use the proper logger
System.out.println("building block for VEE " + vee + ": " + hm.get(vee));
}
HashMap<String,ArrayList<String>> hml = sca.getAllowableSites(sa);
for (Iterator<String> i = hml.keySet().iterator(); i.hasNext() ; ) {
String vee = i.next();
// FIXME: use the proper logger
String sites = "";
for (Iterator<String> ii = hml.get(vee).iterator(); ii.hasNext(); ) {
String site = ii.next();
sites += site + " ";
}
System.out.println("allowed sites for VEE " + vee + ": " + sites);
}
} catch (Throwable t) {
t.printStackTrace();
fail(t.getMessage());
}
}
HashMap<String,ArrayList<String>> getFreshIPS4LoadBalancer() {
ArrayList<String> net1 = new ArrayList<String>();
net1.add("172.17.10.22");
net1.add("172.17.10.51");
net1.add("172.17.10.52");
net1.add("172.17.10.53");
ArrayList<String> net2 = new ArrayList<String>();
net2.add("172.17.100.48");
net2.add("172.17.100.50");
HashMap<String,ArrayList<String>> ips = new HashMap<String,ArrayList<String>>();
ips.put("virtual_network1",net1);
ips.put("service_network",net2);
return ips;
}
HashMap<String,ArrayList<String>> getFreshIPS4Monitoring() {
ArrayList<String> net1 = new ArrayList<String>();
net1.add("172.17.10.60");
ArrayList<String> net2 = new ArrayList<String>();
net2.add("172.17.100.60");
HashMap<String,ArrayList<String>> ips = new HashMap<String,ArrayList<String>>();
ips.put("virtual_network1",net1);
ips.put("service_network",net2);
return ips;
}
HashMap<String,ArrayList<String>> getFreshIPS4Database() {
ArrayList<String> net1 = new ArrayList<String>();
net1.add("172.17.10.23");
ArrayList<String> net2 = new ArrayList<String>();
net2.add("172.17.100.49");
HashMap<String,ArrayList<String>> ips = new HashMap<String,ArrayList<String>>();
ips.put("virtual_network1",net1);
ips.put("service_network",net2);
return ips;
}
}