package org.opennaas.core.resources.helpers;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.opennaas.core.resources.ResourceIdentifier;
import org.opennaas.core.resources.descriptor.CapabilityDescriptor;
import org.opennaas.core.resources.descriptor.CapabilityProperty;
import org.opennaas.core.resources.descriptor.Information;
import org.opennaas.core.resources.descriptor.ResourceDescriptor;
import org.opennaas.core.resources.descriptor.ResourceDescriptorConstants;
import org.opennaas.core.resources.profile.ProfileDescriptor;
import org.opennaas.core.resources.protocol.ProtocolSessionContext;
//TODO TO FIX!! WE HAVE TO KNOW HOW A RESOURCE HAVE TO BE FILL
public class ResourceDescriptorFactory {
public static String version = "1.0";
static Log log = LogFactory
.getLog(ResourceDescriptorFactory.class);
public static ResourceDescriptor newResourceDescriptor(String name, String type, List<String> capabilities) {
ResourceDescriptor resourceDescriptor = new ResourceDescriptor();
Map<String, String> properties = new HashMap<String, String>();
List<CapabilityDescriptor> capabilityDescriptors = new ArrayList<CapabilityDescriptor>();
for (String capability : capabilities) {
capabilityDescriptors.add(newCapabilityDescriptor(capability, "junos"));
}
resourceDescriptor.setCapabilityDescriptors(capabilityDescriptors);
// /* FIXME PUT PROTOCOL_URI IN RESOURCE DESCRIPTOR CONSTANTS */
properties.put(ResourceDescriptorConstants.PROTOCOL_URI,
"user:pass@host.net:2212");
resourceDescriptor.setProperties(properties);
/* information. It is only necessary to add type */
Information information = new Information();
information.setType(type);
information.setName(name);
resourceDescriptor.setInformation(information);
ResourceIdentifier id = new ResourceIdentifier(type);
resourceDescriptor.setId(id.getId());
return resourceDescriptor;
}
public static ResourceDescriptor newResourceDescriptorProteus(String resourceName, String resourceType, List<String> capabilities) {
ResourceDescriptor resourceDescriptor = new ResourceDescriptor();
List<CapabilityDescriptor> capabilityDescriptors = new ArrayList<CapabilityDescriptor>();
for (String capability : capabilities) {
capabilityDescriptors.add(newCapabilityDescriptorProteus(capability, "proteus"));
}
resourceDescriptor.setCapabilityDescriptors(capabilityDescriptors);
// /* FIXME PUT PROTOCOL_URI IN RESOURCE DESCRIPTOR CONSTANTS */
// Map<String, String> properties = new HashMap<String, String>();
// properties.put(ResourceDescriptorConstants.PROTOCOL_URI,
// "user:pass@host.net:2212");
// resourceDescriptor.setProperties(properties);
ResourceIdentifier identifier = new ResourceIdentifier(resourceType);
resourceDescriptor.setId(identifier.getId());
/* information. It is only necessary to add type */
Information information = new Information();
information.setType(resourceType);
information.setName(resourceName);
resourceDescriptor.setInformation(information);
return resourceDescriptor;
}
public static CapabilityDescriptor newCapabilityDescriptor(String type, String model) {
// TODO IS THERE A BETTER METHOD TO PASS THE URI?
String uri = System.getProperty("protocol.uri");
if (uri == null || uri.equals("")) {
log.info("INFO: Getting uri param from terminal");
uri = "mock://user:pass@host.net:2212/mocksubsystem";
}
return newCapabilityDescriptor(type, model, "10.10", "netconf", uri);
}
public static CapabilityDescriptor newCapabilityDescriptorProteus(String type, String model) {
// TODO IS THERE A BETTER METHOD TO PASS THE URI?
String uri = System.getProperty("protocol.uri");
if (uri == null || uri.equals("")) {
log.info("INFO: Getting uri param from terminal");
uri = "mock://user:pass@host.net:2212/mocksubsystem";
}
return newCapabilityDescriptor(type, model, "1.0", "wonesys", uri);
}
public static CapabilityDescriptor newCapabilityDescriptor(String type, String model, String version, String protocol, String protocolUri) {
CapabilityDescriptor capabilityDescriptor = new CapabilityDescriptor();
CapabilityProperty property = new CapabilityProperty(
ResourceDescriptorConstants.PROTOCOL_URI, protocolUri);
capabilityDescriptor.getCapabilityProperties().add(property);
property = new CapabilityProperty(
ResourceDescriptorConstants.ACTION_NAME, model);
capabilityDescriptor.getCapabilityProperties().add(property);
property = new CapabilityProperty(
ResourceDescriptorConstants.ACTION_VERSION, version);
capabilityDescriptor.getCapabilityProperties().add(property);
property = new CapabilityProperty(ProtocolSessionContext.PROTOCOL,
protocol);
capabilityDescriptor.getCapabilityProperties().add(property);
Information capabilityInformation = new Information();
capabilityInformation.setType(type);
capabilityDescriptor.setCapabilityInformation(capabilityInformation);
return capabilityDescriptor;
}
public static ProfileDescriptor newProfileDescriptor(String profileName, String resourceType) {
ProfileDescriptor profileDescriptor = new ProfileDescriptor();
profileDescriptor.setProfileName(profileName);
profileDescriptor.setResourceType(resourceType);
return profileDescriptor;
}
}