Merge branch 'master' into vim51_win8

Conflicts:
	plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/VmwareServerDiscoverer.java
	plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java
	plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareContextFactory.java
	plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java
	pom.xml

Signed-off-by: Min Chen <min.chen@citrix.com>
This commit is contained in:
Min Chen 2013-02-05 10:05:39 -08:00
commit a224287403
2502 changed files with 131550 additions and 45677 deletions

2
.gitignore vendored
View File

@ -62,7 +62,6 @@ tools/cli/build/
awsapi/modules/* awsapi/modules/*
!.gitignore !.gitignore
.classpath .classpath
.project
.settings.xml .settings.xml
.settings/ .settings/
db.properties.override db.properties.override
@ -73,4 +72,5 @@ docs/tmp
docs/publish docs/publish
docs/runbook/tmp docs/runbook/tmp
docs/runbook/publish docs/runbook/publish
.project
Gemfile.lock Gemfile.lock

View File

@ -53,10 +53,7 @@ import com.cloud.utils.ProcessUtil;
import com.cloud.utils.PropertiesUtil; import com.cloud.utils.PropertiesUtil;
import com.cloud.utils.backoff.BackoffAlgorithm; import com.cloud.utils.backoff.BackoffAlgorithm;
import com.cloud.utils.backoff.impl.ConstantTimeBackoff; import com.cloud.utils.backoff.impl.ConstantTimeBackoff;
import com.cloud.utils.component.Adapters;
import com.cloud.utils.component.ComponentLocator;
import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.utils.exception.CloudRuntimeException;
import com.cloud.utils.net.MacAddress;
import com.cloud.utils.script.Script; import com.cloud.utils.script.Script;
public class AgentShell implements IAgentShell { public class AgentShell implements IAgentShell {
@ -146,6 +143,7 @@ public class AgentShell implements IAgentShell {
return _guid; return _guid;
} }
@Override
public Map<String, Object> getCmdLineProperties() { public Map<String, Object> getCmdLineProperties() {
return _cmdLineProperties; return _cmdLineProperties;
} }
@ -378,8 +376,6 @@ public class AgentShell implements IAgentShell {
public void init(String[] args) throws ConfigurationException { public void init(String[] args) throws ConfigurationException {
final ComponentLocator locator = ComponentLocator.getLocator("agent");
final Class<?> c = this.getClass(); final Class<?> c = this.getClass();
_version = c.getPackage().getImplementationVersion(); _version = c.getPackage().getImplementationVersion();
if (_version == null) { if (_version == null) {
@ -396,12 +392,9 @@ public class AgentShell implements IAgentShell {
s_logger.debug("Found property: " + property); s_logger.debug("Found property: " + property);
} }
_storage = locator.getManager(StorageComponent.class); s_logger.info("Defaulting to using properties file for storage");
if (_storage == null) { _storage = new PropertiesStorage();
s_logger.info("Defaulting to using properties file for storage"); _storage.configure("Storage", new HashMap<String, Object>());
_storage = new PropertiesStorage();
_storage.configure("Storage", new HashMap<String, Object>());
}
// merge with properties from command line to let resource access // merge with properties from command line to let resource access
// command line parameters // command line parameters
@ -410,22 +403,9 @@ public class AgentShell implements IAgentShell {
_properties.put(cmdLineProp.getKey(), cmdLineProp.getValue()); _properties.put(cmdLineProp.getKey(), cmdLineProp.getValue());
} }
final Adapters adapters = locator.getAdapters(BackoffAlgorithm.class); s_logger.info("Defaulting to the constant time backoff algorithm");
final Enumeration en = adapters.enumeration(); _backoff = new ConstantTimeBackoff();
while (en.hasMoreElements()) { _backoff.configure("ConstantTimeBackoff", new HashMap<String, Object>());
_backoff = (BackoffAlgorithm) en.nextElement();
break;
}
if (en.hasMoreElements()) {
s_logger.info("More than one backoff algorithm specified. Using the first one ");
}
if (_backoff == null) {
s_logger.info("Defaulting to the constant time backoff algorithm");
_backoff = new ConstantTimeBackoff();
_backoff.configure("ConstantTimeBackoff",
new HashMap<String, Object>());
}
} }
private void launchAgent() throws ConfigurationException { private void launchAgent() throws ConfigurationException {
@ -469,6 +449,7 @@ public class AgentShell implements IAgentShell {
openPortWithIptables(port); openPortWithIptables(port);
_consoleProxyMain = new Thread(new Runnable() { _consoleProxyMain = new Thread(new Runnable() {
@Override
public void run() { public void run() {
try { try {
Class<?> consoleProxyClazz = Class.forName("com.cloud.consoleproxy.ConsoleProxy"); Class<?> consoleProxyClazz = Class.forName("com.cloud.consoleproxy.ConsoleProxy");
@ -522,7 +503,7 @@ public class AgentShell implements IAgentShell {
} catch (final SecurityException e) { } catch (final SecurityException e) {
throw new ConfigurationException( throw new ConfigurationException(
"Security excetion when loading resource: " + name "Security excetion when loading resource: " + name
+ " due to: " + e.toString()); + " due to: " + e.toString());
} catch (final NoSuchMethodException e) { } catch (final NoSuchMethodException e) {
throw new ConfigurationException( throw new ConfigurationException(
"Method not found excetion when loading resource: " "Method not found excetion when loading resource: "
@ -534,7 +515,7 @@ public class AgentShell implements IAgentShell {
} catch (final InstantiationException e) { } catch (final InstantiationException e) {
throw new ConfigurationException( throw new ConfigurationException(
"Instantiation excetion when loading resource: " + name "Instantiation excetion when loading resource: " + name
+ " due to: " + e.toString()); + " due to: " + e.toString());
} catch (final IllegalAccessException e) { } catch (final IllegalAccessException e) {
throw new ConfigurationException( throw new ConfigurationException(
"Illegal access exception when loading resource: " "Illegal access exception when loading resource: "

View File

@ -23,7 +23,6 @@ import java.io.IOException;
import java.lang.reflect.Constructor; import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Enumeration;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -41,19 +40,15 @@ import com.cloud.agent.dao.impl.PropertiesStorage;
import com.cloud.agent.transport.Request; import com.cloud.agent.transport.Request;
import com.cloud.resource.ServerResource; import com.cloud.resource.ServerResource;
import com.cloud.utils.NumbersUtil; import com.cloud.utils.NumbersUtil;
import com.cloud.utils.ProcessUtil;
import com.cloud.utils.PropertiesUtil; import com.cloud.utils.PropertiesUtil;
import com.cloud.utils.backoff.BackoffAlgorithm; import com.cloud.utils.backoff.BackoffAlgorithm;
import com.cloud.utils.backoff.impl.ConstantTimeBackoff; import com.cloud.utils.backoff.impl.ConstantTimeBackoff;
import com.cloud.utils.component.Adapters;
import com.cloud.utils.component.ComponentLocator;
import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.utils.exception.CloudRuntimeException;
import com.cloud.utils.net.MacAddress; import com.cloud.utils.net.MacAddress;
import com.cloud.utils.nio.HandlerFactory; import com.cloud.utils.nio.HandlerFactory;
import com.cloud.utils.nio.Link; import com.cloud.utils.nio.Link;
import com.cloud.utils.nio.NioServer; import com.cloud.utils.nio.NioServer;
import com.cloud.utils.nio.Task; import com.cloud.utils.nio.Task;
import com.cloud.utils.nio.Task.Type;
/** /**
* Implementation of agent shell to run the agents on System Center Virtual Machine manager * Implementation of agent shell to run the agents on System Center Virtual Machine manager
@ -61,7 +56,7 @@ import com.cloud.utils.nio.Task.Type;
public class VmmAgentShell implements IAgentShell, HandlerFactory { public class VmmAgentShell implements IAgentShell, HandlerFactory {
private static final Logger s_logger = Logger.getLogger(VmmAgentShell.class.getName()); private static final Logger s_logger = Logger.getLogger(VmmAgentShell.class.getName());
private final Properties _properties = new Properties(); private final Properties _properties = new Properties();
private final Map<String, Object> _cmdLineProperties = new HashMap<String, Object>(); private final Map<String, Object> _cmdLineProperties = new HashMap<String, Object>();
private StorageComponent _storage; private StorageComponent _storage;
@ -76,12 +71,12 @@ public class VmmAgentShell implements IAgentShell, HandlerFactory {
private int _proxyPort; private int _proxyPort;
private int _workers; private int _workers;
private String _guid; private String _guid;
static private NioServer _connection; static private NioServer _connection;
static private int _listenerPort=9000; static private int _listenerPort=9000;
private int _nextAgentId = 1; private int _nextAgentId = 1;
private volatile boolean _exit = false; private volatile boolean _exit = false;
private int _pingRetries; private int _pingRetries;
private Thread _consoleProxyMain = null; private final Thread _consoleProxyMain = null;
private final List<Agent> _agents = new ArrayList<Agent>(); private final List<Agent> _agents = new ArrayList<Agent>();
public VmmAgentShell() { public VmmAgentShell() {
@ -89,99 +84,99 @@ public class VmmAgentShell implements IAgentShell, HandlerFactory {
@Override @Override
public Properties getProperties() { public Properties getProperties() {
return _properties; return _properties;
} }
@Override @Override
public BackoffAlgorithm getBackoffAlgorithm() { public BackoffAlgorithm getBackoffAlgorithm() {
return _backoff; return _backoff;
} }
@Override @Override
public int getPingRetries() { public int getPingRetries() {
return _pingRetries; return _pingRetries;
} }
@Override @Override
public String getZone() { public String getZone() {
return _zone; return _zone;
} }
@Override @Override
public String getPod() { public String getPod() {
return _pod; return _pod;
} }
@Override @Override
public String getHost() { public String getHost() {
return _host; return _host;
} }
@Override @Override
public String getPrivateIp() { public String getPrivateIp() {
return _privateIp; return _privateIp;
} }
@Override @Override
public int getPort() { public int getPort() {
return _port; return _port;
} }
@Override @Override
public int getProxyPort() { public int getProxyPort() {
return _proxyPort; return _proxyPort;
} }
@Override @Override
public int getWorkers() { public int getWorkers() {
return _workers; return _workers;
} }
@Override @Override
public String getGuid() { public String getGuid() {
return _guid; return _guid;
} }
@Override @Override
public void upgradeAgent(String url) { public void upgradeAgent(String url) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
} }
@Override @Override
public String getVersion() { public String getVersion() {
return _version; return _version;
} }
@Override @Override
public Map<String, Object> getCmdLineProperties() { public Map<String, Object> getCmdLineProperties() {
// TODO Auto-generated method stub // TODO Auto-generated method stub
return _cmdLineProperties; return _cmdLineProperties;
}
public String getProperty(String prefix, String name) {
if(prefix != null)
return _properties.getProperty(prefix + "." + name);
return _properties.getProperty(name);
} }
@Override public String getProperty(String prefix, String name) {
public String getPersistentProperty(String prefix, String name) { if(prefix != null)
if(prefix != null) return _properties.getProperty(prefix + "." + name);
return _storage.get(prefix + "." + name);
return _storage.get(name);
}
@Override return _properties.getProperty(name);
public void setPersistentProperty(String prefix, String name, String value) { }
if(prefix != null)
_storage.persist(prefix + "." + name, value);
else
_storage.persist(name, value);
}
private void loadProperties() throws ConfigurationException { @Override
public String getPersistentProperty(String prefix, String name) {
if(prefix != null)
return _storage.get(prefix + "." + name);
return _storage.get(name);
}
@Override
public void setPersistentProperty(String prefix, String name, String value) {
if(prefix != null)
_storage.persist(prefix + "." + name, value);
else
_storage.persist(name, value);
}
private void loadProperties() throws ConfigurationException {
final File file = PropertiesUtil.findConfigFile("agent.properties"); final File file = PropertiesUtil.findConfigFile("agent.properties");
if (file == null) { if (file == null) {
throw new ConfigurationException("Unable to find agent.properties."); throw new ConfigurationException("Unable to find agent.properties.");
@ -222,14 +217,14 @@ public class VmmAgentShell implements IAgentShell, HandlerFactory {
} else if (tokens[0].equalsIgnoreCase("host")) { } else if (tokens[0].equalsIgnoreCase("host")) {
host = tokens[1]; host = tokens[1];
} else if(tokens[0].equalsIgnoreCase("zone")) { } else if(tokens[0].equalsIgnoreCase("zone")) {
zone = tokens[1]; zone = tokens[1];
} else if(tokens[0].equalsIgnoreCase("pod")) { } else if(tokens[0].equalsIgnoreCase("pod")) {
pod = tokens[1]; pod = tokens[1];
} else if(tokens[0].equalsIgnoreCase("guid")) { } else if(tokens[0].equalsIgnoreCase("guid")) {
guid = tokens[1]; guid = tokens[1];
} else if(tokens[0].equalsIgnoreCase("eth1ip")) { } else if(tokens[0].equalsIgnoreCase("eth1ip")) {
_privateIp = tokens[1]; _privateIp = tokens[1];
} }
} }
if (port == null) { if (port == null) {
@ -256,19 +251,19 @@ public class VmmAgentShell implements IAgentShell, HandlerFactory {
_host = host; _host = host;
if(zone != null) if(zone != null)
_zone = zone; _zone = zone;
else else
_zone = getProperty(null, "zone"); _zone = getProperty(null, "zone");
if (_zone == null || (_zone.startsWith("@") && _zone.endsWith("@"))) { if (_zone == null || (_zone.startsWith("@") && _zone.endsWith("@"))) {
_zone = "default"; _zone = "default";
} }
if(pod != null) if(pod != null)
_pod = pod; _pod = pod;
else else
_pod = getProperty(null, "pod"); _pod = getProperty(null, "pod");
if (_pod == null || (_pod.startsWith("@") && _pod.endsWith("@"))) { if (_pod == null || (_pod.startsWith("@") && _pod.endsWith("@"))) {
_pod = "default"; _pod = "default";
} }
if (_host == null || (_host.startsWith("@") && _host.endsWith("@"))) { if (_host == null || (_host.startsWith("@") && _host.endsWith("@"))) {
@ -282,14 +277,14 @@ public class VmmAgentShell implements IAgentShell, HandlerFactory {
boolean developer = Boolean.parseBoolean(value); boolean developer = Boolean.parseBoolean(value);
if(guid != null) if(guid != null)
_guid = guid; _guid = guid;
else else
_guid = getProperty(null, "guid"); _guid = getProperty(null, "guid");
if (_guid == null) { if (_guid == null) {
if (!developer) { if (!developer) {
throw new ConfigurationException("Unable to find the guid"); throw new ConfigurationException("Unable to find the guid");
} }
_guid = MacAddress.getMacAddress().toString(":"); _guid = MacAddress.getMacAddress().toString(":");
} }
return true; return true;
@ -308,8 +303,8 @@ public class VmmAgentShell implements IAgentShell, HandlerFactory {
String resourceClassNames = getProperty(null, "resource"); String resourceClassNames = getProperty(null, "resource");
s_logger.trace("resource=" + resourceClassNames); s_logger.trace("resource=" + resourceClassNames);
if(resourceClassNames != null) { if(resourceClassNames != null) {
launchAgentFromClassInfo(resourceClassNames); launchAgentFromClassInfo(resourceClassNames);
return; return;
} }
launchAgentFromTypeInfo(); launchAgentFromTypeInfo();
@ -317,8 +312,6 @@ public class VmmAgentShell implements IAgentShell, HandlerFactory {
private void init(String[] args) throws ConfigurationException{ private void init(String[] args) throws ConfigurationException{
final ComponentLocator locator = ComponentLocator.getLocator("agent");
final Class<?> c = this.getClass(); final Class<?> c = this.getClass();
_version = c.getPackage().getImplementationVersion(); _version = c.getPackage().getImplementationVersion();
if (_version == null) { if (_version == null) {
@ -328,38 +321,23 @@ public class VmmAgentShell implements IAgentShell, HandlerFactory {
parseCommand(args); parseCommand(args);
_storage = locator.getManager(StorageComponent.class); s_logger.info("Defaulting to using properties file for storage");
if (_storage == null) { _storage = new PropertiesStorage();
s_logger.info("Defaulting to using properties file for storage"); _storage.configure("Storage", new HashMap<String, Object>());
_storage = new PropertiesStorage();
_storage.configure("Storage", new HashMap<String, Object>());
}
// merge with properties from command line to let resource access command line parameters // merge with properties from command line to let resource access command line parameters
for(Map.Entry<String, Object> cmdLineProp : getCmdLineProperties().entrySet()) { for(Map.Entry<String, Object> cmdLineProp : getCmdLineProperties().entrySet()) {
_properties.put(cmdLineProp.getKey(), cmdLineProp.getValue()); _properties.put(cmdLineProp.getKey(), cmdLineProp.getValue());
} }
final Adapters adapters = locator.getAdapters(BackoffAlgorithm.class); s_logger.info("Defaulting to the constant time backoff algorithm");
final Enumeration en = adapters.enumeration(); _backoff = new ConstantTimeBackoff();
while (en.hasMoreElements()) { _backoff.configure("ConstantTimeBackoff", new HashMap<String, Object>());
_backoff = (BackoffAlgorithm)en.nextElement();
break;
}
if (en.hasMoreElements()) {
s_logger.info("More than one backoff algorithm specified. Using the first one ");
}
if (_backoff == null) {
s_logger.info("Defaulting to the constant time backoff algorithm");
_backoff = new ConstantTimeBackoff();
_backoff.configure("ConstantTimeBackoff", new HashMap<String, Object>());
}
} }
private void launchAgentFromClassInfo(String resourceClassNames) throws ConfigurationException { private void launchAgentFromClassInfo(String resourceClassNames) throws ConfigurationException {
String[] names = resourceClassNames.split("\\|"); String[] names = resourceClassNames.split("\\|");
for(String name: names) { for(String name: names) {
Class<?> impl; Class<?> impl;
try { try {
impl = Class.forName(name); impl = Class.forName(name);
@ -368,40 +346,40 @@ public class VmmAgentShell implements IAgentShell, HandlerFactory {
ServerResource resource = (ServerResource)constructor.newInstance(); ServerResource resource = (ServerResource)constructor.newInstance();
launchAgent(getNextAgentId(), resource); launchAgent(getNextAgentId(), resource);
} catch (final ClassNotFoundException e) { } catch (final ClassNotFoundException e) {
throw new ConfigurationException("Resource class not found: " + name); throw new ConfigurationException("Resource class not found: " + name);
} catch (final SecurityException e) { } catch (final SecurityException e) {
throw new ConfigurationException("Security excetion when loading resource: " + name); throw new ConfigurationException("Security excetion when loading resource: " + name);
} catch (final NoSuchMethodException e) { } catch (final NoSuchMethodException e) {
throw new ConfigurationException("Method not found excetion when loading resource: " + name); throw new ConfigurationException("Method not found excetion when loading resource: " + name);
} catch (final IllegalArgumentException e) { } catch (final IllegalArgumentException e) {
throw new ConfigurationException("Illegal argument excetion when loading resource: " + name); throw new ConfigurationException("Illegal argument excetion when loading resource: " + name);
} catch (final InstantiationException e) { } catch (final InstantiationException e) {
throw new ConfigurationException("Instantiation excetion when loading resource: " + name); throw new ConfigurationException("Instantiation excetion when loading resource: " + name);
} catch (final IllegalAccessException e) { } catch (final IllegalAccessException e) {
throw new ConfigurationException("Illegal access exception when loading resource: " + name); throw new ConfigurationException("Illegal access exception when loading resource: " + name);
} catch (final InvocationTargetException e) { } catch (final InvocationTargetException e) {
throw new ConfigurationException("Invocation target exception when loading resource: " + name); throw new ConfigurationException("Invocation target exception when loading resource: " + name);
} }
} }
} }
private void launchAgent(int localAgentId, ServerResource resource) throws ConfigurationException { private void launchAgent(int localAgentId, ServerResource resource) throws ConfigurationException {
// we don't track agent after it is launched for now // we don't track agent after it is launched for now
Agent agent = new Agent(this, localAgentId, resource); Agent agent = new Agent(this, localAgentId, resource);
_agents.add(agent); _agents.add(agent);
agent.start(); agent.start();
} }
public synchronized int getNextAgentId() { public synchronized int getNextAgentId() {
return _nextAgentId++; return _nextAgentId++;
} }
private void run(String[] args) { private void run(String[] args) {
try { try {
System.setProperty("java.net.preferIPv4Stack","true"); System.setProperty("java.net.preferIPv4Stack","true");
loadProperties(); loadProperties();
init(args); init(args);
String instance = getProperty(null, "instance"); String instance = getProperty(null, "instance");
if (instance == null) { if (instance == null) {
@ -413,22 +391,22 @@ public class VmmAgentShell implements IAgentShell, HandlerFactory {
// TODO need to do this check. For Agentshell running on windows needs different approach // TODO need to do this check. For Agentshell running on windows needs different approach
//final String run = "agent." + instance + "pid"; //final String run = "agent." + instance + "pid";
//s_logger.debug("Checking to see if " + run + "exists."); //s_logger.debug("Checking to see if " + run + "exists.");
//ProcessUtil.pidCheck(run); //ProcessUtil.pidCheck(run);
// TODO: For Hyper-V agent.properties need to be revamped to support multiple agents // TODO: For Hyper-V agent.properties need to be revamped to support multiple agents
// corresponding to multiple clusters but running on a SCVMM host // corresponding to multiple clusters but running on a SCVMM host
// read the persistent storage and launch the agents // read the persistent storage and launch the agents
//launchAgent(); //launchAgent();
// FIXME get rid of this approach of agent listening for boot strap commands from the management server // FIXME get rid of this approach of agent listening for boot strap commands from the management server
// now listen for bootstrap request from the management server and launch agents // now listen for bootstrap request from the management server and launch agents
_connection = new NioServer("VmmAgentShell", _listenerPort, 1, this); _connection = new NioServer("VmmAgentShell", _listenerPort, 1, this);
_connection.start(); _connection.start();
s_logger.info("SCVMM agent is listening on port " +_listenerPort + " for bootstrap command from management server"); s_logger.info("SCVMM agent is listening on port " +_listenerPort + " for bootstrap command from management server");
while(_connection.isRunning()); while(_connection.isRunning());
} catch(final ConfigurationException e) { } catch(final ConfigurationException e) {
s_logger.error("Unable to start agent: " + e.getMessage()); s_logger.error("Unable to start agent: " + e.getMessage());
System.out.println("Unable to start agent: " + e.getMessage()); System.out.println("Unable to start agent: " + e.getMessage());
@ -438,81 +416,81 @@ public class VmmAgentShell implements IAgentShell, HandlerFactory {
System.out.println("Unable to start agent: " + e.getMessage()); System.out.println("Unable to start agent: " + e.getMessage());
System.exit(ExitStatus.Error.value()); System.exit(ExitStatus.Error.value());
} }
} }
@Override @Override
public Task create(com.cloud.utils.nio.Task.Type type, Link link, public Task create(com.cloud.utils.nio.Task.Type type, Link link,
byte[] data) { byte[] data) {
return new AgentBootStrapHandler(type, link, data); return new AgentBootStrapHandler(type, link, data);
} }
public void stop() { public void stop() {
_exit = true; _exit = true;
if(_consoleProxyMain != null) { if(_consoleProxyMain != null) {
_consoleProxyMain.interrupt(); _consoleProxyMain.interrupt();
} }
} }
public static void main(String[] args) { public static void main(String[] args) {
VmmAgentShell shell = new VmmAgentShell(); VmmAgentShell shell = new VmmAgentShell();
Runtime.getRuntime().addShutdownHook(new ShutdownThread(shell)); Runtime.getRuntime().addShutdownHook(new ShutdownThread(shell));
shell.run(args); shell.run(args);
} }
// class to handle the bootstrap command from the management server // class to handle the bootstrap command from the management server
private class AgentBootStrapHandler extends Task { private class AgentBootStrapHandler extends Task {
public AgentBootStrapHandler(Task.Type type, Link link, byte[] data) { public AgentBootStrapHandler(Task.Type type, Link link, byte[] data) {
super(type, link, data); super(type, link, data);
} }
@Override @Override
protected void doTask(Task task) throws Exception { protected void doTask(Task task) throws Exception {
final Type type = task.getType(); final Type type = task.getType();
s_logger.info("recieved task of type "+ type.toString() +" to handle in BootStrapTakHandler"); s_logger.info("recieved task of type "+ type.toString() +" to handle in BootStrapTakHandler");
if (type == Task.Type.DATA) if (type == Task.Type.DATA)
{ {
final byte[] data = task.getData(); final byte[] data = task.getData();
final Request request = Request.parse(data); final Request request = Request.parse(data);
final Command cmd = request.getCommand(); final Command cmd = request.getCommand();
if (cmd instanceof StartupVMMAgentCommand) { if (cmd instanceof StartupVMMAgentCommand) {
StartupVMMAgentCommand vmmCmd = (StartupVMMAgentCommand) cmd; StartupVMMAgentCommand vmmCmd = (StartupVMMAgentCommand) cmd;
_zone = Long.toString(vmmCmd.getDataCenter()); _zone = Long.toString(vmmCmd.getDataCenter());
_cmdLineProperties.put("zone", _zone); _cmdLineProperties.put("zone", _zone);
_pod = Long.toString(vmmCmd.getPod()); _pod = Long.toString(vmmCmd.getPod());
_cmdLineProperties.put("pod", _pod); _cmdLineProperties.put("pod", _pod);
_cluster = vmmCmd.getClusterName(); _cluster = vmmCmd.getClusterName();
_cmdLineProperties.put("cluster", _cluster); _cmdLineProperties.put("cluster", _cluster);
_guid = vmmCmd.getGuid(); _guid = vmmCmd.getGuid();
_cmdLineProperties.put("guid", _guid); _cmdLineProperties.put("guid", _guid);
_host = vmmCmd.getManagementServerIP(); _host = vmmCmd.getManagementServerIP();
_port = NumbersUtil.parseInt(vmmCmd.getport(), 8250); _port = NumbersUtil.parseInt(vmmCmd.getport(), 8250);
s_logger.info("Recieved boot strap command from management server with parameters " + s_logger.info("Recieved boot strap command from management server with parameters " +
" Zone:"+ _zone + " "+ " Zone:"+ _zone + " "+
" Cluster:"+ _cluster + " "+ " Cluster:"+ _cluster + " "+
" pod:"+_pod + " "+ " pod:"+_pod + " "+
" host:"+ _host +" "+ " host:"+ _host +" "+
" port:"+_port); " port:"+_port);
launchAgentFromClassInfo("com.cloud.hypervisor.hyperv.resource.HypervResource"); launchAgentFromClassInfo("com.cloud.hypervisor.hyperv.resource.HypervResource");
// TODO: persist the info in agent.properties for agent restarts // TODO: persist the info in agent.properties for agent restarts
} }
} }
} }
} }
private static class ShutdownThread extends Thread { private static class ShutdownThread extends Thread {
VmmAgentShell _shell; VmmAgentShell _shell;
public ShutdownThread(VmmAgentShell shell) { public ShutdownThread(VmmAgentShell shell) {
this._shell = shell; this._shell = shell;
} }

View File

@ -1,76 +0,0 @@
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
package com.cloud.agent.configuration;
import java.util.List;
import java.util.Map;
import com.cloud.utils.component.Adapter;
import com.cloud.utils.component.ComponentLibraryBase;
import com.cloud.utils.component.ComponentLocator.ComponentInfo;
import com.cloud.utils.component.Manager;
import com.cloud.utils.component.PluggableService;
import com.cloud.utils.db.GenericDao;
public class AgentComponentLibraryBase extends ComponentLibraryBase {
@Override
public Map<String, ComponentInfo<GenericDao<?, ?>>> getDaos() {
return null;
}
@Override
public Map<String, ComponentInfo<Manager>> getManagers() {
if (_managers.size() == 0) {
populateManagers();
}
return _managers;
}
@Override
public Map<String, List<ComponentInfo<Adapter>>> getAdapters() {
if (_adapters.size() == 0) {
populateAdapters();
}
return _adapters;
}
@Override
public Map<Class<?>, Class<?>> getFactories() {
return null;
}
protected void populateManagers() {
// addManager("StackMaidManager", StackMaidManagerImpl.class);
}
protected void populateAdapters() {
}
protected void populateServices() {
}
@Override
public Map<String, ComponentInfo<PluggableService>> getPluggableServices() {
if (_pluggableServices.size() == 0) {
populateServices();
}
return _pluggableServices;
}
}

View File

@ -127,4 +127,34 @@ public class PropertiesStorage implements StorageComponent {
return true; return true;
} }
@Override
public void setName(String name) {
// TODO Auto-generated method stub
}
@Override
public void setConfigParams(Map<String, Object> params) {
// TODO Auto-generated method stub
}
@Override
public Map<String, Object> getConfigParams() {
// TODO Auto-generated method stub
return null;
}
@Override
public int getRunLevel() {
// TODO Auto-generated method stub
return 0;
}
@Override
public void setRunLevel(int level) {
// TODO Auto-generated method stub
}
} }

View File

@ -139,4 +139,34 @@ public class FakeDhcpSnooper implements DhcpSnooper {
return null; return null;
} }
@Override
public void setName(String name) {
// TODO Auto-generated method stub
}
@Override
public void setConfigParams(Map<String, Object> params) {
// TODO Auto-generated method stub
}
@Override
public Map<String, Object> getConfigParams() {
// TODO Auto-generated method stub
return null;
}
@Override
public int getRunLevel() {
// TODO Auto-generated method stub
return 0;
}
@Override
public void setRunLevel(int level) {
// TODO Auto-generated method stub
}
} }

View File

@ -224,4 +224,34 @@ public class DummyResource implements ServerResource {
public void setAgentControl(IAgentControl agentControl) { public void setAgentControl(IAgentControl agentControl) {
_agentControl = agentControl; _agentControl = agentControl;
} }
@Override
public void setName(String name) {
// TODO Auto-generated method stub
}
@Override
public void setConfigParams(Map<String, Object> params) {
// TODO Auto-generated method stub
}
@Override
public Map<String, Object> getConfigParams() {
// TODO Auto-generated method stub
return null;
}
@Override
public int getRunLevel() {
// TODO Auto-generated method stub
return 0;
}
@Override
public void setRunLevel(int level) {
// TODO Auto-generated method stub
}
} }

View File

@ -77,7 +77,7 @@ import com.google.gson.Gson;
* server. * server.
* *
*/ */
public class ConsoleProxyResource extends ServerResourceBase implements public abstract class ConsoleProxyResource extends ServerResourceBase implements
ServerResource { ServerResource {
static final Logger s_logger = Logger.getLogger(ConsoleProxyResource.class); static final Logger s_logger = Logger.getLogger(ConsoleProxyResource.class);

View File

@ -19,12 +19,11 @@ package com.cloud.agent;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import junit.framework.TestCase;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import com.cloud.agent.AgentShell; public class TestAgentShell extends TestCase {
import com.cloud.utils.testcase.Log4jEnabledTestCase;
public class TestAgentShell extends Log4jEnabledTestCase {
protected final static Logger s_logger = Logger.getLogger(TestAgentShell.class); protected final static Logger s_logger = Logger.getLogger(TestAgentShell.class);
public void testWget() { public void testWget() {

View File

@ -0,0 +1,32 @@
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
package com.cloud.agent.api;
/*
* This is used to schedule an explicit host scan in MS peers. Currently used during
* add host operation so that correct MS can take host ownership. On receiving the
* command the scan is scheduled immediately.
*/
public class ScheduleHostScanTaskCommand extends Command {
public ScheduleHostScanTaskCommand() {
}
@Override
public boolean executeInSequence() {
return false; // standalone command and can be executed independent of other commands
}
}

View File

@ -17,8 +17,8 @@
package com.cloud.agent.api.proxy; package com.cloud.agent.api.proxy;
import com.cloud.agent.api.Command; import com.cloud.agent.api.Command;
import com.cloud.agent.api.LogLevel.Log4jLevel;
import com.cloud.agent.api.LogLevel; import com.cloud.agent.api.LogLevel;
import com.cloud.agent.api.LogLevel.Log4jLevel;
public class StartConsoleProxyAgentHttpHandlerCommand extends Command { public class StartConsoleProxyAgentHttpHandlerCommand extends Command {
@LogLevel(Log4jLevel.Off) @LogLevel(Log4jLevel.Off)

View File

@ -28,7 +28,9 @@ public class DhcpEntryCommand extends NetworkElementCommand {
String defaultRouter; String defaultRouter;
String staticRoutes; String staticRoutes;
String defaultDns; String defaultDns;
String vmIp6Address;
String ip6Gateway;
String duid;
protected DhcpEntryCommand() { protected DhcpEntryCommand() {
@ -39,14 +41,15 @@ public class DhcpEntryCommand extends NetworkElementCommand {
return true; return true;
} }
public DhcpEntryCommand(String vmMac, String vmIpAddress, String vmName) { public DhcpEntryCommand(String vmMac, String vmIpAddress, String vmName, String vmIp6Address) {
this.vmMac = vmMac; this.vmMac = vmMac;
this.vmIpAddress = vmIpAddress; this.vmIpAddress = vmIpAddress;
this.vmName = vmName; this.vmName = vmName;
this.vmIp6Address = vmIp6Address;
} }
public DhcpEntryCommand(String vmMac, String vmIpAddress, String vmName, String dns, String gateway) { public DhcpEntryCommand(String vmMac, String vmIpAddress, String vmName, String vmIp6Address, String dns, String gateway, String ip6Gateway) {
this(vmMac, vmIpAddress, vmName); this(vmMac, vmIpAddress, vmName, vmIp6Address);
this.dns = dns; this.dns = dns;
this.gateway = gateway; this.gateway = gateway;
} }
@ -102,4 +105,28 @@ public class DhcpEntryCommand extends NetworkElementCommand {
public void setDefaultDns(String defaultDns) { public void setDefaultDns(String defaultDns) {
this.defaultDns = defaultDns; this.defaultDns = defaultDns;
} }
public String getIp6Gateway() {
return ip6Gateway;
}
public void setIp6Gateway(String ip6Gateway) {
this.ip6Gateway = ip6Gateway;
}
public String getDuid() {
return duid;
}
public void setDuid(String duid) {
this.duid = duid;
}
public String getVmIp6Address() {
return vmIp6Address;
}
public void setVmIp6Address(String ip6Address) {
this.vmIp6Address = ip6Address;
}
} }

View File

@ -16,7 +16,6 @@
// under the License. // under the License.
package com.cloud.agent.api.storage; package com.cloud.agent.api.storage;
import com.cloud.agent.api.Command;
public class CreateEntityDownloadURLCommand extends AbstractDownloadCommand { public class CreateEntityDownloadURLCommand extends AbstractDownloadCommand {

View File

@ -18,11 +18,12 @@ package com.cloud.agent.api.storage;
import java.net.URI; import java.net.URI;
import com.cloud.storage.Volume;
import com.cloud.storage.Storage.ImageFormat;
import com.cloud.template.VirtualMachineTemplate;
import org.apache.cloudstack.api.InternalIdentity; import org.apache.cloudstack.api.InternalIdentity;
import com.cloud.storage.Storage.ImageFormat;
import com.cloud.storage.Volume;
import com.cloud.template.VirtualMachineTemplate;
public class DownloadCommand extends AbstractDownloadCommand implements InternalIdentity { public class DownloadCommand extends AbstractDownloadCommand implements InternalIdentity {
public static class PasswordAuth { public static class PasswordAuth {

View File

@ -19,7 +19,6 @@ package com.cloud.agent.api.storage;
import java.util.Map; import java.util.Map;
import com.cloud.agent.api.Answer; import com.cloud.agent.api.Answer;
import com.cloud.storage.template.TemplateInfo; import com.cloud.storage.template.TemplateInfo;
public class ListTemplateAnswer extends Answer { public class ListTemplateAnswer extends Answer {

View File

@ -16,9 +16,6 @@
// under the License. // under the License.
package com.cloud.agent.api.storage; package com.cloud.agent.api.storage;
import com.cloud.agent.api.LogLevel;
import com.cloud.agent.api.LogLevel.Log4jLevel;
import com.cloud.agent.api.to.SwiftTO;
public class ListVolumeCommand extends StorageCommand { public class ListVolumeCommand extends StorageCommand {

View File

@ -16,8 +16,8 @@
// under the License. // under the License.
package com.cloud.agent.api.storage; package com.cloud.agent.api.storage;
import com.cloud.storage.Storage.ImageFormat;
import com.cloud.agent.api.to.StorageFilerTO; import com.cloud.agent.api.to.StorageFilerTO;
import com.cloud.storage.Storage.ImageFormat;
import com.cloud.storage.StoragePool; import com.cloud.storage.StoragePool;
/** /**

View File

@ -18,7 +18,6 @@ package com.cloud.agent.api.storage;
import com.cloud.agent.api.Command; import com.cloud.agent.api.Command;
import com.cloud.agent.api.to.StorageFilerTO; import com.cloud.agent.api.to.StorageFilerTO;
import com.cloud.storage.StoragePool;
public class ResizeVolumeCommand extends Command { public class ResizeVolumeCommand extends Command {
private String path; private String path;

View File

@ -16,11 +16,12 @@
// under the License. // under the License.
package com.cloud.agent.api.storage; package com.cloud.agent.api.storage;
import org.apache.cloudstack.api.InternalIdentity;
import com.cloud.agent.api.storage.DownloadCommand.PasswordAuth; import com.cloud.agent.api.storage.DownloadCommand.PasswordAuth;
import com.cloud.agent.api.to.TemplateTO; import com.cloud.agent.api.to.TemplateTO;
import com.cloud.storage.Upload.Type; import com.cloud.storage.Upload.Type;
import com.cloud.template.VirtualMachineTemplate; import com.cloud.template.VirtualMachineTemplate;
import org.apache.cloudstack.api.InternalIdentity;
public class UploadCommand extends AbstractUploadCommand implements InternalIdentity { public class UploadCommand extends AbstractUploadCommand implements InternalIdentity {

View File

@ -19,10 +19,11 @@ package com.cloud.agent.api.to;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.apache.cloudstack.api.InternalIdentity;
import com.cloud.network.rules.FirewallRule; import com.cloud.network.rules.FirewallRule;
import com.cloud.network.rules.FirewallRule.State; import com.cloud.network.rules.FirewallRule.State;
import com.cloud.utils.net.NetUtils; import com.cloud.utils.net.NetUtils;
import org.apache.cloudstack.api.InternalIdentity;
/** /**
* FirewallRuleTO transfers a port range for an ip to be opened. * FirewallRuleTO transfers a port range for an ip to be opened.

View File

@ -20,10 +20,11 @@ package com.cloud.agent.api.to;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.apache.cloudstack.api.InternalIdentity;
import com.cloud.network.rules.FirewallRule; import com.cloud.network.rules.FirewallRule;
import com.cloud.network.rules.FirewallRule.TrafficType; import com.cloud.network.rules.FirewallRule.TrafficType;
import com.cloud.utils.net.NetUtils; import com.cloud.utils.net.NetUtils;
import org.apache.cloudstack.api.InternalIdentity;
public class NetworkACLTO implements InternalIdentity { public class NetworkACLTO implements InternalIdentity {

View File

@ -16,10 +16,10 @@
// under the License. // under the License.
package com.cloud.agent.api.to; package com.cloud.agent.api.to;
import com.cloud.utils.S3Utils;
import java.util.Date; import java.util.Date;
import com.cloud.utils.S3Utils;
public final class S3TO implements S3Utils.ClientOptions { public final class S3TO implements S3Utils.ClientOptions {
private Long id; private Long id;

View File

@ -16,9 +16,10 @@
// under the License. // under the License.
package com.cloud.agent.api.to; package com.cloud.agent.api.to;
import org.apache.cloudstack.api.InternalIdentity;
import com.cloud.storage.Storage.ImageFormat; import com.cloud.storage.Storage.ImageFormat;
import com.cloud.template.VirtualMachineTemplate; import com.cloud.template.VirtualMachineTemplate;
import org.apache.cloudstack.api.InternalIdentity;
public class TemplateTO implements InternalIdentity { public class TemplateTO implements InternalIdentity {
private long id; private long id;

View File

@ -16,10 +16,11 @@
// under the License. // under the License.
package com.cloud.agent.api.to; package com.cloud.agent.api.to;
import org.apache.cloudstack.api.InternalIdentity;
import com.cloud.storage.Storage.StoragePoolType; import com.cloud.storage.Storage.StoragePoolType;
import com.cloud.storage.StoragePool; import com.cloud.storage.StoragePool;
import com.cloud.storage.Volume; import com.cloud.storage.Volume;
import org.apache.cloudstack.api.InternalIdentity;
public class VolumeTO implements InternalIdentity { public class VolumeTO implements InternalIdentity {
protected VolumeTO() { protected VolumeTO() {

View File

@ -16,11 +16,11 @@
// under the License. // under the License.
package com.cloud.alert; package com.cloud.alert;
import java.util.Date;
import org.apache.cloudstack.api.Identity; import org.apache.cloudstack.api.Identity;
import org.apache.cloudstack.api.InternalIdentity; import org.apache.cloudstack.api.InternalIdentity;
import java.util.Date;
public interface Alert extends Identity, InternalIdentity { public interface Alert extends Identity, InternalIdentity {
short getType(); short getType();
String getSubject(); String getSubject();

View File

@ -16,14 +16,17 @@
// under the License. // under the License.
package com.cloud.api.commands; package com.cloud.api.commands;
import org.apache.cloudstack.api.*; import org.apache.cloudstack.api.ApiConstants;
import org.apache.cloudstack.api.ApiErrorCode;
import org.apache.cloudstack.api.BaseAsyncCreateCmd;
import org.apache.cloudstack.api.Parameter;
import org.apache.cloudstack.api.ServerApiException;
import org.apache.cloudstack.api.response.DomainResponse; import org.apache.cloudstack.api.response.DomainResponse;
import org.apache.cloudstack.api.response.NetworkResponse;
import org.apache.cloudstack.api.response.PhysicalNetworkResponse; import org.apache.cloudstack.api.response.PhysicalNetworkResponse;
import org.apache.cloudstack.api.response.ProjectResponse; import org.apache.cloudstack.api.response.ProjectResponse;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.response.NetworkResponse;
import com.cloud.event.EventTypes; import com.cloud.event.EventTypes;
import com.cloud.exception.ConcurrentOperationException; import com.cloud.exception.ConcurrentOperationException;
import com.cloud.exception.InsufficientCapacityException; import com.cloud.exception.InsufficientCapacityException;

View File

@ -16,11 +16,14 @@
// under the License. // under the License.
package com.cloud.api.commands; package com.cloud.api.commands;
import org.apache.cloudstack.api.*; import org.apache.cloudstack.api.ApiConstants;
import org.apache.cloudstack.api.ApiErrorCode;
import org.apache.cloudstack.api.BaseAsyncCmd;
import org.apache.cloudstack.api.Parameter;
import org.apache.cloudstack.api.ServerApiException;
import org.apache.cloudstack.api.response.SuccessResponse;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.response.SuccessResponse;
import com.cloud.event.EventTypes; import com.cloud.event.EventTypes;
import com.cloud.user.Account; import com.cloud.user.Account;
import com.cloud.user.UserContext; import com.cloud.user.UserContext;

View File

@ -19,12 +19,12 @@ package com.cloud.api.commands;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.ApiConstants;
import org.apache.cloudstack.api.BaseListCmd; import org.apache.cloudstack.api.BaseListCmd;
import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.Parameter;
import org.apache.cloudstack.api.response.ListResponse; import org.apache.cloudstack.api.response.ListResponse;
import org.apache.cloudstack.api.response.SnapshotScheduleResponse; import org.apache.cloudstack.api.response.SnapshotScheduleResponse;
import com.cloud.storage.snapshot.SnapshotSchedule; import com.cloud.storage.snapshot.SnapshotSchedule;
//@APICommand(description="Lists recurring snapshot schedule", responseObject=SnapshotScheduleResponse.class) //@APICommand(description="Lists recurring snapshot schedule", responseObject=SnapshotScheduleResponse.class)

View File

@ -20,24 +20,27 @@ import java.util.List;
import javax.naming.NamingException; import javax.naming.NamingException;
import org.apache.cloudstack.api.command.admin.config.UpdateCfgCmd;
import org.apache.cloudstack.api.command.admin.ldap.LDAPConfigCmd;
import org.apache.cloudstack.api.command.admin.ldap.LDAPRemoveCmd; import org.apache.cloudstack.api.command.admin.ldap.LDAPRemoveCmd;
import org.apache.cloudstack.api.command.admin.network.CreateNetworkOfferingCmd; import org.apache.cloudstack.api.command.admin.network.CreateNetworkOfferingCmd;
import org.apache.cloudstack.api.command.admin.network.DeleteNetworkOfferingCmd;
import org.apache.cloudstack.api.command.admin.network.UpdateNetworkOfferingCmd;
import org.apache.cloudstack.api.command.admin.offering.CreateDiskOfferingCmd;
import org.apache.cloudstack.api.command.admin.offering.CreateServiceOfferingCmd; import org.apache.cloudstack.api.command.admin.offering.CreateServiceOfferingCmd;
import org.apache.cloudstack.api.command.admin.vlan.CreateVlanIpRangeCmd; import org.apache.cloudstack.api.command.admin.offering.DeleteDiskOfferingCmd;
import org.apache.cloudstack.api.command.admin.offering.*; import org.apache.cloudstack.api.command.admin.offering.DeleteServiceOfferingCmd;
import org.apache.cloudstack.api.command.admin.offering.UpdateDiskOfferingCmd;
import org.apache.cloudstack.api.command.admin.offering.UpdateServiceOfferingCmd;
import org.apache.cloudstack.api.command.admin.pod.DeletePodCmd; import org.apache.cloudstack.api.command.admin.pod.DeletePodCmd;
import org.apache.cloudstack.api.command.admin.pod.UpdatePodCmd;
import org.apache.cloudstack.api.command.admin.vlan.CreateVlanIpRangeCmd;
import org.apache.cloudstack.api.command.admin.vlan.DeleteVlanIpRangeCmd; import org.apache.cloudstack.api.command.admin.vlan.DeleteVlanIpRangeCmd;
import org.apache.cloudstack.api.command.admin.zone.CreateZoneCmd; import org.apache.cloudstack.api.command.admin.zone.CreateZoneCmd;
import org.apache.cloudstack.api.command.admin.offering.DeleteDiskOfferingCmd;
import org.apache.cloudstack.api.command.admin.network.DeleteNetworkOfferingCmd;
import org.apache.cloudstack.api.command.admin.zone.DeleteZoneCmd; import org.apache.cloudstack.api.command.admin.zone.DeleteZoneCmd;
import org.apache.cloudstack.api.command.admin.ldap.LDAPConfigCmd;
import org.apache.cloudstack.api.command.admin.config.UpdateCfgCmd;
import org.apache.cloudstack.api.command.admin.network.UpdateNetworkOfferingCmd;
import org.apache.cloudstack.api.command.admin.pod.UpdatePodCmd;
import org.apache.cloudstack.api.command.user.network.ListNetworkOfferingsCmd;
import org.apache.cloudstack.api.command.admin.offering.UpdateDiskOfferingCmd;
import org.apache.cloudstack.api.command.admin.zone.UpdateZoneCmd; import org.apache.cloudstack.api.command.admin.zone.UpdateZoneCmd;
import org.apache.cloudstack.api.command.user.network.ListNetworkOfferingsCmd;
import com.cloud.dc.DataCenter; import com.cloud.dc.DataCenter;
import com.cloud.dc.Pod; import com.cloud.dc.Pod;
import com.cloud.dc.Vlan; import com.cloud.dc.Vlan;

View File

@ -18,11 +18,12 @@ package com.cloud.dc;
import java.util.Map; import java.util.Map;
import com.cloud.org.Grouping;
import org.apache.cloudstack.acl.InfrastructureEntity; import org.apache.cloudstack.acl.InfrastructureEntity;
import org.apache.cloudstack.api.Identity; import org.apache.cloudstack.api.Identity;
import org.apache.cloudstack.api.InternalIdentity; import org.apache.cloudstack.api.InternalIdentity;
import com.cloud.org.Grouping;
/** /**
* *
*/ */

View File

@ -16,11 +16,12 @@
// under the License. // under the License.
package com.cloud.dc; package com.cloud.dc;
import com.cloud.org.Grouping;
import org.apache.cloudstack.acl.InfrastructureEntity; import org.apache.cloudstack.acl.InfrastructureEntity;
import org.apache.cloudstack.api.Identity; import org.apache.cloudstack.api.Identity;
import org.apache.cloudstack.api.InternalIdentity; import org.apache.cloudstack.api.InternalIdentity;
import com.cloud.org.Grouping;
/** /**
* Represents one pod in the cloud stack. * Represents one pod in the cloud stack.
* *

View File

@ -44,4 +44,9 @@ public interface Vlan extends InfrastructureEntity, InternalIdentity, Identity {
public Long getPhysicalNetworkId(); public Long getPhysicalNetworkId();
public String getIp6Gateway();
public String getIp6Cidr();
public String getIp6Range();
} }

View File

@ -18,10 +18,11 @@ package com.cloud.domain;
import java.util.Date; import java.util.Date;
import com.cloud.user.OwnedBy;
import org.apache.cloudstack.api.Identity; import org.apache.cloudstack.api.Identity;
import org.apache.cloudstack.api.InternalIdentity; import org.apache.cloudstack.api.InternalIdentity;
import com.cloud.user.OwnedBy;
/** /**
* Domain defines the Domain object. * Domain defines the Domain object.
*/ */
@ -58,4 +59,8 @@ public interface Domain extends OwnedBy, Identity, InternalIdentity {
void setState(State state); void setState(State state);
String getNetworkDomain(); String getNetworkDomain();
public String getUuid();
int getRegionId();
} }

View File

@ -0,0 +1,55 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package com.cloud.event;
import java.util.ArrayList;
import java.util.List;
public class EventCategory {
private static List<EventCategory> eventCategories = new ArrayList<EventCategory>();
private String eventCategoryName;
public EventCategory(String categoryName) {
this.eventCategoryName = categoryName;
eventCategories.add(this);
}
public String getName() {
return eventCategoryName;
}
public static List<EventCategory> listAllEventCategories() {
return eventCategories;
}
public static EventCategory getEventCategory(String categoryName) {
for (EventCategory category : eventCategories) {
if (category.getName().equalsIgnoreCase(categoryName)) {
return category;
}
}
return null;
}
public static final EventCategory ACTION_EVENT = new EventCategory("ActionEvent");
public static final EventCategory ALERT_EVENT = new EventCategory("AlertEvent");
public static final EventCategory USAGE_EVENT = new EventCategory("UsageEvent");
public static final EventCategory RESOURCE_STATE_CHANGE_EVENT = new EventCategory("ResourceStateEvent");
}

View File

@ -16,7 +16,41 @@
// under the License. // under the License.
package com.cloud.event; package com.cloud.event;
import com.cloud.configuration.Configuration;
import com.cloud.dc.DataCenter;
import com.cloud.dc.Pod;
import com.cloud.dc.StorageNetworkIpRange;
import com.cloud.dc.Vlan;
import com.cloud.domain.Domain;
import com.cloud.host.Host;
import com.cloud.network.*;
import com.cloud.network.as.*;
import com.cloud.network.router.VirtualRouter;
import com.cloud.network.rules.LoadBalancer;
import com.cloud.network.rules.StaticNat;
import com.cloud.network.security.SecurityGroup;
import com.cloud.network.vpc.PrivateGateway;
import com.cloud.network.vpc.StaticRoute;
import com.cloud.network.vpc.Vpc;
import com.cloud.offering.DiskOffering;
import com.cloud.offering.NetworkOffering;
import com.cloud.offering.ServiceOffering;
import com.cloud.projects.Project;
import com.cloud.storage.Snapshot;
import com.cloud.storage.Volume;
import com.cloud.template.VirtualMachineTemplate;
import com.cloud.user.Account;
import com.cloud.user.User;
import com.cloud.vm.VirtualMachine;
import java.util.HashMap;
import java.util.Map;
public class EventTypes { public class EventTypes {
//map of Event and corresponding entity for which Event is applicable
private static Map<String, String> entityEventDetails = null;
// VM Events // VM Events
public static final String EVENT_VM_CREATE = "VM.CREATE"; public static final String EVENT_VM_CREATE = "VM.CREATE";
public static final String EVENT_VM_DESTROY = "VM.DESTROY"; public static final String EVENT_VM_DESTROY = "VM.DESTROY";
@ -320,9 +354,322 @@ public class EventTypes {
public static final String EVENT_AUTOSCALEVMGROUP_ENABLE = "AUTOSCALEVMGROUP.ENABLE"; public static final String EVENT_AUTOSCALEVMGROUP_ENABLE = "AUTOSCALEVMGROUP.ENABLE";
public static final String EVENT_AUTOSCALEVMGROUP_DISABLE = "AUTOSCALEVMGROUP.DISABLE"; public static final String EVENT_AUTOSCALEVMGROUP_DISABLE = "AUTOSCALEVMGROUP.DISABLE";
public static final String EVENT_BAREMETAL_DHCP_SERVER_ADD = "PHYSICAL.DHCP.ADD"; public static final String EVENT_BAREMETAL_DHCP_SERVER_ADD = "PHYSICAL.DHCP.ADD";
public static final String EVENT_BAREMETAL_DHCP_SERVER_DELETE = "PHYSICAL.DHCP.DELETE"; public static final String EVENT_BAREMETAL_DHCP_SERVER_DELETE = "PHYSICAL.DHCP.DELETE";
public static final String EVENT_BAREMETAL_PXE_SERVER_ADD = "PHYSICAL.PXE.ADD"; public static final String EVENT_BAREMETAL_PXE_SERVER_ADD = "PHYSICAL.PXE.ADD";
public static final String EVENT_BAREMETAL_PXE_SERVER_DELETE = "PHYSICAL.PXE.DELETE"; public static final String EVENT_BAREMETAL_PXE_SERVER_DELETE = "PHYSICAL.PXE.DELETE";
static {
// TODO: need a way to force author adding event types to declare the entity details as well, with out braking
// current ActionEvent annotation semantics
entityEventDetails = new HashMap<String, String>();
entityEventDetails.put(EVENT_VM_CREATE, VirtualMachine.class.getName());
entityEventDetails.put(EVENT_VM_DESTROY, VirtualMachine.class.getName());
entityEventDetails.put(EVENT_VM_START, VirtualMachine.class.getName());
entityEventDetails.put(EVENT_VM_STOP, VirtualMachine.class.getName());
entityEventDetails.put(EVENT_VM_REBOOT, VirtualMachine.class.getName());
entityEventDetails.put(EVENT_VM_UPDATE, VirtualMachine.class.getName());
entityEventDetails.put(EVENT_VM_UPGRADE, VirtualMachine.class.getName());
entityEventDetails.put(EVENT_VM_RESETPASSWORD, VirtualMachine.class.getName());
entityEventDetails.put(EVENT_VM_MIGRATE, VirtualMachine.class.getName());
entityEventDetails.put(EVENT_VM_MOVE, VirtualMachine.class.getName());
entityEventDetails.put(EVENT_VM_RESTORE, VirtualMachine.class.getName());
entityEventDetails.put(EVENT_ROUTER_CREATE, VirtualRouter.class.getName());
entityEventDetails.put(EVENT_ROUTER_DESTROY, VirtualRouter.class.getName());
entityEventDetails.put(EVENT_ROUTER_START, VirtualRouter.class.getName());
entityEventDetails.put(EVENT_ROUTER_STOP, VirtualRouter.class.getName());
entityEventDetails.put(EVENT_ROUTER_REBOOT, VirtualRouter.class.getName());
entityEventDetails.put(EVENT_ROUTER_HA, VirtualRouter.class.getName());
entityEventDetails.put(EVENT_ROUTER_UPGRADE, VirtualRouter.class.getName());
entityEventDetails.put(EVENT_PROXY_CREATE, "ConsoleProxy");
entityEventDetails.put(EVENT_PROXY_DESTROY, "ConsoleProxy");
entityEventDetails.put(EVENT_PROXY_START, "ConsoleProxy");
entityEventDetails.put(EVENT_PROXY_STOP, "ConsoleProxy");
entityEventDetails.put(EVENT_PROXY_REBOOT, "ConsoleProxy");
entityEventDetails.put(EVENT_ROUTER_HA, "ConsoleProxy");
entityEventDetails.put(EVENT_PROXY_HA, "ConsoleProxy");
entityEventDetails.put(EVENT_VNC_CONNECT, "VNC");
entityEventDetails.put(EVENT_VNC_DISCONNECT, "VNC");
// Network Events
entityEventDetails.put(EVENT_NETWORK_CREATE, Network.class.getName());
entityEventDetails.put(EVENT_NETWORK_DELETE, Network.class.getName());
entityEventDetails.put(EVENT_NETWORK_UPDATE, Network.class.getName());
entityEventDetails.put(EVENT_NETWORK_RESTART, Network.class.getName());
entityEventDetails.put(EVENT_NET_IP_ASSIGN, PublicIpAddress.class.getName());
entityEventDetails.put(EVENT_NET_IP_RELEASE, PublicIpAddress.class.getName());
entityEventDetails.put(EVENT_NET_RULE_ADD, Network.class.getName());
entityEventDetails.put(EVENT_NET_RULE_DELETE, Network.class.getName());
entityEventDetails.put(EVENT_NET_RULE_MODIFY, Network.class.getName());
entityEventDetails.put(EVENT_FIREWALL_OPEN, Network.class.getName());
entityEventDetails.put(EVENT_FIREWALL_CLOSE, Network.class.getName());
// Load Balancers
entityEventDetails.put(EVENT_ASSIGN_TO_LOAD_BALANCER_RULE, LoadBalancer.class.getName());
entityEventDetails.put(EVENT_REMOVE_FROM_LOAD_BALANCER_RULE, LoadBalancer.class.getName());
entityEventDetails.put(EVENT_LOAD_BALANCER_CREATE, LoadBalancer.class.getName());
entityEventDetails.put(EVENT_LOAD_BALANCER_DELETE, LoadBalancer.class.getName());
entityEventDetails.put(EVENT_LB_STICKINESSPOLICY_CREATE, LoadBalancer.class.getName());
entityEventDetails.put(EVENT_LB_STICKINESSPOLICY_DELETE, LoadBalancer.class.getName());
entityEventDetails.put(EVENT_LOAD_BALANCER_UPDATE, LoadBalancer.class.getName());
// Account events
entityEventDetails.put(EVENT_ACCOUNT_DISABLE, Account.class.getName());
entityEventDetails.put(EVENT_ACCOUNT_CREATE, Account.class.getName());
entityEventDetails.put(EVENT_ACCOUNT_DELETE, Account.class.getName());
entityEventDetails.put(EVENT_ACCOUNT_MARK_DEFAULT_ZONE, Account.class.getName());
// UserVO Events
entityEventDetails.put(EVENT_USER_LOGIN, User.class.getName());
entityEventDetails.put(EVENT_USER_LOGOUT, User.class.getName());
entityEventDetails.put(EVENT_USER_CREATE, User.class.getName());
entityEventDetails.put(EVENT_USER_DELETE, User.class.getName());
entityEventDetails.put(EVENT_USER_DISABLE, User.class.getName());
entityEventDetails.put(EVENT_USER_UPDATE, User.class.getName());
entityEventDetails.put(EVENT_USER_ENABLE, User.class.getName());
entityEventDetails.put(EVENT_USER_LOCK, User.class.getName());
// Template Events
entityEventDetails.put(EVENT_TEMPLATE_CREATE, VirtualMachineTemplate.class.getName());
entityEventDetails.put(EVENT_TEMPLATE_DELETE, VirtualMachineTemplate.class.getName());
entityEventDetails.put(EVENT_TEMPLATE_UPDATE, VirtualMachineTemplate.class.getName());
entityEventDetails.put(EVENT_TEMPLATE_DOWNLOAD_START, VirtualMachineTemplate.class.getName());
entityEventDetails.put(EVENT_TEMPLATE_DOWNLOAD_SUCCESS, VirtualMachineTemplate.class.getName());
entityEventDetails.put(EVENT_TEMPLATE_DOWNLOAD_FAILED, VirtualMachineTemplate.class.getName());
entityEventDetails.put(EVENT_TEMPLATE_COPY, VirtualMachineTemplate.class.getName());
entityEventDetails.put(EVENT_TEMPLATE_EXTRACT, VirtualMachineTemplate.class.getName());
entityEventDetails.put(EVENT_TEMPLATE_UPLOAD, VirtualMachineTemplate.class.getName());
entityEventDetails.put(EVENT_TEMPLATE_CLEANUP, VirtualMachineTemplate.class.getName());
// Volume Events
entityEventDetails.put(EVENT_VOLUME_CREATE, Volume.class.getName());
entityEventDetails.put(EVENT_VOLUME_DELETE, Volume.class.getName());
entityEventDetails.put(EVENT_VOLUME_ATTACH, Volume.class.getName());
entityEventDetails.put(EVENT_VOLUME_DETACH, Volume.class.getName());
entityEventDetails.put(EVENT_VOLUME_EXTRACT, Volume.class.getName());
entityEventDetails.put(EVENT_VOLUME_UPLOAD, Volume.class.getName());
entityEventDetails.put(EVENT_VOLUME_MIGRATE, Volume.class.getName());
entityEventDetails.put(EVENT_VOLUME_RESIZE, Volume.class.getName());
// Domains
entityEventDetails.put(EVENT_DOMAIN_CREATE, Domain.class.getName());
entityEventDetails.put(EVENT_DOMAIN_DELETE, Domain.class.getName());
entityEventDetails.put(EVENT_DOMAIN_UPDATE, Domain.class.getName());
// Snapshots
entityEventDetails.put(EVENT_SNAPSHOT_CREATE, Snapshot.class.getName());
entityEventDetails.put(EVENT_SNAPSHOT_DELETE, Snapshot.class.getName());
entityEventDetails.put(EVENT_SNAPSHOT_POLICY_CREATE, Snapshot.class.getName());
entityEventDetails.put(EVENT_SNAPSHOT_POLICY_UPDATE, Snapshot.class.getName());
entityEventDetails.put(EVENT_SNAPSHOT_POLICY_DELETE, Snapshot.class.getName());
// ISO
entityEventDetails.put(EVENT_ISO_CREATE, "Iso");
entityEventDetails.put(EVENT_ISO_DELETE, "Iso");
entityEventDetails.put(EVENT_ISO_COPY, "Iso");
entityEventDetails.put(EVENT_ISO_ATTACH, "Iso");
entityEventDetails.put(EVENT_ISO_DETACH, "Iso");
entityEventDetails.put(EVENT_ISO_EXTRACT, "Iso");
entityEventDetails.put(EVENT_ISO_UPLOAD, "Iso");
// SSVM
entityEventDetails.put(EVENT_SSVM_CREATE, "SecondaryStorageVm");
entityEventDetails.put(EVENT_SSVM_DESTROY, "SecondaryStorageVm");
entityEventDetails.put(EVENT_SSVM_START, "SecondaryStorageVm");
entityEventDetails.put(EVENT_SSVM_STOP, "SecondaryStorageVm");
entityEventDetails.put(EVENT_SSVM_REBOOT, "SecondaryStorageVm");
entityEventDetails.put(EVENT_SSVM_HA, "SecondaryStorageVm");
// Service Offerings
entityEventDetails.put(EVENT_SERVICE_OFFERING_CREATE, ServiceOffering.class.getName());
entityEventDetails.put(EVENT_SERVICE_OFFERING_EDIT, ServiceOffering.class.getName());
entityEventDetails.put(EVENT_SERVICE_OFFERING_DELETE, ServiceOffering.class.getName());
// Disk Offerings
entityEventDetails.put(EVENT_DISK_OFFERING_CREATE, DiskOffering.class.getName());
entityEventDetails.put(EVENT_DISK_OFFERING_EDIT, DiskOffering.class.getName());
entityEventDetails.put(EVENT_DISK_OFFERING_DELETE, DiskOffering.class.getName());
// Network offerings
entityEventDetails.put(EVENT_NETWORK_OFFERING_CREATE, NetworkOffering.class.getName());
entityEventDetails.put(EVENT_NETWORK_OFFERING_ASSIGN, NetworkOffering.class.getName());
entityEventDetails.put(EVENT_NETWORK_OFFERING_EDIT, NetworkOffering.class.getName());
entityEventDetails.put(EVENT_NETWORK_OFFERING_REMOVE, NetworkOffering.class.getName());
entityEventDetails.put(EVENT_NETWORK_OFFERING_DELETE, NetworkOffering.class.getName());
// Pods
entityEventDetails.put(EVENT_POD_CREATE, Pod.class.getName());
entityEventDetails.put(EVENT_POD_EDIT, Pod.class.getName());
entityEventDetails.put(EVENT_POD_DELETE, Pod.class.getName());
// Zones
entityEventDetails.put(EVENT_ZONE_CREATE, DataCenter.class.getName());
entityEventDetails.put(EVENT_ZONE_EDIT, DataCenter.class.getName());
entityEventDetails.put(EVENT_ZONE_DELETE, DataCenter.class.getName());
// VLANs/IP ranges
entityEventDetails.put(EVENT_VLAN_IP_RANGE_CREATE, Vlan.class.getName());
entityEventDetails.put(EVENT_VLAN_IP_RANGE_DELETE,Vlan.class.getName());
entityEventDetails.put(EVENT_STORAGE_IP_RANGE_CREATE, StorageNetworkIpRange.class.getName());
entityEventDetails.put(EVENT_STORAGE_IP_RANGE_DELETE, StorageNetworkIpRange.class.getName());
entityEventDetails.put(EVENT_STORAGE_IP_RANGE_UPDATE, StorageNetworkIpRange.class.getName());
// Configuration Table
entityEventDetails.put(EVENT_CONFIGURATION_VALUE_EDIT, Configuration.class.getName());
// Security Groups
entityEventDetails.put(EVENT_SECURITY_GROUP_AUTHORIZE_INGRESS, SecurityGroup.class.getName());
entityEventDetails.put(EVENT_SECURITY_GROUP_REVOKE_INGRESS, SecurityGroup.class.getName());
entityEventDetails.put(EVENT_SECURITY_GROUP_AUTHORIZE_EGRESS, SecurityGroup.class.getName());
entityEventDetails.put(EVENT_SECURITY_GROUP_REVOKE_EGRESS, SecurityGroup.class.getName());
entityEventDetails.put(EVENT_SECURITY_GROUP_CREATE, SecurityGroup.class.getName());
entityEventDetails.put(EVENT_SECURITY_GROUP_DELETE, SecurityGroup.class.getName());
entityEventDetails.put(EVENT_SECURITY_GROUP_ASSIGN, SecurityGroup.class.getName());
entityEventDetails.put(EVENT_SECURITY_GROUP_REMOVE, SecurityGroup.class.getName());
// Host
entityEventDetails.put(EVENT_HOST_RECONNECT, Host.class.getName());
// Maintenance
entityEventDetails.put(EVENT_MAINTENANCE_CANCEL, Host.class.getName());
entityEventDetails.put(EVENT_MAINTENANCE_CANCEL_PRIMARY_STORAGE, Host.class.getName());
entityEventDetails.put(EVENT_MAINTENANCE_PREPARE, Host.class.getName());
entityEventDetails.put(EVENT_MAINTENANCE_PREPARE_PRIMARY_STORAGE, Host.class.getName());
// VPN
entityEventDetails.put(EVENT_REMOTE_ACCESS_VPN_CREATE, RemoteAccessVpn.class.getName());
entityEventDetails.put(EVENT_REMOTE_ACCESS_VPN_DESTROY, RemoteAccessVpn.class.getName());
entityEventDetails.put(EVENT_VPN_USER_ADD, RemoteAccessVpn.class.getName());
entityEventDetails.put(EVENT_VPN_USER_REMOVE, RemoteAccessVpn.class.getName());
entityEventDetails.put(EVENT_S2S_VPN_GATEWAY_CREATE, RemoteAccessVpn.class.getName());
entityEventDetails.put(EVENT_S2S_VPN_GATEWAY_DELETE, RemoteAccessVpn.class.getName());
entityEventDetails.put(EVENT_S2S_VPN_CUSTOMER_GATEWAY_CREATE, RemoteAccessVpn.class.getName());
entityEventDetails.put(EVENT_S2S_VPN_CUSTOMER_GATEWAY_DELETE, RemoteAccessVpn.class.getName());
entityEventDetails.put(EVENT_S2S_VPN_CUSTOMER_GATEWAY_UPDATE, RemoteAccessVpn.class.getName());
entityEventDetails.put(EVENT_S2S_VPN_CONNECTION_CREATE, RemoteAccessVpn.class.getName());
entityEventDetails.put(EVENT_S2S_VPN_CONNECTION_DELETE, RemoteAccessVpn.class.getName());
entityEventDetails.put(EVENT_S2S_VPN_CONNECTION_RESET, RemoteAccessVpn.class.getName());
// Custom certificates
entityEventDetails.put(EVENT_UPLOAD_CUSTOM_CERTIFICATE, "Certificate");
// OneToOnenat
entityEventDetails.put(EVENT_ENABLE_STATIC_NAT, StaticNat.class.getName());
entityEventDetails.put(EVENT_DISABLE_STATIC_NAT, StaticNat.class.getName());
entityEventDetails.put(EVENT_ZONE_VLAN_ASSIGN,Vlan.class.getName());
entityEventDetails.put(EVENT_ZONE_VLAN_RELEASE,Vlan.class.getName());
// Projects
entityEventDetails.put(EVENT_PROJECT_CREATE, Project.class.getName());
entityEventDetails.put(EVENT_PROJECT_UPDATE, Project.class.getName());
entityEventDetails.put(EVENT_PROJECT_DELETE, Project.class.getName());
entityEventDetails.put(EVENT_PROJECT_ACTIVATE, Project.class.getName());
entityEventDetails.put(EVENT_PROJECT_SUSPEND, Project.class.getName());
entityEventDetails.put(EVENT_PROJECT_ACCOUNT_ADD, Project.class.getName());
entityEventDetails.put(EVENT_PROJECT_INVITATION_UPDATE, Project.class.getName());
entityEventDetails.put(EVENT_PROJECT_INVITATION_REMOVE, Project.class.getName());
entityEventDetails.put(EVENT_PROJECT_ACCOUNT_REMOVE, Project.class.getName());
// Network as a Service
entityEventDetails.put(EVENT_NETWORK_ELEMENT_CONFIGURE,Network.class.getName());
// Physical Network Events
entityEventDetails.put(EVENT_PHYSICAL_NETWORK_CREATE, PhysicalNetwork.class.getName());
entityEventDetails.put(EVENT_PHYSICAL_NETWORK_DELETE, PhysicalNetwork.class.getName());
entityEventDetails.put(EVENT_PHYSICAL_NETWORK_UPDATE, PhysicalNetwork.class.getName());
// Physical Network Service Provider Events
entityEventDetails.put(EVENT_SERVICE_PROVIDER_CREATE, PhysicalNetworkServiceProvider.class.getName());
entityEventDetails.put(EVENT_SERVICE_PROVIDER_DELETE, PhysicalNetworkServiceProvider.class.getName());
entityEventDetails.put(EVENT_SERVICE_PROVIDER_UPDATE, PhysicalNetworkServiceProvider.class.getName());
// Physical Network TrafficType Events
entityEventDetails.put(EVENT_TRAFFIC_TYPE_CREATE, PhysicalNetworkTrafficType.class.getName());
entityEventDetails.put(EVENT_TRAFFIC_TYPE_DELETE, PhysicalNetworkTrafficType.class.getName());
entityEventDetails.put(EVENT_TRAFFIC_TYPE_UPDATE, PhysicalNetworkTrafficType.class.getName());
// external network device events
entityEventDetails.put(EVENT_EXTERNAL_LB_DEVICE_ADD, PhysicalNetwork.class.getName());
entityEventDetails.put(EVENT_EXTERNAL_LB_DEVICE_DELETE, PhysicalNetwork.class.getName());
entityEventDetails.put(EVENT_EXTERNAL_LB_DEVICE_CONFIGURE, PhysicalNetwork.class.getName());
// external switch management device events (E.g.: Cisco Nexus 1000v Virtual Supervisor Module.
entityEventDetails.put(EVENT_EXTERNAL_SWITCH_MGMT_DEVICE_ADD, "Nexus1000v");
entityEventDetails.put(EVENT_EXTERNAL_SWITCH_MGMT_DEVICE_DELETE, "Nexus1000v");
entityEventDetails.put(EVENT_EXTERNAL_SWITCH_MGMT_DEVICE_CONFIGURE, "Nexus1000v");
entityEventDetails.put(EVENT_EXTERNAL_SWITCH_MGMT_DEVICE_ENABLE, "Nexus1000v");
entityEventDetails.put(EVENT_EXTERNAL_SWITCH_MGMT_DEVICE_DISABLE, "Nexus1000v");
entityEventDetails.put(EVENT_EXTERNAL_FIREWALL_DEVICE_ADD, PhysicalNetwork.class.getName());
entityEventDetails.put(EVENT_EXTERNAL_FIREWALL_DEVICE_DELETE, PhysicalNetwork.class.getName());
entityEventDetails.put(EVENT_EXTERNAL_FIREWALL_DEVICE_CONFIGURE, PhysicalNetwork.class.getName());
// VPC
entityEventDetails.put(EVENT_VPC_CREATE, Vpc.class.getName());
entityEventDetails.put(EVENT_VPC_UPDATE, Vpc.class.getName());
entityEventDetails.put(EVENT_VPC_DELETE, Vpc.class.getName());
entityEventDetails.put(EVENT_VPC_RESTART, Vpc.class.getName());
// VPC offerings
entityEventDetails.put(EVENT_VPC_OFFERING_CREATE, Vpc.class.getName());
entityEventDetails.put(EVENT_VPC_OFFERING_UPDATE, Vpc.class.getName());
entityEventDetails.put(EVENT_VPC_OFFERING_DELETE, Vpc.class.getName());
// Private gateway
entityEventDetails.put(EVENT_PRIVATE_GATEWAY_CREATE, PrivateGateway.class.getName());
entityEventDetails.put(EVENT_PRIVATE_GATEWAY_DELETE, PrivateGateway.class.getName());
// Static routes
entityEventDetails.put(EVENT_STATIC_ROUTE_CREATE, StaticRoute.class.getName());
entityEventDetails.put(EVENT_STATIC_ROUTE_DELETE, StaticRoute.class.getName());
// tag related events
entityEventDetails.put(EVENT_TAGS_CREATE, "Tag");
entityEventDetails.put(EVENT_TAGS_DELETE, "tag");
// external network device events
entityEventDetails.put(EVENT_EXTERNAL_NVP_CONTROLLER_ADD, "NvpController");
entityEventDetails.put(EVENT_EXTERNAL_NVP_CONTROLLER_DELETE, "NvpController");
entityEventDetails.put(EVENT_EXTERNAL_NVP_CONTROLLER_CONFIGURE, "NvpController");
// AutoScale
entityEventDetails.put(EVENT_COUNTER_CREATE, AutoScaleCounter.class.getName());
entityEventDetails.put(EVENT_COUNTER_DELETE, AutoScaleCounter.class.getName());
entityEventDetails.put(EVENT_CONDITION_CREATE, Condition.class.getName());
entityEventDetails.put(EVENT_CONDITION_DELETE, Condition.class.getName());
entityEventDetails.put(EVENT_AUTOSCALEPOLICY_CREATE, AutoScalePolicy.class.getName());
entityEventDetails.put(EVENT_AUTOSCALEPOLICY_UPDATE, AutoScalePolicy.class.getName());
entityEventDetails.put(EVENT_AUTOSCALEPOLICY_DELETE, AutoScalePolicy.class.getName());
entityEventDetails.put(EVENT_AUTOSCALEVMPROFILE_CREATE, AutoScaleVmProfile.class.getName());
entityEventDetails.put(EVENT_AUTOSCALEVMPROFILE_DELETE, AutoScaleVmProfile.class.getName());
entityEventDetails.put(EVENT_AUTOSCALEVMPROFILE_UPDATE, AutoScaleVmProfile.class.getName());
entityEventDetails.put(EVENT_AUTOSCALEVMGROUP_CREATE, AutoScaleVmGroup.class.getName());
entityEventDetails.put(EVENT_AUTOSCALEVMGROUP_DELETE, AutoScaleVmGroup.class.getName());
entityEventDetails.put(EVENT_AUTOSCALEVMGROUP_UPDATE, AutoScaleVmGroup.class.getName());
entityEventDetails.put(EVENT_AUTOSCALEVMGROUP_ENABLE, AutoScaleVmGroup.class.getName());
entityEventDetails.put(EVENT_AUTOSCALEVMGROUP_DISABLE, AutoScaleVmGroup.class.getName());
}
public static String getEntityForEvent (String eventName) {
String entityClassName = entityEventDetails.get(eventName);
if (entityClassName == null || entityClassName.isEmpty()) {
return null;
}
int index = entityClassName.lastIndexOf(".");
String entityName = entityClassName;
if (index != -1) {
entityName = entityClassName.substring(index+1);
}
return entityName;
}
} }

View File

@ -17,6 +17,7 @@
package com.cloud.exception; package com.cloud.exception;
import java.util.ArrayList; import java.util.ArrayList;
import com.cloud.utils.exception.CSExceptionErrorCode; import com.cloud.utils.exception.CSExceptionErrorCode;
/** /**

View File

@ -19,6 +19,7 @@ package com.cloud.exception;
import java.util.List; import java.util.List;
import org.apache.cloudstack.acl.ControlledEntity; import org.apache.cloudstack.acl.ControlledEntity;
import com.cloud.user.Account; import com.cloud.user.Account;
import com.cloud.utils.SerialVersionUID; import com.cloud.utils.SerialVersionUID;
import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.utils.exception.CloudRuntimeException;

View File

@ -18,11 +18,12 @@ package com.cloud.host;
import java.util.Date; import java.util.Date;
import org.apache.cloudstack.api.Identity;
import org.apache.cloudstack.api.InternalIdentity;
import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.hypervisor.Hypervisor.HypervisorType;
import com.cloud.resource.ResourceState; import com.cloud.resource.ResourceState;
import com.cloud.utils.fsm.StateObject; import com.cloud.utils.fsm.StateObject;
import org.apache.cloudstack.api.Identity;
import org.apache.cloudstack.api.InternalIdentity;
/** /**

View File

@ -16,10 +16,11 @@
// under the License. // under the License.
package com.cloud.hypervisor; package com.cloud.hypervisor;
import com.cloud.hypervisor.Hypervisor.HypervisorType;
import org.apache.cloudstack.api.Identity; import org.apache.cloudstack.api.Identity;
import org.apache.cloudstack.api.InternalIdentity; import org.apache.cloudstack.api.InternalIdentity;
import com.cloud.hypervisor.Hypervisor.HypervisorType;
/** /**
* HypervisorCapability represents one particular hypervisor version's capabilities. * HypervisorCapability represents one particular hypervisor version's capabilities.

View File

@ -19,10 +19,11 @@ package com.cloud.network;
import java.util.Date; import java.util.Date;
import org.apache.cloudstack.acl.ControlledEntity; import org.apache.cloudstack.acl.ControlledEntity;
import com.cloud.utils.net.Ip;
import org.apache.cloudstack.api.Identity; import org.apache.cloudstack.api.Identity;
import org.apache.cloudstack.api.InternalIdentity; import org.apache.cloudstack.api.InternalIdentity;
import com.cloud.utils.net.Ip;
/** /**
* *
* - Allocated = null * - Allocated = null

View File

@ -16,24 +16,36 @@
// under the License. // under the License.
package com.cloud.network; package com.cloud.network;
import java.net.URI;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import org.apache.cloudstack.acl.ControlledEntity; import org.apache.cloudstack.acl.ControlledEntity;
import org.apache.cloudstack.api.Identity;
import org.apache.cloudstack.api.InternalIdentity;
import com.cloud.network.Networks.BroadcastDomainType; import com.cloud.network.Networks.BroadcastDomainType;
import com.cloud.network.Networks.Mode; import com.cloud.network.Networks.Mode;
import com.cloud.network.Networks.TrafficType; import com.cloud.network.Networks.TrafficType;
import com.cloud.utils.fsm.FiniteState; import com.cloud.network.Networks.BroadcastDomainType;
import com.cloud.utils.fsm.StateMachine; import com.cloud.network.Networks.Mode;
import com.cloud.network.Networks.TrafficType;
import com.cloud.utils.fsm.StateMachine2;
import com.cloud.utils.fsm.StateObject;
import org.apache.cloudstack.acl.ControlledEntity;
import org.apache.cloudstack.api.Identity; import org.apache.cloudstack.api.Identity;
import org.apache.cloudstack.api.InternalIdentity; import org.apache.cloudstack.api.InternalIdentity;
import java.net.URI; import java.net.URI;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Set;
/** /**
* owned by an account. * owned by an account.
*/ */
public interface Network extends ControlledEntity, InternalIdentity, Identity { public interface Network extends ControlledEntity, StateObject<Network.State>, InternalIdentity, Identity {
public enum GuestType { public enum GuestType {
Shared, Shared,
@ -123,7 +135,8 @@ public interface Network extends ControlledEntity, InternalIdentity, Identity {
public static final Provider SecurityGroupProvider = new Provider("SecurityGroupProvider", false); public static final Provider SecurityGroupProvider = new Provider("SecurityGroupProvider", false);
public static final Provider VPCVirtualRouter = new Provider("VpcVirtualRouter", false); public static final Provider VPCVirtualRouter = new Provider("VpcVirtualRouter", false);
public static final Provider None = new Provider("None", false); public static final Provider None = new Provider("None", false);
public static final Provider NiciraNvp = new Provider("NiciraNvp", true); // NiciraNvp is not an "External" provider, otherwise we get in trouble with NetworkServiceImpl.providersConfiguredForExternalNetworking
public static final Provider NiciraNvp = new Provider("NiciraNvp", false);
public static final Provider MidokuraMidonet = new Provider("MidokuraMidonet", true); public static final Provider MidokuraMidonet = new Provider("MidokuraMidonet", true);
private String name; private String name;
@ -204,7 +217,8 @@ public interface Network extends ControlledEntity, InternalIdentity, Identity {
OperationFailed; OperationFailed;
} }
enum State implements FiniteState<State, Event> { public enum State {
Allocated("Indicates the network configuration is in allocated but not setup"), Allocated("Indicates the network configuration is in allocated but not setup"),
Setup("Indicates the network configuration is setup"), Setup("Indicates the network configuration is setup"),
Implementing("Indicates the network configuration is being implemented"), Implementing("Indicates the network configuration is being implemented"),
@ -212,39 +226,8 @@ public interface Network extends ControlledEntity, InternalIdentity, Identity {
Shutdown("Indicates the network configuration is being destroyed"), Shutdown("Indicates the network configuration is being destroyed"),
Destroy("Indicates that the network is destroyed"); Destroy("Indicates that the network is destroyed");
protected static final StateMachine2<State, Network.Event, Network> s_fsm = new StateMachine2<State, Network.Event, Network>();
@Override
public StateMachine<State, Event> getStateMachine() {
return s_fsm;
}
@Override
public State getNextState(Event event) {
return s_fsm.getNextState(this, event);
}
@Override
public List<State> getFromStates(Event event) {
return s_fsm.getFromStates(this, event);
}
@Override
public Set<Event> getPossibleEvents() {
return s_fsm.getPossibleEvents(this);
}
String _description;
@Override
public String getDescription() {
return _description;
}
private State(String description) {
_description = description;
}
private static StateMachine<State, Event> s_fsm = new StateMachine<State, Event>();
static { static {
s_fsm.addTransition(State.Allocated, Event.ImplementNetwork, State.Implementing); s_fsm.addTransition(State.Allocated, Event.ImplementNetwork, State.Implementing);
s_fsm.addTransition(State.Implementing, Event.OperationSucceeded, State.Implemented); s_fsm.addTransition(State.Implementing, Event.OperationSucceeded, State.Implemented);
@ -253,6 +236,41 @@ public interface Network extends ControlledEntity, InternalIdentity, Identity {
s_fsm.addTransition(State.Shutdown, Event.OperationSucceeded, State.Allocated); s_fsm.addTransition(State.Shutdown, Event.OperationSucceeded, State.Allocated);
s_fsm.addTransition(State.Shutdown, Event.OperationFailed, State.Implemented); s_fsm.addTransition(State.Shutdown, Event.OperationFailed, State.Implemented);
} }
public static StateMachine2<State, Network.Event, Network> getStateMachine() {
return s_fsm;
}
String _description;
private State(String description) {
_description = description;
}
}
public class IpAddresses {
private String ip4Address;
private String ip6Address;
public IpAddresses(String ip4Address, String ip6Address) {
this.setIp4Address(ip4Address);
this.setIp6Address(ip6Address);
}
public String getIp4Address() {
return ip4Address;
}
public void setIp4Address(String ip4Address) {
this.ip4Address = ip4Address;
}
public String getIp6Address() {
return ip6Address;
}
public void setIp6Address(String ip6Address) {
this.ip6Address = ip6Address;
}
} }
String getName(); String getName();
@ -267,6 +285,10 @@ public interface Network extends ControlledEntity, InternalIdentity, Identity {
String getCidr(); String getCidr();
String getIp6Gateway();
String getIp6Cidr();
long getDataCenterId(); long getDataCenterId();
long getNetworkOfferingId(); long getNetworkOfferingId();

View File

@ -249,4 +249,5 @@ public interface NetworkModel {
boolean isNetworkInlineMode(Network network); boolean isNetworkInlineMode(Network network);
Vlan getVlanForNetwork(long networkId);
} }

View File

@ -21,7 +21,6 @@ import java.net.URI;
import com.cloud.network.Networks.BroadcastDomainType; import com.cloud.network.Networks.BroadcastDomainType;
import com.cloud.network.Networks.Mode; import com.cloud.network.Networks.Mode;
import com.cloud.network.Networks.TrafficType; import com.cloud.network.Networks.TrafficType;
import org.apache.cloudstack.api.InternalIdentity;
public class NetworkProfile implements Network { public class NetworkProfile implements Network {
private long id; private long id;
@ -39,6 +38,8 @@ public class NetworkProfile implements Network {
private TrafficType trafficType; private TrafficType trafficType;
private String gateway; private String gateway;
private String cidr; private String cidr;
private String ip6Gateway;
private String ip6Cidr;
private long networkOfferingId; private long networkOfferingId;
private long related; private long related;
private String displayText; private String displayText;
@ -64,6 +65,8 @@ public class NetworkProfile implements Network {
this.trafficType = network.getTrafficType(); this.trafficType = network.getTrafficType();
this.gateway = network.getGateway(); this.gateway = network.getGateway();
this.cidr = network.getCidr(); this.cidr = network.getCidr();
this.ip6Gateway = network.getIp6Gateway();
this.ip6Cidr = network.getIp6Cidr();
this.networkOfferingId = network.getNetworkOfferingId(); this.networkOfferingId = network.getNetworkOfferingId();
this.related = network.getRelated(); this.related = network.getRelated();
this.displayText = network.getDisplayText(); this.displayText = network.getDisplayText();
@ -230,4 +233,14 @@ public class NetworkProfile implements Network {
public void setTrafficType(TrafficType type) { public void setTrafficType(TrafficType type) {
this.trafficType = type; this.trafficType = type;
} }
@Override
public String getIp6Gateway() {
return ip6Gateway;
}
@Override
public String getIp6Cidr() {
return ip6Cidr;
}
} }

View File

@ -19,9 +19,10 @@ package com.cloud.network;
import java.util.List; import java.util.List;
import org.apache.cloudstack.api.command.admin.usage.ListTrafficTypeImplementorsCmd; import org.apache.cloudstack.api.command.admin.usage.ListTrafficTypeImplementorsCmd;
import org.apache.cloudstack.api.command.user.network.RestartNetworkCmd;
import org.apache.cloudstack.api.command.user.network.CreateNetworkCmd; import org.apache.cloudstack.api.command.user.network.CreateNetworkCmd;
import org.apache.cloudstack.api.command.user.network.ListNetworksCmd; import org.apache.cloudstack.api.command.user.network.ListNetworksCmd;
import org.apache.cloudstack.api.command.user.network.RestartNetworkCmd;
import com.cloud.exception.ConcurrentOperationException; import com.cloud.exception.ConcurrentOperationException;
import com.cloud.exception.InsufficientAddressCapacityException; import com.cloud.exception.InsufficientAddressCapacityException;
import com.cloud.exception.InsufficientCapacityException; import com.cloud.exception.InsufficientCapacityException;

View File

@ -48,7 +48,7 @@ public class Networks {
public enum AddressFormat { public enum AddressFormat {
Ip4, Ip4,
Ip6, Ip6,
Mixed DualStack
} }
/** /**

View File

@ -16,11 +16,11 @@
// under the License. // under the License.
package com.cloud.network; package com.cloud.network;
import java.util.List;
import org.apache.cloudstack.api.Identity; import org.apache.cloudstack.api.Identity;
import org.apache.cloudstack.api.InternalIdentity; import org.apache.cloudstack.api.InternalIdentity;
import java.util.List;
/** /**
* *
*/ */
@ -35,7 +35,8 @@ public interface PhysicalNetwork extends Identity, InternalIdentity {
VLAN, VLAN,
L3, L3,
GRE, GRE,
STT; STT,
VNS;
} }
public enum BroadcastDomainRange { public enum BroadcastDomainRange {

View File

@ -18,9 +18,10 @@ package com.cloud.network;
import java.util.List; import java.util.List;
import com.cloud.network.Network.Service;
import org.apache.cloudstack.api.InternalIdentity; import org.apache.cloudstack.api.InternalIdentity;
import com.cloud.network.Network.Service;
/** /**
* *
*/ */

View File

@ -16,10 +16,11 @@
// under the License. // under the License.
package com.cloud.network; package com.cloud.network;
import com.cloud.network.Networks.TrafficType;
import org.apache.cloudstack.api.Identity; import org.apache.cloudstack.api.Identity;
import org.apache.cloudstack.api.InternalIdentity; import org.apache.cloudstack.api.InternalIdentity;
import com.cloud.network.Networks.TrafficType;
/** /**
* *
*/ */

View File

@ -17,9 +17,10 @@
package com.cloud.network; package com.cloud.network;
import org.apache.cloudstack.acl.ControlledEntity; import org.apache.cloudstack.acl.ControlledEntity;
import com.cloud.dc.Vlan;
import org.apache.cloudstack.api.InternalIdentity; import org.apache.cloudstack.api.InternalIdentity;
import com.cloud.dc.Vlan;
/** /**
*/ */
public interface PublicIpAddress extends ControlledEntity, IpAddress, Vlan, InternalIdentity { public interface PublicIpAddress extends ControlledEntity, IpAddress, Vlan, InternalIdentity {

View File

@ -19,11 +19,12 @@ package com.cloud.network;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.List; import java.util.List;
import org.apache.cloudstack.api.command.admin.network.*;
import org.apache.cloudstack.api.command.admin.network.UpdateStorageNetworkIpRangeCmd;
import org.apache.cloudstack.api.command.admin.network.DeleteStorageNetworkIpRangeCmd;
import com.cloud.dc.StorageNetworkIpRange;
import org.apache.cloudstack.api.command.admin.network.CreateStorageNetworkIpRangeCmd; import org.apache.cloudstack.api.command.admin.network.CreateStorageNetworkIpRangeCmd;
import org.apache.cloudstack.api.command.admin.network.DeleteStorageNetworkIpRangeCmd;
import org.apache.cloudstack.api.command.admin.network.ListStorageNetworkIpRangeCmd;
import org.apache.cloudstack.api.command.admin.network.UpdateStorageNetworkIpRangeCmd;
import com.cloud.dc.StorageNetworkIpRange;
public interface StorageNetworkService { public interface StorageNetworkService {
StorageNetworkIpRange createIpRange(CreateStorageNetworkIpRangeCmd cmd) throws SQLException; StorageNetworkIpRange createIpRange(CreateStorageNetworkIpRangeCmd cmd) throws SQLException;

View File

@ -17,6 +17,7 @@
package com.cloud.network; package com.cloud.network;
import org.apache.cloudstack.api.command.admin.router.UpgradeRouterCmd; import org.apache.cloudstack.api.command.admin.router.UpgradeRouterCmd;
import com.cloud.exception.ConcurrentOperationException; import com.cloud.exception.ConcurrentOperationException;
import com.cloud.exception.InsufficientCapacityException; import com.cloud.exception.InsufficientCapacityException;
import com.cloud.exception.ResourceUnavailableException; import com.cloud.exception.ResourceUnavailableException;

View File

@ -19,11 +19,19 @@ package com.cloud.network.as;
import java.util.List; import java.util.List;
import org.apache.cloudstack.api.command.admin.autoscale.CreateCounterCmd; import org.apache.cloudstack.api.command.admin.autoscale.CreateCounterCmd;
import org.apache.cloudstack.api.command.user.autoscale.*;
import org.apache.cloudstack.api.command.user.autoscale.CreateAutoScalePolicyCmd; import org.apache.cloudstack.api.command.user.autoscale.CreateAutoScalePolicyCmd;
import org.apache.cloudstack.api.command.user.autoscale.CreateAutoScaleVmGroupCmd;
import org.apache.cloudstack.api.command.user.autoscale.CreateAutoScaleVmProfileCmd; import org.apache.cloudstack.api.command.user.autoscale.CreateAutoScaleVmProfileCmd;
import org.apache.cloudstack.api.command.user.autoscale.CreateConditionCmd;
import org.apache.cloudstack.api.command.user.autoscale.ListAutoScalePoliciesCmd; import org.apache.cloudstack.api.command.user.autoscale.ListAutoScalePoliciesCmd;
import org.apache.cloudstack.api.command.user.autoscale.ListAutoScaleVmGroupsCmd;
import org.apache.cloudstack.api.command.user.autoscale.ListAutoScaleVmProfilesCmd;
import org.apache.cloudstack.api.command.user.autoscale.ListConditionsCmd;
import org.apache.cloudstack.api.command.user.autoscale.ListCountersCmd;
import org.apache.cloudstack.api.command.user.autoscale.UpdateAutoScalePolicyCmd;
import org.apache.cloudstack.api.command.user.autoscale.UpdateAutoScaleVmGroupCmd; import org.apache.cloudstack.api.command.user.autoscale.UpdateAutoScaleVmGroupCmd;
import org.apache.cloudstack.api.command.user.autoscale.UpdateAutoScaleVmProfileCmd;
import com.cloud.exception.ResourceInUseException; import com.cloud.exception.ResourceInUseException;
import com.cloud.exception.ResourceUnavailableException; import com.cloud.exception.ResourceUnavailableException;

View File

@ -20,9 +20,10 @@ package com.cloud.network.as;
import java.util.List; import java.util.List;
import org.apache.cloudstack.acl.ControlledEntity; import org.apache.cloudstack.acl.ControlledEntity;
import com.cloud.utils.Pair;
import org.apache.cloudstack.api.InternalIdentity; import org.apache.cloudstack.api.InternalIdentity;
import com.cloud.utils.Pair;
/** /**
* AutoScaleVmProfile * AutoScaleVmProfile
*/ */

View File

@ -16,7 +16,6 @@
// under the License. // under the License.
package com.cloud.network.element; package com.cloud.network.element;
import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;

View File

@ -20,6 +20,7 @@ import java.util.List;
import org.apache.cloudstack.api.command.admin.router.ConfigureVirtualRouterElementCmd; import org.apache.cloudstack.api.command.admin.router.ConfigureVirtualRouterElementCmd;
import org.apache.cloudstack.api.command.admin.router.ListVirtualRouterElementsCmd; import org.apache.cloudstack.api.command.admin.router.ListVirtualRouterElementsCmd;
import com.cloud.network.VirtualRouterProvider; import com.cloud.network.VirtualRouterProvider;
import com.cloud.network.VirtualRouterProvider.VirtualRouterProviderType; import com.cloud.network.VirtualRouterProvider.VirtualRouterProviderType;
import com.cloud.utils.component.PluggableService; import com.cloud.utils.component.PluggableService;

View File

@ -27,7 +27,6 @@ import com.cloud.exception.ResourceUnavailableException;
import com.cloud.network.vpc.PrivateGateway; import com.cloud.network.vpc.PrivateGateway;
import com.cloud.network.vpc.StaticRouteProfile; import com.cloud.network.vpc.StaticRouteProfile;
import com.cloud.network.vpc.Vpc; import com.cloud.network.vpc.Vpc;
import com.cloud.network.vpc.VpcGateway;
import com.cloud.vm.ReservationContext; import com.cloud.vm.ReservationContext;
public interface VpcProvider extends NetworkElement{ public interface VpcProvider extends NetworkElement{

View File

@ -20,6 +20,7 @@ package com.cloud.network.firewall;
import java.util.List; import java.util.List;
import org.apache.cloudstack.api.command.user.firewall.ListFirewallRulesCmd; import org.apache.cloudstack.api.command.user.firewall.ListFirewallRulesCmd;
import com.cloud.exception.NetworkRuleConflictException; import com.cloud.exception.NetworkRuleConflictException;
import com.cloud.exception.ResourceUnavailableException; import com.cloud.exception.ResourceUnavailableException;
import com.cloud.network.rules.FirewallRule; import com.cloud.network.rules.FirewallRule;

View File

@ -20,6 +20,7 @@ package com.cloud.network.firewall;
import java.util.List; import java.util.List;
import org.apache.cloudstack.api.command.user.network.ListNetworkACLsCmd; import org.apache.cloudstack.api.command.user.network.ListNetworkACLsCmd;
import com.cloud.exception.NetworkRuleConflictException; import com.cloud.exception.NetworkRuleConflictException;
import com.cloud.exception.ResourceUnavailableException; import com.cloud.exception.ResourceUnavailableException;
import com.cloud.network.rules.FirewallRule; import com.cloud.network.rules.FirewallRule;

View File

@ -26,7 +26,6 @@ import com.cloud.network.as.Counter;
import com.cloud.network.rules.FirewallRule; import com.cloud.network.rules.FirewallRule;
import com.cloud.network.rules.LoadBalancer; import com.cloud.network.rules.LoadBalancer;
import com.cloud.utils.Pair; import com.cloud.utils.Pair;
import org.apache.cloudstack.api.InternalIdentity;
public class LoadBalancingRule implements FirewallRule, LoadBalancer { public class LoadBalancingRule implements FirewallRule, LoadBalancer {
private LoadBalancer lb; private LoadBalancer lb;

View File

@ -18,9 +18,13 @@ package com.cloud.network.lb;
import java.util.List; import java.util.List;
import org.apache.cloudstack.api.command.user.loadbalancer.*;
import org.apache.cloudstack.api.command.user.loadbalancer.CreateLBStickinessPolicyCmd; import org.apache.cloudstack.api.command.user.loadbalancer.CreateLBStickinessPolicyCmd;
import org.apache.cloudstack.api.command.user.loadbalancer.CreateLoadBalancerRuleCmd;
import org.apache.cloudstack.api.command.user.loadbalancer.ListLBStickinessPoliciesCmd;
import org.apache.cloudstack.api.command.user.loadbalancer.ListLoadBalancerRuleInstancesCmd;
import org.apache.cloudstack.api.command.user.loadbalancer.ListLoadBalancerRulesCmd;
import org.apache.cloudstack.api.command.user.loadbalancer.UpdateLoadBalancerRuleCmd; import org.apache.cloudstack.api.command.user.loadbalancer.UpdateLoadBalancerRuleCmd;
import com.cloud.exception.InsufficientAddressCapacityException; import com.cloud.exception.InsufficientAddressCapacityException;
import com.cloud.exception.NetworkRuleConflictException; import com.cloud.exception.NetworkRuleConflictException;
import com.cloud.exception.ResourceUnavailableException; import com.cloud.exception.ResourceUnavailableException;

View File

@ -16,8 +16,9 @@
// under the License. // under the License.
package com.cloud.network.rules; package com.cloud.network.rules;
import java.util.List;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List;
import com.google.gson.annotations.SerializedName; import com.google.gson.annotations.SerializedName;

View File

@ -19,6 +19,7 @@ package com.cloud.network.rules;
import java.util.List; import java.util.List;
import org.apache.cloudstack.api.command.user.firewall.ListPortForwardingRulesCmd; import org.apache.cloudstack.api.command.user.firewall.ListPortForwardingRulesCmd;
import com.cloud.exception.InsufficientAddressCapacityException; import com.cloud.exception.InsufficientAddressCapacityException;
import com.cloud.exception.NetworkRuleConflictException; import com.cloud.exception.NetworkRuleConflictException;
import com.cloud.exception.ResourceUnavailableException; import com.cloud.exception.ResourceUnavailableException;

View File

@ -18,10 +18,11 @@ package com.cloud.network.rules;
import java.util.List; import java.util.List;
import com.cloud.utils.Pair;
import org.apache.cloudstack.api.Identity; import org.apache.cloudstack.api.Identity;
import org.apache.cloudstack.api.InternalIdentity; import org.apache.cloudstack.api.InternalIdentity;
import com.cloud.utils.Pair;
/** /**
*/ */
public interface StickinessPolicy extends InternalIdentity, Identity { public interface StickinessPolicy extends InternalIdentity, Identity {

View File

@ -15,9 +15,10 @@
// specific language governing permissions and limitations // specific language governing permissions and limitations
// under the License. // under the License.
package com.cloud.network.security; package com.cloud.network.security;
import com.cloud.network.security.SecurityRule.SecurityRuleType;
import org.apache.cloudstack.api.InternalIdentity; import org.apache.cloudstack.api.InternalIdentity;
import com.cloud.network.security.SecurityRule.SecurityRuleType;
public interface SecurityGroupRules extends InternalIdentity { public interface SecurityGroupRules extends InternalIdentity {
String getName(); String getName();

View File

@ -18,7 +18,12 @@ package com.cloud.network.security;
import java.util.List; import java.util.List;
import org.apache.cloudstack.api.command.user.securitygroup.*; import org.apache.cloudstack.api.command.user.securitygroup.AuthorizeSecurityGroupEgressCmd;
import org.apache.cloudstack.api.command.user.securitygroup.AuthorizeSecurityGroupIngressCmd;
import org.apache.cloudstack.api.command.user.securitygroup.CreateSecurityGroupCmd;
import org.apache.cloudstack.api.command.user.securitygroup.DeleteSecurityGroupCmd;
import org.apache.cloudstack.api.command.user.securitygroup.RevokeSecurityGroupEgressCmd;
import org.apache.cloudstack.api.command.user.securitygroup.RevokeSecurityGroupIngressCmd;
import com.cloud.exception.InvalidParameterValueException; import com.cloud.exception.InvalidParameterValueException;
import com.cloud.exception.PermissionDeniedException; import com.cloud.exception.PermissionDeniedException;

View File

@ -16,10 +16,11 @@
// under the License. // under the License.
package com.cloud.network.security; package com.cloud.network.security;
import com.cloud.async.AsyncInstanceCreateStatus;
import org.apache.cloudstack.api.Identity; import org.apache.cloudstack.api.Identity;
import org.apache.cloudstack.api.InternalIdentity; import org.apache.cloudstack.api.InternalIdentity;
import com.cloud.async.AsyncInstanceCreateStatus;
public interface SecurityRule extends Identity, InternalIdentity { public interface SecurityRule extends Identity, InternalIdentity {
public static class SecurityRuleType { public static class SecurityRuleType {

View File

@ -16,7 +16,6 @@
// under the License. // under the License.
package com.cloud.network.vpc; package com.cloud.network.vpc;
import org.apache.cloudstack.api.InternalIdentity;
public class StaticRouteProfile implements StaticRoute { public class StaticRouteProfile implements StaticRoute {
private long id; private long id;

View File

@ -17,10 +17,11 @@
package com.cloud.network.vpc; package com.cloud.network.vpc;
import org.apache.cloudstack.acl.ControlledEntity; import org.apache.cloudstack.acl.ControlledEntity;
import com.cloud.network.Network;
import org.apache.cloudstack.api.Identity; import org.apache.cloudstack.api.Identity;
import org.apache.cloudstack.api.InternalIdentity; import org.apache.cloudstack.api.InternalIdentity;
import com.cloud.network.Network;
public interface Vpc extends ControlledEntity, Identity, InternalIdentity { public interface Vpc extends ControlledEntity, Identity, InternalIdentity {
public enum State { public enum State {
Enabled, Enabled,

View File

@ -22,6 +22,7 @@ import java.util.Set;
import org.apache.cloudstack.api.command.user.vpc.ListPrivateGatewaysCmd; import org.apache.cloudstack.api.command.user.vpc.ListPrivateGatewaysCmd;
import org.apache.cloudstack.api.command.user.vpc.ListStaticRoutesCmd; import org.apache.cloudstack.api.command.user.vpc.ListStaticRoutesCmd;
import com.cloud.exception.ConcurrentOperationException; import com.cloud.exception.ConcurrentOperationException;
import com.cloud.exception.InsufficientAddressCapacityException; import com.cloud.exception.InsufficientAddressCapacityException;
import com.cloud.exception.InsufficientCapacityException; import com.cloud.exception.InsufficientCapacityException;

View File

@ -18,8 +18,9 @@ package com.cloud.network.vpn;
import java.util.List; import java.util.List;
import org.apache.cloudstack.api.command.user.vpn.ListVpnUsersCmd;
import org.apache.cloudstack.api.command.user.vpn.ListRemoteAccessVpnsCmd; import org.apache.cloudstack.api.command.user.vpn.ListRemoteAccessVpnsCmd;
import org.apache.cloudstack.api.command.user.vpn.ListVpnUsersCmd;
import com.cloud.exception.NetworkRuleConflictException; import com.cloud.exception.NetworkRuleConflictException;
import com.cloud.exception.ResourceUnavailableException; import com.cloud.exception.ResourceUnavailableException;
import com.cloud.network.RemoteAccessVpn; import com.cloud.network.RemoteAccessVpn;

View File

@ -18,7 +18,6 @@ package com.cloud.network.vpn;
import java.util.List; import java.util.List;
import org.apache.cloudstack.api.command.user.vpn.*;
import org.apache.cloudstack.api.command.user.vpn.CreateVpnConnectionCmd; import org.apache.cloudstack.api.command.user.vpn.CreateVpnConnectionCmd;
import org.apache.cloudstack.api.command.user.vpn.CreateVpnCustomerGatewayCmd; import org.apache.cloudstack.api.command.user.vpn.CreateVpnCustomerGatewayCmd;
import org.apache.cloudstack.api.command.user.vpn.CreateVpnGatewayCmd; import org.apache.cloudstack.api.command.user.vpn.CreateVpnGatewayCmd;
@ -26,9 +25,11 @@ import org.apache.cloudstack.api.command.user.vpn.DeleteVpnConnectionCmd;
import org.apache.cloudstack.api.command.user.vpn.DeleteVpnCustomerGatewayCmd; import org.apache.cloudstack.api.command.user.vpn.DeleteVpnCustomerGatewayCmd;
import org.apache.cloudstack.api.command.user.vpn.DeleteVpnGatewayCmd; import org.apache.cloudstack.api.command.user.vpn.DeleteVpnGatewayCmd;
import org.apache.cloudstack.api.command.user.vpn.ListVpnConnectionsCmd; import org.apache.cloudstack.api.command.user.vpn.ListVpnConnectionsCmd;
import org.apache.cloudstack.api.command.user.vpn.ListVpnCustomerGatewaysCmd;
import org.apache.cloudstack.api.command.user.vpn.ListVpnGatewaysCmd; import org.apache.cloudstack.api.command.user.vpn.ListVpnGatewaysCmd;
import org.apache.cloudstack.api.command.user.vpn.ResetVpnConnectionCmd; import org.apache.cloudstack.api.command.user.vpn.ResetVpnConnectionCmd;
import org.apache.cloudstack.api.command.user.vpn.UpdateVpnCustomerGatewayCmd; import org.apache.cloudstack.api.command.user.vpn.UpdateVpnCustomerGatewayCmd;
import com.cloud.exception.NetworkRuleConflictException; import com.cloud.exception.NetworkRuleConflictException;
import com.cloud.exception.ResourceUnavailableException; import com.cloud.exception.ResourceUnavailableException;
import com.cloud.network.Site2SiteCustomerGateway; import com.cloud.network.Site2SiteCustomerGateway;

View File

@ -16,12 +16,12 @@
// under the License. // under the License.
package com.cloud.offering; package com.cloud.offering;
import java.util.Date;
import org.apache.cloudstack.acl.InfrastructureEntity; import org.apache.cloudstack.acl.InfrastructureEntity;
import org.apache.cloudstack.api.Identity; import org.apache.cloudstack.api.Identity;
import org.apache.cloudstack.api.InternalIdentity; import org.apache.cloudstack.api.InternalIdentity;
import java.util.Date;
/** /**
* Represents a disk offering that specifies what the end user needs in * Represents a disk offering that specifies what the end user needs in
* the disk offering. * the disk offering.

View File

@ -16,12 +16,13 @@
// under the License. // under the License.
package com.cloud.offering; package com.cloud.offering;
import com.cloud.network.Network.GuestType;
import com.cloud.network.Networks.TrafficType;
import org.apache.cloudstack.acl.InfrastructureEntity; import org.apache.cloudstack.acl.InfrastructureEntity;
import org.apache.cloudstack.api.Identity; import org.apache.cloudstack.api.Identity;
import org.apache.cloudstack.api.InternalIdentity; import org.apache.cloudstack.api.InternalIdentity;
import com.cloud.network.Network.GuestType;
import com.cloud.network.Networks.TrafficType;
/** /**
* Describes network offering * Describes network offering
* *
@ -110,4 +111,7 @@ public interface NetworkOffering extends InfrastructureEntity, InternalIdentity,
boolean getSpecifyIpRanges(); boolean getSpecifyIpRanges();
boolean isInline(); boolean isInline();
boolean getIsPersistent();
} }

View File

@ -16,12 +16,12 @@
// under the License. // under the License.
package com.cloud.offering; package com.cloud.offering;
import java.util.Date;
import org.apache.cloudstack.acl.InfrastructureEntity; import org.apache.cloudstack.acl.InfrastructureEntity;
import org.apache.cloudstack.api.Identity; import org.apache.cloudstack.api.Identity;
import org.apache.cloudstack.api.InternalIdentity; import org.apache.cloudstack.api.InternalIdentity;
import java.util.Date;
/** /**
* offered. * offered.
*/ */

View File

@ -16,11 +16,12 @@
// under the License. // under the License.
package com.cloud.org; package com.cloud.org;
import com.cloud.hypervisor.Hypervisor.HypervisorType;
import com.cloud.org.Managed.ManagedState;
import org.apache.cloudstack.api.Identity; import org.apache.cloudstack.api.Identity;
import org.apache.cloudstack.api.InternalIdentity; import org.apache.cloudstack.api.InternalIdentity;
import com.cloud.hypervisor.Hypervisor.HypervisorType;
import com.cloud.org.Managed.ManagedState;
public interface Cluster extends Grouping, InternalIdentity, Identity { public interface Cluster extends Grouping, InternalIdentity, Identity {
public static enum ClusterType { public static enum ClusterType {
CloudManaged, CloudManaged,

View File

@ -19,9 +19,10 @@ package com.cloud.projects;
import java.util.Date; import java.util.Date;
import org.apache.cloudstack.api.Identity; import org.apache.cloudstack.api.Identity;
import com.cloud.domain.PartOf;
import org.apache.cloudstack.api.InternalIdentity; import org.apache.cloudstack.api.InternalIdentity;
import com.cloud.domain.PartOf;
public interface Project extends PartOf, Identity, InternalIdentity { public interface Project extends PartOf, Identity, InternalIdentity {
public enum State { public enum State {
Active, Disabled, Suspended Active, Disabled, Suspended

View File

@ -20,12 +20,18 @@ import java.util.List;
import org.apache.cloudstack.api.command.admin.cluster.AddClusterCmd; import org.apache.cloudstack.api.command.admin.cluster.AddClusterCmd;
import org.apache.cloudstack.api.command.admin.cluster.DeleteClusterCmd; import org.apache.cloudstack.api.command.admin.cluster.DeleteClusterCmd;
import org.apache.cloudstack.api.command.admin.host.*; import org.apache.cloudstack.api.command.admin.host.AddHostCmd;
import org.apache.cloudstack.api.command.admin.host.AddSecondaryStorageCmd;
import org.apache.cloudstack.api.command.admin.host.CancelMaintenanceCmd;
import org.apache.cloudstack.api.command.admin.host.PrepareForMaintenanceCmd;
import org.apache.cloudstack.api.command.admin.host.ReconnectHostCmd;
import org.apache.cloudstack.api.command.admin.host.UpdateHostCmd;
import org.apache.cloudstack.api.command.admin.host.UpdateHostPasswordCmd;
import org.apache.cloudstack.api.command.admin.storage.AddS3Cmd; import org.apache.cloudstack.api.command.admin.storage.AddS3Cmd;
import org.apache.cloudstack.api.command.admin.storage.ListS3sCmd; import org.apache.cloudstack.api.command.admin.storage.ListS3sCmd;
import org.apache.cloudstack.api.command.admin.swift.AddSwiftCmd; import org.apache.cloudstack.api.command.admin.swift.AddSwiftCmd;
import org.apache.cloudstack.api.command.admin.swift.ListSwiftsCmd; import org.apache.cloudstack.api.command.admin.swift.ListSwiftsCmd;
import org.apache.cloudstack.api.command.admin.host.PrepareForMaintenanceCmd;
import com.cloud.exception.DiscoveryException; import com.cloud.exception.DiscoveryException;
import com.cloud.exception.InvalidParameterValueException; import com.cloud.exception.InvalidParameterValueException;
import com.cloud.exception.ResourceInUseException; import com.cloud.exception.ResourceInUseException;
@ -36,7 +42,6 @@ import com.cloud.storage.S3;
import com.cloud.storage.Swift; import com.cloud.storage.Swift;
import com.cloud.utils.Pair; import com.cloud.utils.Pair;
import com.cloud.utils.fsm.NoTransitionException; import com.cloud.utils.fsm.NoTransitionException;
import org.apache.cloudstack.api.command.admin.host.ReconnectHostCmd;
public interface ResourceService { public interface ResourceService {
/** /**

View File

@ -22,43 +22,42 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import com.cloud.alert.Alert;
import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.ServerApiException;
import org.apache.cloudstack.api.command.admin.cluster.ListClustersCmd; import org.apache.cloudstack.api.command.admin.cluster.ListClustersCmd;
import org.apache.cloudstack.api.command.admin.config.ListCfgsByCmd;
import org.apache.cloudstack.api.command.admin.domain.UpdateDomainCmd;
import org.apache.cloudstack.api.command.admin.host.ListHostsCmd; import org.apache.cloudstack.api.command.admin.host.ListHostsCmd;
import org.apache.cloudstack.api.command.admin.host.UpdateHostPasswordCmd; import org.apache.cloudstack.api.command.admin.host.UpdateHostPasswordCmd;
import org.apache.cloudstack.api.command.admin.pod.ListPodsByCmd; import org.apache.cloudstack.api.command.admin.pod.ListPodsByCmd;
import org.apache.cloudstack.api.command.admin.resource.ListAlertsCmd; import org.apache.cloudstack.api.command.admin.resource.ListAlertsCmd;
import org.apache.cloudstack.api.command.admin.resource.ListCapacityCmd; import org.apache.cloudstack.api.command.admin.resource.ListCapacityCmd;
import org.apache.cloudstack.api.command.admin.domain.UpdateDomainCmd; import org.apache.cloudstack.api.command.admin.resource.UploadCustomCertificateCmd;
import org.apache.cloudstack.api.command.admin.storage.ListStoragePoolsCmd; import org.apache.cloudstack.api.command.admin.systemvm.DestroySystemVmCmd;
import org.apache.cloudstack.api.command.admin.systemvm.*; import org.apache.cloudstack.api.command.admin.systemvm.ListSystemVMsCmd;
import org.apache.cloudstack.api.command.admin.systemvm.RebootSystemVmCmd;
import org.apache.cloudstack.api.command.admin.systemvm.StopSystemVmCmd;
import org.apache.cloudstack.api.command.admin.systemvm.UpgradeSystemVMCmd;
import org.apache.cloudstack.api.command.admin.vlan.ListVlanIpRangesCmd; import org.apache.cloudstack.api.command.admin.vlan.ListVlanIpRangesCmd;
import org.apache.cloudstack.api.command.user.address.ListPublicIpAddressesCmd; import org.apache.cloudstack.api.command.user.address.ListPublicIpAddressesCmd;
import org.apache.cloudstack.api.command.user.config.ListCapabilitiesCmd; import org.apache.cloudstack.api.command.user.config.ListCapabilitiesCmd;
import org.apache.cloudstack.api.command.user.guest.ListGuestOsCategoriesCmd;
import org.apache.cloudstack.api.command.user.guest.ListGuestOsCmd; import org.apache.cloudstack.api.command.user.guest.ListGuestOsCmd;
import org.apache.cloudstack.api.command.user.iso.ListIsosCmd;
import org.apache.cloudstack.api.command.user.iso.UpdateIsoCmd;
import org.apache.cloudstack.api.command.user.offering.ListDiskOfferingsCmd; import org.apache.cloudstack.api.command.user.offering.ListDiskOfferingsCmd;
import org.apache.cloudstack.api.command.user.offering.ListServiceOfferingsCmd; import org.apache.cloudstack.api.command.user.offering.ListServiceOfferingsCmd;
import org.apache.cloudstack.api.command.user.ssh.DeleteSSHKeyPairCmd;
import org.apache.cloudstack.api.command.user.ssh.CreateSSHKeyPairCmd; import org.apache.cloudstack.api.command.user.ssh.CreateSSHKeyPairCmd;
import org.apache.cloudstack.api.command.user.template.ListTemplatesCmd; import org.apache.cloudstack.api.command.user.ssh.DeleteSSHKeyPairCmd;
import org.apache.cloudstack.api.command.user.vm.GetVMPasswordCmd;
import org.apache.cloudstack.api.command.user.volume.ExtractVolumeCmd;
import org.apache.cloudstack.api.command.user.template.UpdateTemplateCmd;
import org.apache.cloudstack.api.command.admin.config.ListCfgsByCmd;
import org.apache.cloudstack.api.command.user.guest.ListGuestOsCategoriesCmd;
import org.apache.cloudstack.api.command.user.iso.ListIsosCmd;
import org.apache.cloudstack.api.command.user.ssh.ListSSHKeyPairsCmd; import org.apache.cloudstack.api.command.user.ssh.ListSSHKeyPairsCmd;
import org.apache.cloudstack.api.command.admin.systemvm.ListSystemVMsCmd;
import org.apache.cloudstack.api.command.user.zone.ListZonesByCmd;
import org.apache.cloudstack.api.command.admin.systemvm.RebootSystemVmCmd;
import org.apache.cloudstack.api.command.user.ssh.RegisterSSHKeyPairCmd; import org.apache.cloudstack.api.command.user.ssh.RegisterSSHKeyPairCmd;
import org.apache.cloudstack.api.command.admin.systemvm.StopSystemVmCmd; import org.apache.cloudstack.api.command.user.template.ListTemplatesCmd;
import org.apache.cloudstack.api.command.user.iso.UpdateIsoCmd; import org.apache.cloudstack.api.command.user.template.UpdateTemplateCmd;
import org.apache.cloudstack.api.command.user.vm.GetVMPasswordCmd;
import org.apache.cloudstack.api.command.user.vmgroup.UpdateVMGroupCmd; import org.apache.cloudstack.api.command.user.vmgroup.UpdateVMGroupCmd;
import org.apache.cloudstack.api.command.admin.systemvm.UpgradeSystemVMCmd; import org.apache.cloudstack.api.command.user.volume.ExtractVolumeCmd;
import org.apache.cloudstack.api.command.admin.resource.UploadCustomCertificateCmd; import org.apache.cloudstack.api.command.user.zone.ListZonesByCmd;
import com.cloud.alert.Alert;
import com.cloud.capacity.Capacity; import com.cloud.capacity.Capacity;
import com.cloud.configuration.Configuration; import com.cloud.configuration.Configuration;
import com.cloud.dc.DataCenter; import com.cloud.dc.DataCenter;
@ -78,7 +77,6 @@ import com.cloud.offering.ServiceOffering;
import com.cloud.org.Cluster; import com.cloud.org.Cluster;
import com.cloud.storage.GuestOS; import com.cloud.storage.GuestOS;
import com.cloud.storage.GuestOsCategory; import com.cloud.storage.GuestOsCategory;
import com.cloud.storage.StoragePool;
import com.cloud.template.VirtualMachineTemplate; import com.cloud.template.VirtualMachineTemplate;
import com.cloud.user.SSHKeyPair; import com.cloud.user.SSHKeyPair;
import com.cloud.utils.Pair; import com.cloud.utils.Pair;

View File

@ -18,11 +18,12 @@
*/ */
package com.cloud.storage; package com.cloud.storage;
import com.cloud.agent.api.to.S3TO; import java.util.Date;
import org.apache.cloudstack.api.Identity; import org.apache.cloudstack.api.Identity;
import org.apache.cloudstack.api.InternalIdentity; import org.apache.cloudstack.api.InternalIdentity;
import java.util.Date; import com.cloud.agent.api.to.S3TO;
public interface S3 extends InternalIdentity, Identity { public interface S3 extends InternalIdentity, Identity {

View File

@ -18,12 +18,14 @@ package com.cloud.storage;
import java.util.Date; import java.util.Date;
import org.apache.cloudstack.acl.ControlledEntity;
import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.hypervisor.Hypervisor.HypervisorType;
import com.cloud.utils.fsm.StateMachine2;
import com.cloud.utils.fsm.StateObject;
import org.apache.cloudstack.acl.ControlledEntity;
import org.apache.cloudstack.api.Identity; import org.apache.cloudstack.api.Identity;
import org.apache.cloudstack.api.InternalIdentity; import org.apache.cloudstack.api.InternalIdentity;
public interface Snapshot extends ControlledEntity, Identity, InternalIdentity { public interface Snapshot extends ControlledEntity, Identity, InternalIdentity, StateObject<Snapshot.State> {
public enum Type { public enum Type {
MANUAL, MANUAL,
RECURRING, RECURRING,
@ -42,6 +44,7 @@ public interface Snapshot extends ControlledEntity, Identity, InternalIdentity {
return max; return max;
} }
@Override
public String toString() { public String toString() {
return this.name(); return this.name();
} }
@ -51,13 +54,29 @@ public interface Snapshot extends ControlledEntity, Identity, InternalIdentity {
} }
} }
public enum Status { public enum State {
Creating, Creating,
CreatedOnPrimary, CreatedOnPrimary,
BackingUp, BackingUp,
BackedUp, BackedUp,
Error; Error;
private final static StateMachine2<State, Event, Snapshot> s_fsm = new StateMachine2<State, Event, Snapshot>();
public static StateMachine2<State, Event, Snapshot> getStateMachine() {
return s_fsm;
}
static {
s_fsm.addTransition(null, Event.CreateRequested, Creating);
s_fsm.addTransition(Creating, Event.OperationSucceeded, CreatedOnPrimary);
s_fsm.addTransition(Creating, Event.OperationNotPerformed, BackedUp);
s_fsm.addTransition(Creating, Event.OperationFailed, Error);
s_fsm.addTransition(CreatedOnPrimary, Event.BackupToSecondary, BackingUp);
s_fsm.addTransition(BackingUp, Event.OperationSucceeded, BackedUp);
s_fsm.addTransition(BackingUp, Event.OperationFailed, Error);
}
public String toString() { public String toString() {
return this.name(); return this.name();
} }
@ -67,6 +86,15 @@ public interface Snapshot extends ControlledEntity, Identity, InternalIdentity {
} }
} }
enum Event {
CreateRequested,
OperationNotPerformed,
BackupToSecondary,
BackedupToSecondary,
OperationSucceeded,
OperationFailed
}
public static final long MANUAL_POLICY_ID = 0L; public static final long MANUAL_POLICY_ID = 0L;
long getAccountId(); long getAccountId();
@ -81,7 +109,7 @@ public interface Snapshot extends ControlledEntity, Identity, InternalIdentity {
Type getType(); Type getType();
Status getStatus(); State getState();
HypervisorType getHypervisorType(); HypervisorType getHypervisorType();

View File

@ -18,10 +18,11 @@ package com.cloud.storage;
import java.util.Date; import java.util.Date;
import com.cloud.storage.Storage.StoragePoolType;
import org.apache.cloudstack.api.Identity; import org.apache.cloudstack.api.Identity;
import org.apache.cloudstack.api.InternalIdentity; import org.apache.cloudstack.api.InternalIdentity;
import com.cloud.storage.Storage.StoragePoolType;
public interface StoragePool extends Identity, InternalIdentity { public interface StoragePool extends Identity, InternalIdentity {
/** /**
@ -94,4 +95,14 @@ public interface StoragePool extends Identity, InternalIdentity {
int getPort(); int getPort();
Long getPodId(); Long getPodId();
/**
* @return
*/
String getStorageProvider();
/**
* @return
*/
String getStorageType();
} }

View File

@ -17,6 +17,7 @@
package com.cloud.storage; package com.cloud.storage;
public enum StoragePoolStatus { public enum StoragePoolStatus {
Creating,
Up, Up,
PrepareForMaintenance, PrepareForMaintenance,
ErrorInMaintenance, ErrorInMaintenance,

View File

@ -18,12 +18,14 @@ package com.cloud.storage;
import java.net.UnknownHostException; import java.net.UnknownHostException;
import org.apache.cloudstack.api.command.admin.storage.*;
import org.apache.cloudstack.api.command.admin.storage.CancelPrimaryStorageMaintenanceCmd; import org.apache.cloudstack.api.command.admin.storage.CancelPrimaryStorageMaintenanceCmd;
import org.apache.cloudstack.api.command.admin.storage.CreateStoragePoolCmd;
import org.apache.cloudstack.api.command.admin.storage.DeletePoolCmd;
import org.apache.cloudstack.api.command.admin.storage.UpdateStoragePoolCmd; import org.apache.cloudstack.api.command.admin.storage.UpdateStoragePoolCmd;
import org.apache.cloudstack.api.command.user.volume.CreateVolumeCmd; import org.apache.cloudstack.api.command.user.volume.CreateVolumeCmd;
import org.apache.cloudstack.api.command.user.volume.UploadVolumeCmd;
import org.apache.cloudstack.api.command.user.volume.ResizeVolumeCmd; import org.apache.cloudstack.api.command.user.volume.ResizeVolumeCmd;
import org.apache.cloudstack.api.command.user.volume.UploadVolumeCmd;
import com.cloud.exception.ConcurrentOperationException; import com.cloud.exception.ConcurrentOperationException;
import com.cloud.exception.InsufficientCapacityException; import com.cloud.exception.InsufficientCapacityException;
import com.cloud.exception.PermissionDeniedException; import com.cloud.exception.PermissionDeniedException;

View File

@ -16,9 +16,10 @@
// under the License. // under the License.
package com.cloud.storage; package com.cloud.storage;
import com.cloud.agent.api.to.SwiftTO;
import org.apache.cloudstack.api.InternalIdentity; import org.apache.cloudstack.api.InternalIdentity;
import com.cloud.agent.api.to.SwiftTO;
public interface Swift extends InternalIdentity { public interface Swift extends InternalIdentity {
public long getId(); public long getId();

View File

@ -16,11 +16,11 @@
// under the License. // under the License.
package com.cloud.storage; package com.cloud.storage;
import java.util.Date;
import org.apache.cloudstack.api.Identity; import org.apache.cloudstack.api.Identity;
import org.apache.cloudstack.api.InternalIdentity; import org.apache.cloudstack.api.InternalIdentity;
import java.util.Date;
public interface Upload extends InternalIdentity, Identity { public interface Upload extends InternalIdentity, Identity {
public static enum Status { public static enum Status {

View File

@ -16,14 +16,13 @@
// under the License. // under the License.
package com.cloud.storage; package com.cloud.storage;
import org.apache.cloudstack.api.Identity;
import org.apache.cloudstack.api.InternalIdentity;
import java.util.Date; import java.util.Date;
import org.apache.cloudstack.api.InternalIdentity;
public interface VMTemplateStorageResourceAssoc extends InternalIdentity { public interface VMTemplateStorageResourceAssoc extends InternalIdentity {
public static enum Status { public static enum Status {
UNKNOWN, DOWNLOAD_ERROR, NOT_DOWNLOADED, DOWNLOAD_IN_PROGRESS, DOWNLOADED, ABANDONED, UPLOADED, NOT_UPLOADED, UPLOAD_ERROR, UPLOAD_IN_PROGRESS UNKNOWN, DOWNLOAD_ERROR, NOT_DOWNLOADED, DOWNLOAD_IN_PROGRESS, DOWNLOADED, ABANDONED, UPLOADED, NOT_UPLOADED, UPLOAD_ERROR, UPLOAD_IN_PROGRESS, CREATING, CREATED
} }
String getInstallPath(); String getInstallPath();

View File

@ -19,11 +19,12 @@ package com.cloud.storage;
import java.util.Date; import java.util.Date;
import org.apache.cloudstack.acl.ControlledEntity; import org.apache.cloudstack.acl.ControlledEntity;
import org.apache.cloudstack.api.Identity;
import org.apache.cloudstack.api.InternalIdentity;
import com.cloud.template.BasedOn; import com.cloud.template.BasedOn;
import com.cloud.utils.fsm.StateMachine2; import com.cloud.utils.fsm.StateMachine2;
import com.cloud.utils.fsm.StateObject; import com.cloud.utils.fsm.StateObject;
import org.apache.cloudstack.api.Identity;
import org.apache.cloudstack.api.InternalIdentity;
public interface Volume extends ControlledEntity, Identity, InternalIdentity, BasedOn, StateObject<Volume.State> { public interface Volume extends ControlledEntity, Identity, InternalIdentity, BasedOn, StateObject<Volume.State> {
enum Type { enum Type {
@ -39,6 +40,7 @@ public interface Volume extends ControlledEntity, Identity, InternalIdentity, Ba
Resizing("The volume is being resized"), Resizing("The volume is being resized"),
Expunging("The volume is being expunging"), Expunging("The volume is being expunging"),
Destroy("The volume is destroyed, and can't be recovered."), Destroy("The volume is destroyed, and can't be recovered."),
Destroying("The volume is destroying, and can't be recovered."),
UploadOp ("The volume upload operation is in progress or in short the volume is on secondary storage"); UploadOp ("The volume upload operation is in progress or in short the volume is on secondary storage");
String _description; String _description;
@ -152,4 +154,14 @@ public interface Volume extends ControlledEntity, Identity, InternalIdentity, Ba
public void incrUpdatedCount(); public void incrUpdatedCount();
public Date getUpdated(); public Date getUpdated();
/**
* @return
*/
String getReservationId();
/**
* @param reserv
*/
void setReservationId(String reserv);
} }

View File

@ -19,10 +19,11 @@ package com.cloud.storage.snapshot;
import java.util.List; import java.util.List;
import org.apache.cloudstack.api.command.user.snapshot.CreateSnapshotPolicyCmd; import org.apache.cloudstack.api.command.user.snapshot.CreateSnapshotPolicyCmd;
import org.apache.cloudstack.api.command.user.snapshot.ListSnapshotsCmd;
import org.apache.cloudstack.api.command.user.snapshot.DeleteSnapshotPoliciesCmd; import org.apache.cloudstack.api.command.user.snapshot.DeleteSnapshotPoliciesCmd;
import com.cloud.api.commands.ListRecurringSnapshotScheduleCmd;
import org.apache.cloudstack.api.command.user.snapshot.ListSnapshotPoliciesCmd; import org.apache.cloudstack.api.command.user.snapshot.ListSnapshotPoliciesCmd;
import org.apache.cloudstack.api.command.user.snapshot.ListSnapshotsCmd;
import com.cloud.api.commands.ListRecurringSnapshotScheduleCmd;
import com.cloud.exception.PermissionDeniedException; import com.cloud.exception.PermissionDeniedException;
import com.cloud.exception.ResourceAllocationException; import com.cloud.exception.ResourceAllocationException;
import com.cloud.storage.Snapshot; import com.cloud.storage.Snapshot;

View File

@ -24,10 +24,11 @@ import org.apache.cloudstack.api.BaseUpdateTemplateOrIsoPermissionsCmd;
import org.apache.cloudstack.api.command.user.iso.DeleteIsoCmd; import org.apache.cloudstack.api.command.user.iso.DeleteIsoCmd;
import org.apache.cloudstack.api.command.user.iso.ExtractIsoCmd; import org.apache.cloudstack.api.command.user.iso.ExtractIsoCmd;
import org.apache.cloudstack.api.command.user.iso.RegisterIsoCmd; import org.apache.cloudstack.api.command.user.iso.RegisterIsoCmd;
import org.apache.cloudstack.api.command.user.template.*;
import org.apache.cloudstack.api.command.user.template.CopyTemplateCmd; import org.apache.cloudstack.api.command.user.template.CopyTemplateCmd;
import org.apache.cloudstack.api.command.user.template.DeleteTemplateCmd;
import org.apache.cloudstack.api.command.user.template.ExtractTemplateCmd; import org.apache.cloudstack.api.command.user.template.ExtractTemplateCmd;
import org.apache.cloudstack.api.command.user.template.RegisterTemplateCmd; import org.apache.cloudstack.api.command.user.template.RegisterTemplateCmd;
import com.cloud.exception.InternalErrorException; import com.cloud.exception.InternalErrorException;
import com.cloud.exception.ResourceAllocationException; import com.cloud.exception.ResourceAllocationException;
import com.cloud.exception.StorageUnavailableException; import com.cloud.exception.StorageUnavailableException;

View File

@ -20,11 +20,12 @@ import java.util.Date;
import java.util.Map; import java.util.Map;
import org.apache.cloudstack.acl.ControlledEntity; import org.apache.cloudstack.acl.ControlledEntity;
import org.apache.cloudstack.api.Identity;
import org.apache.cloudstack.api.InternalIdentity;
import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.hypervisor.Hypervisor.HypervisorType;
import com.cloud.storage.Storage.ImageFormat; import com.cloud.storage.Storage.ImageFormat;
import com.cloud.storage.Storage.TemplateType; import com.cloud.storage.Storage.TemplateType;
import org.apache.cloudstack.api.Identity;
import org.apache.cloudstack.api.InternalIdentity;
public interface VirtualMachineTemplate extends ControlledEntity, Identity, InternalIdentity { public interface VirtualMachineTemplate extends ControlledEntity, Identity, InternalIdentity {
@ -89,6 +90,5 @@ public interface VirtualMachineTemplate extends ControlledEntity, Identity, Inte
Long getSourceTemplateId(); Long getSourceTemplateId();
String getTemplateTag(); String getTemplateTag();
Map getDetails(); Map getDetails();
} }

View File

@ -63,4 +63,7 @@ public interface Account extends ControlledEntity, InternalIdentity, Identity {
public Long getDefaultZoneId(); public Long getDefaultZoneId();
public int getRegionId();
public String getUuid();
} }

View File

@ -22,16 +22,15 @@ import java.util.Map;
import org.apache.cloudstack.acl.ControlledEntity; import org.apache.cloudstack.acl.ControlledEntity;
import org.apache.cloudstack.acl.RoleType; import org.apache.cloudstack.acl.RoleType;
import org.apache.cloudstack.acl.SecurityChecker.AccessType; import org.apache.cloudstack.acl.SecurityChecker.AccessType;
import org.apache.cloudstack.api.command.admin.account.UpdateAccountCmd;
import org.apache.cloudstack.api.command.admin.user.DeleteUserCmd; import org.apache.cloudstack.api.command.admin.user.DeleteUserCmd;
import org.apache.cloudstack.api.command.admin.user.RegisterCmd; import org.apache.cloudstack.api.command.admin.user.RegisterCmd;
import org.apache.cloudstack.api.command.admin.user.UpdateUserCmd; import org.apache.cloudstack.api.command.admin.user.UpdateUserCmd;
import org.apache.cloudstack.api.command.admin.account.UpdateAccountCmd;
import org.apache.cloudstack.api.command.admin.user.RegisterCmd;
import com.cloud.domain.Domain; import com.cloud.domain.Domain;
import com.cloud.exception.ConcurrentOperationException;
import com.cloud.exception.PermissionDeniedException; import com.cloud.exception.PermissionDeniedException;
import com.cloud.exception.ResourceUnavailableException;
import com.cloud.utils.Pair; import com.cloud.utils.Pair;
public interface AccountService { public interface AccountService {
@ -63,35 +62,7 @@ public interface AccountService {
* @return the user if created successfully, null otherwise * @return the user if created successfully, null otherwise
*/ */
UserAccount createUserAccount(String userName, String password, String firstName, String lastName, String email, String timezone, String accountName, short accountType, Long domainId, String networkDomain, UserAccount createUserAccount(String userName, String password, String firstName, String lastName, String email, String timezone, String accountName, short accountType, Long domainId, String networkDomain,
Map<String, String> details); Map<String, String> details, String accountUUID, String userUUID, Integer regionId);
/**
* Deletes a user by userId
*
* @param accountId
* - id of the account do delete
*
* @return true if delete was successful, false otherwise
*/
boolean deleteUserAccount(long accountId);
/**
* Disables a user by userId
*
* @param userId
* - the userId
* @return UserAccount object
*/
UserAccount disableUser(long userId);
/**
* Enables a user
*
* @param userId
* - the userId
* @return UserAccount object
*/
UserAccount enableUser(long userId);
/** /**
* Locks a user by userId. A locked user cannot access the API, but will still have running VMs/IP addresses * Locks a user by userId. A locked user cannot access the API, but will still have running VMs/IP addresses
@ -102,71 +73,11 @@ public interface AccountService {
*/ */
UserAccount lockUser(long userId); UserAccount lockUser(long userId);
/**
* Update a user by userId
*
* @param userId
* @return UserAccount object
*/
UserAccount updateUser(UpdateUserCmd cmd);
/**
* Disables an account by accountName and domainId
*
* @param accountName
* TODO
* @param domainId
* TODO
* @param accountId
* @param disabled
* account if success
* @return true if disable was successful, false otherwise
*/
Account disableAccount(String accountName, Long domainId, Long accountId) throws ConcurrentOperationException, ResourceUnavailableException;
/**
* Enables an account by accountId
*
* @param accountName
* - the enableAccount command defining the accountId to be deleted.
* @param domainId
* TODO
* @param accountId
* @return account object
*/
Account enableAccount(String accountName, Long domainId, Long accountId);
/**
* Locks an account by accountId. A locked account cannot access the API, but will still have running VMs/IP
* addresses
* allocated/etc.
*
* @param accountName
* - the LockAccount command defining the accountId to be locked.
* @param domainId
* TODO
* @param accountId
* @return account object
*/
Account lockAccount(String accountName, Long domainId, Long accountId);
/**
* Updates an account name
*
* @param cmd
* - the parameter containing accountId
* @return updated account object
*/
Account updateAccount(UpdateAccountCmd cmd);
Account getSystemAccount(); Account getSystemAccount();
User getSystemUser(); User getSystemUser();
User createUser(String userName, String password, String firstName, String lastName, String email, String timeZone, String accountName, Long domainId); User createUser(String userName, String password, String firstName, String lastName, String email, String timeZone, String accountName, Long domainId, String userUUID, Integer regionId);
boolean deleteUser(DeleteUserCmd deleteUserCmd);
boolean isAdmin(short accountType); boolean isAdmin(short accountType);

View File

@ -20,13 +20,14 @@ import java.util.List;
import org.apache.cloudstack.api.command.admin.domain.ListDomainChildrenCmd; import org.apache.cloudstack.api.command.admin.domain.ListDomainChildrenCmd;
import org.apache.cloudstack.api.command.admin.domain.ListDomainsCmd; import org.apache.cloudstack.api.command.admin.domain.ListDomainsCmd;
import com.cloud.domain.Domain; import com.cloud.domain.Domain;
import com.cloud.exception.PermissionDeniedException; import com.cloud.exception.PermissionDeniedException;
import com.cloud.utils.Pair; import com.cloud.utils.Pair;
public interface DomainService { public interface DomainService {
Domain createDomain(String name, Long parentId, String networkDomain); Domain createDomain(String name, Long parentId, String networkDomain, String domainUUID, Integer regionId);
Domain getDomain(long id); Domain getDomain(long id);
@ -40,12 +41,19 @@ public interface DomainService {
*/ */
boolean isChildDomain(Long parentId, Long childId); boolean isChildDomain(Long parentId, Long childId);
boolean deleteDomain(long domainId, Boolean cleanup);
Pair<List<? extends Domain>, Integer> searchForDomains(ListDomainsCmd cmd) Pair<List<? extends Domain>, Integer> searchForDomains(ListDomainsCmd cmd)
throws PermissionDeniedException; throws PermissionDeniedException;
Pair<List<? extends Domain>, Integer> searchForDomainChildren(ListDomainChildrenCmd cmd) Pair<List<? extends Domain>, Integer> searchForDomainChildren(ListDomainChildrenCmd cmd)
throws PermissionDeniedException; throws PermissionDeniedException;
/**
* find the domain by its path
*
* @param domainPath
* the path to use to lookup a domain
* @return domainVO the domain with the matching path, or null if no domain with the given path exists
*/
Domain findDomainByPath(String domainPath);
} }

View File

@ -16,10 +16,10 @@
// under the License. // under the License.
package com.cloud.user; package com.cloud.user;
import org.apache.cloudstack.api.InternalIdentity;
import java.util.Date; import java.util.Date;
import org.apache.cloudstack.api.InternalIdentity;
public interface User extends OwnedBy, InternalIdentity { public interface User extends OwnedBy, InternalIdentity {
public static final long UID_SYSTEM = 1; public static final long UID_SYSTEM = 1;
@ -73,4 +73,5 @@ public interface User extends OwnedBy, InternalIdentity {
boolean isRegistered(); boolean isRegistered();
public int getRegionId();
} }

View File

@ -16,10 +16,10 @@
// under the License. // under the License.
package com.cloud.user; package com.cloud.user;
import org.apache.cloudstack.api.InternalIdentity;
import java.util.Date; import java.util.Date;
import org.apache.cloudstack.api.InternalIdentity;
public interface UserAccount extends InternalIdentity { public interface UserAccount extends InternalIdentity {
long getId(); long getId();

View File

@ -16,14 +16,11 @@
// under the License. // under the License.
package com.cloud.user; package com.cloud.user;
import com.cloud.server.ManagementService; import com.cloud.utils.component.ComponentContext;
import com.cloud.utils.component.ComponentLocator; import javax.inject.Inject;
public class UserContext { public class UserContext {
private static ThreadLocal<UserContext> s_currentContext = new ThreadLocal<UserContext>(); private static ThreadLocal<UserContext> s_currentContext = new ThreadLocal<UserContext>();
private static final ComponentLocator locator = ComponentLocator.getLocator(ManagementService.Name);
private static final AccountService _accountMgr = locator.getManager(AccountService.class);
private long userId; private long userId;
private String sessionId; private String sessionId;
@ -31,10 +28,9 @@ public class UserContext {
private long startEventId = 0; private long startEventId = 0;
private long accountId; private long accountId;
private String eventDetails; private String eventDetails;
private boolean apiServer; private boolean apiServer;
private static UserContext s_adminContext = new UserContext(_accountMgr.getSystemUser().getId(), _accountMgr.getSystemAccount(), null, false); @Inject private AccountService _accountMgr = null;
public UserContext() { public UserContext() {
} }
@ -51,6 +47,9 @@ public class UserContext {
} }
public User getCallerUser() { public User getCallerUser() {
if (_accountMgr == null) {
_accountMgr = ComponentContext.getComponent(AccountService.class);
}
return _accountMgr.getActiveUser(userId); return _accountMgr.getActiveUser(userId);
} }
@ -90,10 +89,10 @@ public class UserContext {
// however, there are many places that run background jobs assume the system context. // however, there are many places that run background jobs assume the system context.
// //
// If there is a security concern, all entry points from user (including the front end that takes HTTP // If there is a security concern, all entry points from user (including the front end that takes HTTP
// request in and // request in and
// the core async-job manager that runs commands from user) have explicitly setup the UserContext. // the core async-job manager that runs commands from user) have explicitly setup the UserContext.
// //
return s_adminContext; return UserContextInitializer.getInstance().getAdminContext();
} }
return context; return context;
} }

View File

@ -0,0 +1,40 @@
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
package com.cloud.user;
import javax.inject.Inject;
import org.springframework.stereotype.Component;
@Component
public class UserContextInitializer {
@Inject private AccountService _accountMgr;
private static UserContextInitializer s_instance;
public UserContextInitializer() {
s_instance = this;
}
public static UserContextInitializer getInstance() {
return s_instance;
}
public UserContext getAdminContext() {
return new UserContext(_accountMgr.getSystemUser().getId(), _accountMgr.getSystemAccount(), null, false);
}
}

View File

@ -17,6 +17,7 @@
package com.cloud.uservm; package com.cloud.uservm;
import org.apache.cloudstack.acl.ControlledEntity; import org.apache.cloudstack.acl.ControlledEntity;
import com.cloud.vm.VirtualMachine; import com.cloud.vm.VirtualMachine;
/** /**

View File

@ -34,6 +34,7 @@ public class DiskProfile {
private long diskOfferingId; private long diskOfferingId;
private Long templateId; private Long templateId;
private long volumeId; private long volumeId;
private String path;
private HypervisorType hyperType; private HypervisorType hyperType;
@ -57,6 +58,10 @@ public class DiskProfile {
this.hyperType = hyperType; this.hyperType = hyperType;
} }
public DiskProfile(DiskProfile dp) {
}
/** /**
* @return size of the disk requested in bytes. * @return size of the disk requested in bytes.
*/ */
@ -137,4 +142,16 @@ public class DiskProfile {
public HypervisorType getHypersorType() { public HypervisorType getHypersorType() {
return this.hyperType; return this.hyperType;
} }
public void setPath(String path) {
this.path = path;
}
public String getPath() {
return this.path;
}
public void setSize(long size) {
this.size = size;
}
} }

View File

@ -21,12 +21,13 @@ import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import org.apache.cloudstack.api.Identity;
import org.apache.cloudstack.api.InternalIdentity;
import com.cloud.network.Networks.AddressFormat; import com.cloud.network.Networks.AddressFormat;
import com.cloud.network.Networks.Mode; import com.cloud.network.Networks.Mode;
import com.cloud.utils.fsm.FiniteState; import com.cloud.utils.fsm.FiniteState;
import com.cloud.utils.fsm.StateMachine; import com.cloud.utils.fsm.StateMachine;
import org.apache.cloudstack.api.Identity;
import org.apache.cloudstack.api.InternalIdentity;
/** /**
* Nic represents one nic on the VM. * Nic represents one nic on the VM.
@ -144,4 +145,10 @@ public interface Nic extends Identity, InternalIdentity {
VirtualMachine.Type getVmType(); VirtualMachine.Type getVmType();
AddressFormat getAddressFormat(); AddressFormat getAddressFormat();
String getIp6Gateway();
String getIp6Cidr();
String getIp6Address();
} }

Some files were not shown because too many files have changed in this diff Show More