/**
* This file is part of CloudML [ http://cloudml.org ]
*
* Copyright (C) 2012 - SINTEF ICT
* Contact: Franck Chauvel <franck.chauvel@sintef.no>
*
* Module: root
*
* CloudML is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version.
*
* CloudML is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with CloudML. If not, see
* <http://www.gnu.org/licenses/>.
*/
package org.cloudml.connectors;
import java.net.MalformedURLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.cloudml.core.Provider;
public class ConnectorFactory {
private static final Logger journal = Logger.getLogger(ConnectorFactory.class.getName());
public static Connector createIaaSConnector(Provider p){
try {
if(p.getName().toLowerCase().equals("aws-ec2") || p.getName().toLowerCase().equals("ec2"))
return new JCloudsConnector(p.getName(), p.getCredentials().getLogin(), p.getCredentials().getPassword());
if(p.getName().toLowerCase().equals("cloudsigma2-zrh"))
return new CloudSigmaConnector(p.getName(), p.getCredentials().getLogin(), p.getCredentials().getPassword());
if(p.getName().toLowerCase().equals("flexiant"))
return new FlexiantConnector(p.getProperties().valueOf("endPoint"), p.getCredentials().getLogin(), p.getCredentials().getPassword());
if(p.getName().toLowerCase().equals("openstack-nova"))
return new OpenStackConnector(p.getProperties().valueOf("endPoint"), p.getName(), p.getCredentials().getLogin(), p.getCredentials().getPassword());
if(p.getName().toLowerCase().equals("azurecompute"))
return new AzureConnector(p.getProperties().valueOf("endPoint"), p.getName(), p.getCredentials().getLogin(), p.getCredentials().getPassword());
} catch (MalformedURLException e) {
journal.log(Level.SEVERE, e.getMessage());
}
throw new IllegalArgumentException("No such connector");
}
/**
* I had a hard-coded region of eu-west-1. Need to fix this some time
* @param p
* @return
*/
public static PaaSConnector createPaaSConnector(Provider p){
if("beanstalk".equals(p.getName().toLowerCase()) || "ebs".equals(p.getName().toLowerCase())
|| "rds".equals(p.getName().toLowerCase()) || "sqs".equals(p.getName().toLowerCase()))
return new BeanstalkConnector(p.getCredentials().getLogin(), p.getCredentials().getPassword(), "eu-west-1");
if("cloudbees".equals(p.getName().toLowerCase()))
return new Cloud4soaConnector(p);
if("cf".equals(p.getName().toLowerCase()) || p.getName().toLowerCase().contains("cloudfoundry"))
return new CloudFoundryConnector(p.getProperties().valueOf("endPoint"),p.getCredentials().getLogin(), p.getCredentials().getPassword(),
p.getProperties().valueOf("org"), p.getProperties().valueOf("space"));
throw new IllegalArgumentException("No such connector");
}
private static PyHrapiConnector loadbalancerConnector = null;
/**
* Now we assume that there is only one type of connector for load balancer
* @param endpoint
* @param version
* @return
*/
public static PyHrapiConnector createLoadBalancerProvider(String endpoint){
PyHrapiConnector loadbalancerConnector = new PyHrapiConnector(endpoint, PyHrapiConnector.Version.V1);
//loadbalancerConnector.setEndpoint(endpoint);
return loadbalancerConnector;
}
}