/*
(c) Copyright 2011 Telefonica, I+D. Printed in Spain (Europe). All Rights
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 accordance with the terms and conditions
stipulated in the agreement/contract under which the program(s) have
been supplied.
*/
package com.telefonica.claudia.slm.naming;
import com.telefonica.claudia.slm.deployment.CPU;
import com.telefonica.claudia.slm.deployment.Disk;
import com.telefonica.claudia.slm.deployment.MeasuredValue;
import com.telefonica.claudia.slm.deployment.Memory;
import com.telefonica.claudia.slm.deployment.NIC;
import com.telefonica.claudia.slm.deployment.Network;
import com.telefonica.claudia.slm.deployment.Notification;
import com.telefonica.claudia.slm.deployment.RuleSet;
import com.telefonica.claudia.slm.deployment.ServiceApplication;
import com.telefonica.claudia.slm.deployment.VDC;
import com.telefonica.claudia.slm.deployment.VEE;
import com.telefonica.claudia.slm.deployment.VEEReplica;
@SuppressWarnings("unchecked")
public class ReservoirDirectory extends Directory {
private static ReservoirDirectory resDirInstance = null;
// FIXME: make the following line work and avoid the hardwiring (quick fix during London F2F :)
//public static final String ROOT_NAME_SPACE = SMConfiguration.getInstance().getSiteRoot();
public static String ROOT_NAME_SPACE = "es.tid";
public static final String COSTUMERS_NAME_SPACE = "customers";
public static final String SERVICES_NAME_SPACE = "services";
public static final String NETWORKS_NAME_SPACE= "networks";
public static final String VEES_NAME_SPACE = "vees";
public static final String VEE_REPLICAS_NAME_SPACE = "replicas";
public static final String CPUS_NAME_SPACE = "cpus";
public static final String DISKS_NAME_SPACE = "disks";
public static final String MEMORY_NAME_SPACE = "memory";
public static final String NICS_NAME_SPACE = "networks";
public static final String SERVICE_KPIS_NAME_SPACE = "kpis";
public static final String RULES_KPIS_NAME_SPACE = "rules";
private ReservoirDirectory() {
super(new FQN(ROOT_NAME_SPACE));
}
public static ReservoirDirectory getInstance() {
if(resDirInstance == null)
resDirInstance = new ReservoirDirectory();
return resDirInstance;
}
public void setRoot(String root) {
ROOT_NAME_SPACE = root;
}
public FQN buildFQN(VDC customer) {
FQN newFQN=new FQN(ROOT_NAME_SPACE + FQN.CONTEXT_SEPARATOR + COSTUMERS_NAME_SPACE + FQN.CONTEXT_SEPARATOR + customer.getVdcName());
customer.setFqnString(newFQN.toString());
return newFQN;
}
/**
* Generate the ServiceApplication FQN.
*
* @param service
* The service whose FQN is to be build.
*
* @return
*/
public FQN buildFQN(ServiceApplication service) {
FQN newFQN = new FQN(buildFQN(service.getVdc()) + FQN.CONTEXT_SEPARATOR + SERVICES_NAME_SPACE + FQN.CONTEXT_SEPARATOR + service.getServiceName());
service.setFqnString(newFQN.toString());
return newFQN;
}
public FQN buildFQN(VEE vee) {
FQN newFQN = new FQN(buildFQN(vee.getServiceApplication()) + FQN.CONTEXT_SEPARATOR + VEES_NAME_SPACE + FQN.CONTEXT_SEPARATOR + vee.getVEEName());
vee.setFqnString(newFQN.toString());
return newFQN;
}
public FQN buildFQN(VEEReplica veeReplica) {
FQN newFQN = new FQN(buildFQN(veeReplica.getParentVEE()) + FQN.CONTEXT_SEPARATOR + VEE_REPLICAS_NAME_SPACE + FQN.CONTEXT_SEPARATOR + veeReplica.getId());
veeReplica.setFqnString(newFQN.toString());
return newFQN;
}
public FQN buildFQN(CPU cpu) {
FQN newFQN = new FQN(buildFQN(cpu.getRunningReplica()) + FQN.CONTEXT_SEPARATOR + CPUS_NAME_SPACE + FQN.CONTEXT_SEPARATOR + cpu.getId());
cpu.setFqnString(newFQN.toString());
return newFQN;
}
public FQN buildFQN(Disk disk) {
FQN newFQN = new FQN(buildFQN(disk.getVEEReplica()) + FQN.CONTEXT_SEPARATOR + DISKS_NAME_SPACE + FQN.CONTEXT_SEPARATOR + disk.getDiskConf().getFileSystem().getName());
disk.setFqnString(newFQN.toString());
return newFQN;
}
public FQN buildFQN(Memory memory) {
FQN newFQN = new FQN(buildFQN(memory.getVEEReplica()) + FQN.CONTEXT_SEPARATOR + MEMORY_NAME_SPACE);
memory.setFqnString(newFQN.toString());
return newFQN;
}
public FQN buildFQN(NIC nic) {
FQN newFQN = new FQN(buildFQN(nic.getVeeReplica()) + FQN.CONTEXT_SEPARATOR + NICS_NAME_SPACE + FQN.CONTEXT_SEPARATOR + nic.getId());
nic.setFqnString(newFQN.toString());
return newFQN;
}
public FQN buildFQN(Network network) {
FQN newFQN = new FQN(buildFQN(network.getZone().getVdc()) + FQN.CONTEXT_SEPARATOR + NETWORKS_NAME_SPACE + FQN.CONTEXT_SEPARATOR + network.getName());
network.setFqnString(newFQN.toString());
return newFQN;
}
public FQN buildFQN(MeasuredValue serviceKPI) {
FQN newFQN =new FQN(buildFQN(serviceKPI.getServiceApplication()) + FQN.CONTEXT_SEPARATOR + SERVICE_KPIS_NAME_SPACE + FQN.CONTEXT_SEPARATOR + serviceKPI.getName());
serviceKPI.setFqnString(newFQN.toString());
return newFQN;
}
public FQN buildFQN(Notification notification) {
FQN newFQN = new FQN(buildFQN(notification.getServiceApplication()) + FQN.CONTEXT_SEPARATOR + SERVICE_KPIS_NAME_SPACE + FQN.CONTEXT_SEPARATOR + notification.getNotificationName());
notification.setFqnString(newFQN.toString());
return newFQN;
}
public FQN buildFQN(RuleSet rule) {
FQN newFQN = new FQN(buildFQN(rule.getServiceApplication()) + FQN.CONTEXT_SEPARATOR + RULES_KPIS_NAME_SPACE + FQN.CONTEXT_SEPARATOR + rule.getName());
rule.setFqnString(newFQN.toString());
return newFQN;
}
}