mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
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:
commit
a224287403
2
.gitignore
vendored
2
.gitignore
vendored
@ -62,7 +62,6 @@ tools/cli/build/
|
||||
awsapi/modules/*
|
||||
!.gitignore
|
||||
.classpath
|
||||
.project
|
||||
.settings.xml
|
||||
.settings/
|
||||
db.properties.override
|
||||
@ -73,4 +72,5 @@ docs/tmp
|
||||
docs/publish
|
||||
docs/runbook/tmp
|
||||
docs/runbook/publish
|
||||
.project
|
||||
Gemfile.lock
|
||||
|
||||
@ -53,10 +53,7 @@ import com.cloud.utils.ProcessUtil;
|
||||
import com.cloud.utils.PropertiesUtil;
|
||||
import com.cloud.utils.backoff.BackoffAlgorithm;
|
||||
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.net.MacAddress;
|
||||
import com.cloud.utils.script.Script;
|
||||
|
||||
public class AgentShell implements IAgentShell {
|
||||
@ -146,6 +143,7 @@ public class AgentShell implements IAgentShell {
|
||||
return _guid;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> getCmdLineProperties() {
|
||||
return _cmdLineProperties;
|
||||
}
|
||||
@ -378,8 +376,6 @@ public class AgentShell implements IAgentShell {
|
||||
|
||||
public void init(String[] args) throws ConfigurationException {
|
||||
|
||||
final ComponentLocator locator = ComponentLocator.getLocator("agent");
|
||||
|
||||
final Class<?> c = this.getClass();
|
||||
_version = c.getPackage().getImplementationVersion();
|
||||
if (_version == null) {
|
||||
@ -396,12 +392,9 @@ public class AgentShell implements IAgentShell {
|
||||
s_logger.debug("Found property: " + property);
|
||||
}
|
||||
|
||||
_storage = locator.getManager(StorageComponent.class);
|
||||
if (_storage == null) {
|
||||
s_logger.info("Defaulting to using properties file for storage");
|
||||
_storage = new PropertiesStorage();
|
||||
_storage.configure("Storage", new HashMap<String, Object>());
|
||||
}
|
||||
s_logger.info("Defaulting to using properties file for storage");
|
||||
_storage = new PropertiesStorage();
|
||||
_storage.configure("Storage", new HashMap<String, Object>());
|
||||
|
||||
// merge with properties from command line to let resource access
|
||||
// command line parameters
|
||||
@ -410,22 +403,9 @@ public class AgentShell implements IAgentShell {
|
||||
_properties.put(cmdLineProp.getKey(), cmdLineProp.getValue());
|
||||
}
|
||||
|
||||
final Adapters adapters = locator.getAdapters(BackoffAlgorithm.class);
|
||||
final Enumeration en = adapters.enumeration();
|
||||
while (en.hasMoreElements()) {
|
||||
_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>());
|
||||
}
|
||||
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 {
|
||||
@ -469,6 +449,7 @@ public class AgentShell implements IAgentShell {
|
||||
openPortWithIptables(port);
|
||||
|
||||
_consoleProxyMain = new Thread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
Class<?> consoleProxyClazz = Class.forName("com.cloud.consoleproxy.ConsoleProxy");
|
||||
@ -522,7 +503,7 @@ public class AgentShell implements IAgentShell {
|
||||
} catch (final SecurityException e) {
|
||||
throw new ConfigurationException(
|
||||
"Security excetion when loading resource: " + name
|
||||
+ " due to: " + e.toString());
|
||||
+ " due to: " + e.toString());
|
||||
} catch (final NoSuchMethodException e) {
|
||||
throw new ConfigurationException(
|
||||
"Method not found excetion when loading resource: "
|
||||
@ -534,7 +515,7 @@ public class AgentShell implements IAgentShell {
|
||||
} catch (final InstantiationException e) {
|
||||
throw new ConfigurationException(
|
||||
"Instantiation excetion when loading resource: " + name
|
||||
+ " due to: " + e.toString());
|
||||
+ " due to: " + e.toString());
|
||||
} catch (final IllegalAccessException e) {
|
||||
throw new ConfigurationException(
|
||||
"Illegal access exception when loading resource: "
|
||||
|
||||
@ -23,7 +23,6 @@ import java.io.IOException;
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Enumeration;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@ -41,19 +40,15 @@ import com.cloud.agent.dao.impl.PropertiesStorage;
|
||||
import com.cloud.agent.transport.Request;
|
||||
import com.cloud.resource.ServerResource;
|
||||
import com.cloud.utils.NumbersUtil;
|
||||
import com.cloud.utils.ProcessUtil;
|
||||
import com.cloud.utils.PropertiesUtil;
|
||||
import com.cloud.utils.backoff.BackoffAlgorithm;
|
||||
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.net.MacAddress;
|
||||
import com.cloud.utils.nio.HandlerFactory;
|
||||
import com.cloud.utils.nio.Link;
|
||||
import com.cloud.utils.nio.NioServer;
|
||||
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
|
||||
@ -61,7 +56,7 @@ import com.cloud.utils.nio.Task.Type;
|
||||
|
||||
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 Map<String, Object> _cmdLineProperties = new HashMap<String, Object>();
|
||||
private StorageComponent _storage;
|
||||
@ -76,112 +71,112 @@ public class VmmAgentShell implements IAgentShell, HandlerFactory {
|
||||
private int _proxyPort;
|
||||
private int _workers;
|
||||
private String _guid;
|
||||
static private NioServer _connection;
|
||||
static private int _listenerPort=9000;
|
||||
static private NioServer _connection;
|
||||
static private int _listenerPort=9000;
|
||||
private int _nextAgentId = 1;
|
||||
private volatile boolean _exit = false;
|
||||
private int _pingRetries;
|
||||
private Thread _consoleProxyMain = null;
|
||||
private final Thread _consoleProxyMain = null;
|
||||
private final List<Agent> _agents = new ArrayList<Agent>();
|
||||
|
||||
public VmmAgentShell() {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Properties getProperties() {
|
||||
return _properties;
|
||||
return _properties;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public BackoffAlgorithm getBackoffAlgorithm() {
|
||||
return _backoff;
|
||||
return _backoff;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getPingRetries() {
|
||||
return _pingRetries;
|
||||
return _pingRetries;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String getZone() {
|
||||
return _zone;
|
||||
return _zone;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String getPod() {
|
||||
return _pod;
|
||||
return _pod;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String getHost() {
|
||||
return _host;
|
||||
return _host;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String getPrivateIp() {
|
||||
return _privateIp;
|
||||
return _privateIp;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getPort() {
|
||||
return _port;
|
||||
return _port;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getProxyPort() {
|
||||
return _proxyPort;
|
||||
return _proxyPort;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getWorkers() {
|
||||
return _workers;
|
||||
return _workers;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String getGuid() {
|
||||
return _guid;
|
||||
return _guid;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void upgradeAgent(String url) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
@Override
|
||||
public void upgradeAgent(String url) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
@Override
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getVersion() {
|
||||
return _version;
|
||||
return _version;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> getCmdLineProperties() {
|
||||
// TODO Auto-generated method stub
|
||||
return _cmdLineProperties;
|
||||
}
|
||||
|
||||
public String getProperty(String prefix, String name) {
|
||||
if(prefix != null)
|
||||
return _properties.getProperty(prefix + "." + name);
|
||||
|
||||
return _properties.getProperty(name);
|
||||
@Override
|
||||
public Map<String, Object> getCmdLineProperties() {
|
||||
// TODO Auto-generated method stub
|
||||
return _cmdLineProperties;
|
||||
}
|
||||
|
||||
@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);
|
||||
}
|
||||
public String getProperty(String prefix, String name) {
|
||||
if(prefix != null)
|
||||
return _properties.getProperty(prefix + "." + name);
|
||||
|
||||
private void loadProperties() throws ConfigurationException {
|
||||
return _properties.getProperty(name);
|
||||
}
|
||||
|
||||
@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");
|
||||
if (file == null) {
|
||||
throw new ConfigurationException("Unable to find agent.properties.");
|
||||
@ -197,7 +192,7 @@ public class VmmAgentShell implements IAgentShell, HandlerFactory {
|
||||
throw new CloudRuntimeException("IOException in reading " + file.getAbsolutePath(), ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
protected boolean parseCommand(final String[] args) throws ConfigurationException {
|
||||
String host = null;
|
||||
String workers = null;
|
||||
@ -211,7 +206,7 @@ public class VmmAgentShell implements IAgentShell, HandlerFactory {
|
||||
System.out.println("Invalid Parameter: " + args[i]);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
// save command line properties
|
||||
_cmdLineProperties.put(tokens[0], tokens[1]);
|
||||
|
||||
@ -222,14 +217,14 @@ public class VmmAgentShell implements IAgentShell, HandlerFactory {
|
||||
} else if (tokens[0].equalsIgnoreCase("host")) {
|
||||
host = tokens[1];
|
||||
} else if(tokens[0].equalsIgnoreCase("zone")) {
|
||||
zone = tokens[1];
|
||||
zone = tokens[1];
|
||||
} else if(tokens[0].equalsIgnoreCase("pod")) {
|
||||
pod = tokens[1];
|
||||
pod = tokens[1];
|
||||
} else if(tokens[0].equalsIgnoreCase("guid")) {
|
||||
guid = tokens[1];
|
||||
} else if(tokens[0].equalsIgnoreCase("eth1ip")) {
|
||||
_privateIp = tokens[1];
|
||||
}
|
||||
guid = tokens[1];
|
||||
} else if(tokens[0].equalsIgnoreCase("eth1ip")) {
|
||||
_privateIp = tokens[1];
|
||||
}
|
||||
}
|
||||
|
||||
if (port == null) {
|
||||
@ -237,7 +232,7 @@ public class VmmAgentShell implements IAgentShell, HandlerFactory {
|
||||
}
|
||||
|
||||
_port = NumbersUtil.parseInt(port, 8250);
|
||||
|
||||
|
||||
_proxyPort = NumbersUtil.parseInt(getProperty(null, "consoleproxy.httpListenPort"), 443);
|
||||
|
||||
if (workers == null) {
|
||||
@ -254,42 +249,42 @@ public class VmmAgentShell implements IAgentShell, HandlerFactory {
|
||||
host = "localhost";
|
||||
}
|
||||
_host = host;
|
||||
|
||||
|
||||
if(zone != null)
|
||||
_zone = zone;
|
||||
_zone = zone;
|
||||
else
|
||||
_zone = getProperty(null, "zone");
|
||||
_zone = getProperty(null, "zone");
|
||||
if (_zone == null || (_zone.startsWith("@") && _zone.endsWith("@"))) {
|
||||
_zone = "default";
|
||||
_zone = "default";
|
||||
}
|
||||
|
||||
if(pod != null)
|
||||
_pod = pod;
|
||||
_pod = pod;
|
||||
else
|
||||
_pod = getProperty(null, "pod");
|
||||
_pod = getProperty(null, "pod");
|
||||
if (_pod == null || (_pod.startsWith("@") && _pod.endsWith("@"))) {
|
||||
_pod = "default";
|
||||
_pod = "default";
|
||||
}
|
||||
|
||||
if (_host == null || (_host.startsWith("@") && _host.endsWith("@"))) {
|
||||
throw new ConfigurationException("Host is not configured correctly: " + _host);
|
||||
}
|
||||
|
||||
|
||||
final String retries = getProperty(null, "ping.retries");
|
||||
_pingRetries = NumbersUtil.parseInt(retries, 5);
|
||||
|
||||
String value = getProperty(null, "developer");
|
||||
boolean developer = Boolean.parseBoolean(value);
|
||||
|
||||
|
||||
if(guid != null)
|
||||
_guid = guid;
|
||||
_guid = guid;
|
||||
else
|
||||
_guid = getProperty(null, "guid");
|
||||
_guid = getProperty(null, "guid");
|
||||
if (_guid == null) {
|
||||
if (!developer) {
|
||||
throw new ConfigurationException("Unable to find the guid");
|
||||
}
|
||||
_guid = MacAddress.getMacAddress().toString(":");
|
||||
if (!developer) {
|
||||
throw new ConfigurationException("Unable to find the guid");
|
||||
}
|
||||
_guid = MacAddress.getMacAddress().toString(":");
|
||||
}
|
||||
|
||||
return true;
|
||||
@ -303,63 +298,46 @@ public class VmmAgentShell implements IAgentShell, HandlerFactory {
|
||||
}
|
||||
s_logger.trace("Launching agent based on type=" + typeInfo);
|
||||
}
|
||||
|
||||
|
||||
private void launchAgent() throws ConfigurationException {
|
||||
String resourceClassNames = getProperty(null, "resource");
|
||||
s_logger.trace("resource=" + resourceClassNames);
|
||||
if(resourceClassNames != null) {
|
||||
launchAgentFromClassInfo(resourceClassNames);
|
||||
return;
|
||||
launchAgentFromClassInfo(resourceClassNames);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
launchAgentFromTypeInfo();
|
||||
}
|
||||
|
||||
|
||||
private void init(String[] args) throws ConfigurationException{
|
||||
|
||||
final ComponentLocator locator = ComponentLocator.getLocator("agent");
|
||||
|
||||
|
||||
final Class<?> c = this.getClass();
|
||||
_version = c.getPackage().getImplementationVersion();
|
||||
if (_version == null) {
|
||||
throw new CloudRuntimeException("Unable to find the implementation version of this agent");
|
||||
}
|
||||
s_logger.info("Implementation Version is " + _version);
|
||||
|
||||
|
||||
parseCommand(args);
|
||||
|
||||
_storage = locator.getManager(StorageComponent.class);
|
||||
if (_storage == null) {
|
||||
s_logger.info("Defaulting to using properties file for storage");
|
||||
_storage = new PropertiesStorage();
|
||||
_storage.configure("Storage", new HashMap<String, Object>());
|
||||
}
|
||||
|
||||
s_logger.info("Defaulting to using properties file for storage");
|
||||
_storage = new PropertiesStorage();
|
||||
_storage.configure("Storage", new HashMap<String, Object>());
|
||||
|
||||
// merge with properties from command line to let resource access command line parameters
|
||||
for(Map.Entry<String, Object> cmdLineProp : getCmdLineProperties().entrySet()) {
|
||||
_properties.put(cmdLineProp.getKey(), cmdLineProp.getValue());
|
||||
}
|
||||
|
||||
final Adapters adapters = locator.getAdapters(BackoffAlgorithm.class);
|
||||
final Enumeration en = adapters.enumeration();
|
||||
while (en.hasMoreElements()) {
|
||||
_backoff = (BackoffAlgorithm)en.nextElement();
|
||||
break;
|
||||
}
|
||||
if (en.hasMoreElements()) {
|
||||
s_logger.info("More than one backoff algorithm specified. Using the first one ");
|
||||
_properties.put(cmdLineProp.getKey(), cmdLineProp.getValue());
|
||||
}
|
||||
|
||||
if (_backoff == null) {
|
||||
s_logger.info("Defaulting to the constant time backoff algorithm");
|
||||
_backoff = new ConstantTimeBackoff();
|
||||
_backoff.configure("ConstantTimeBackoff", new HashMap<String, Object>());
|
||||
}
|
||||
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 {
|
||||
String[] names = resourceClassNames.split("\\|");
|
||||
for(String name: names) {
|
||||
String[] names = resourceClassNames.split("\\|");
|
||||
for(String name: names) {
|
||||
Class<?> impl;
|
||||
try {
|
||||
impl = Class.forName(name);
|
||||
@ -368,41 +346,41 @@ public class VmmAgentShell implements IAgentShell, HandlerFactory {
|
||||
ServerResource resource = (ServerResource)constructor.newInstance();
|
||||
launchAgent(getNextAgentId(), resource);
|
||||
} catch (final ClassNotFoundException e) {
|
||||
throw new ConfigurationException("Resource class not found: " + name);
|
||||
throw new ConfigurationException("Resource class not found: " + name);
|
||||
} 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) {
|
||||
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) {
|
||||
throw new ConfigurationException("Illegal argument excetion when loading resource: " + name);
|
||||
throw new ConfigurationException("Illegal argument excetion when loading resource: " + name);
|
||||
} 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) {
|
||||
throw new ConfigurationException("Illegal access exception when loading resource: " + name);
|
||||
throw new ConfigurationException("Illegal access exception when loading resource: " + name);
|
||||
} 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 {
|
||||
// we don't track agent after it is launched for now
|
||||
Agent agent = new Agent(this, localAgentId, resource);
|
||||
_agents.add(agent);
|
||||
agent.start();
|
||||
// we don't track agent after it is launched for now
|
||||
Agent agent = new Agent(this, localAgentId, resource);
|
||||
_agents.add(agent);
|
||||
agent.start();
|
||||
}
|
||||
|
||||
public synchronized int getNextAgentId() {
|
||||
return _nextAgentId++;
|
||||
return _nextAgentId++;
|
||||
}
|
||||
|
||||
private void run(String[] args) {
|
||||
|
||||
try {
|
||||
|
||||
private void run(String[] args) {
|
||||
|
||||
try {
|
||||
System.setProperty("java.net.preferIPv4Stack","true");
|
||||
loadProperties();
|
||||
init(args);
|
||||
|
||||
loadProperties();
|
||||
init(args);
|
||||
|
||||
String instance = getProperty(null, "instance");
|
||||
if (instance == null) {
|
||||
instance = "";
|
||||
@ -413,22 +391,22 @@ public class VmmAgentShell implements IAgentShell, HandlerFactory {
|
||||
// TODO need to do this check. For Agentshell running on windows needs different approach
|
||||
//final String run = "agent." + instance + "pid";
|
||||
//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
|
||||
// corresponding to multiple clusters but running on a SCVMM host
|
||||
|
||||
|
||||
// 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
|
||||
|
||||
// now listen for bootstrap request from the management server and launch agents
|
||||
_connection = new NioServer("VmmAgentShell", _listenerPort, 1, this);
|
||||
_connection.start();
|
||||
s_logger.info("SCVMM agent is listening on port " +_listenerPort + " for bootstrap command from management server");
|
||||
while(_connection.isRunning());
|
||||
// now listen for bootstrap request from the management server and launch agents
|
||||
_connection = new NioServer("VmmAgentShell", _listenerPort, 1, this);
|
||||
_connection.start();
|
||||
s_logger.info("SCVMM agent is listening on port " +_listenerPort + " for bootstrap command from management server");
|
||||
while(_connection.isRunning());
|
||||
} catch(final ConfigurationException e) {
|
||||
s_logger.error("Unable to start agent: " + e.getMessage());
|
||||
System.out.println("Unable to start agent: " + e.getMessage());
|
||||
@ -438,89 +416,89 @@ public class VmmAgentShell implements IAgentShell, HandlerFactory {
|
||||
System.out.println("Unable to start agent: " + e.getMessage());
|
||||
System.exit(ExitStatus.Error.value());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Task create(com.cloud.utils.nio.Task.Type type, Link link,
|
||||
byte[] data) {
|
||||
return new AgentBootStrapHandler(type, link, data);
|
||||
}
|
||||
@Override
|
||||
public Task create(com.cloud.utils.nio.Task.Type type, Link link,
|
||||
byte[] data) {
|
||||
return new AgentBootStrapHandler(type, link, data);
|
||||
}
|
||||
|
||||
public void stop() {
|
||||
_exit = true;
|
||||
if(_consoleProxyMain != null) {
|
||||
_consoleProxyMain.interrupt();
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
VmmAgentShell shell = new VmmAgentShell();
|
||||
Runtime.getRuntime().addShutdownHook(new ShutdownThread(shell));
|
||||
shell.run(args);
|
||||
}
|
||||
public void stop() {
|
||||
_exit = true;
|
||||
if(_consoleProxyMain != null) {
|
||||
_consoleProxyMain.interrupt();
|
||||
}
|
||||
}
|
||||
|
||||
// class to handle the bootstrap command from the management server
|
||||
private class AgentBootStrapHandler extends Task {
|
||||
public static void main(String[] args) {
|
||||
|
||||
public AgentBootStrapHandler(Task.Type type, Link link, byte[] data) {
|
||||
super(type, link, data);
|
||||
}
|
||||
VmmAgentShell shell = new VmmAgentShell();
|
||||
Runtime.getRuntime().addShutdownHook(new ShutdownThread(shell));
|
||||
shell.run(args);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doTask(Task task) throws Exception {
|
||||
final Type type = task.getType();
|
||||
s_logger.info("recieved task of type "+ type.toString() +" to handle in BootStrapTakHandler");
|
||||
if (type == Task.Type.DATA)
|
||||
{
|
||||
final byte[] data = task.getData();
|
||||
final Request request = Request.parse(data);
|
||||
final Command cmd = request.getCommand();
|
||||
|
||||
if (cmd instanceof StartupVMMAgentCommand) {
|
||||
// class to handle the bootstrap command from the management server
|
||||
private class AgentBootStrapHandler extends Task {
|
||||
|
||||
StartupVMMAgentCommand vmmCmd = (StartupVMMAgentCommand) cmd;
|
||||
public AgentBootStrapHandler(Task.Type type, Link link, byte[] data) {
|
||||
super(type, link, data);
|
||||
}
|
||||
|
||||
_zone = Long.toString(vmmCmd.getDataCenter());
|
||||
_cmdLineProperties.put("zone", _zone);
|
||||
@Override
|
||||
protected void doTask(Task task) throws Exception {
|
||||
final Type type = task.getType();
|
||||
s_logger.info("recieved task of type "+ type.toString() +" to handle in BootStrapTakHandler");
|
||||
if (type == Task.Type.DATA)
|
||||
{
|
||||
final byte[] data = task.getData();
|
||||
final Request request = Request.parse(data);
|
||||
final Command cmd = request.getCommand();
|
||||
|
||||
_pod = Long.toString(vmmCmd.getPod());
|
||||
_cmdLineProperties.put("pod", _pod);
|
||||
if (cmd instanceof StartupVMMAgentCommand) {
|
||||
|
||||
_cluster = vmmCmd.getClusterName();
|
||||
_cmdLineProperties.put("cluster", _cluster);
|
||||
StartupVMMAgentCommand vmmCmd = (StartupVMMAgentCommand) cmd;
|
||||
|
||||
_guid = vmmCmd.getGuid();
|
||||
_cmdLineProperties.put("guid", _guid);
|
||||
_zone = Long.toString(vmmCmd.getDataCenter());
|
||||
_cmdLineProperties.put("zone", _zone);
|
||||
|
||||
_host = vmmCmd.getManagementServerIP();
|
||||
_port = NumbersUtil.parseInt(vmmCmd.getport(), 8250);
|
||||
_pod = Long.toString(vmmCmd.getPod());
|
||||
_cmdLineProperties.put("pod", _pod);
|
||||
|
||||
s_logger.info("Recieved boot strap command from management server with parameters " +
|
||||
" Zone:"+ _zone + " "+
|
||||
" Cluster:"+ _cluster + " "+
|
||||
" pod:"+_pod + " "+
|
||||
" host:"+ _host +" "+
|
||||
" port:"+_port);
|
||||
_cluster = vmmCmd.getClusterName();
|
||||
_cmdLineProperties.put("cluster", _cluster);
|
||||
|
||||
launchAgentFromClassInfo("com.cloud.hypervisor.hyperv.resource.HypervResource");
|
||||
|
||||
// TODO: persist the info in agent.properties for agent restarts
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
_guid = vmmCmd.getGuid();
|
||||
_cmdLineProperties.put("guid", _guid);
|
||||
|
||||
_host = vmmCmd.getManagementServerIP();
|
||||
_port = NumbersUtil.parseInt(vmmCmd.getport(), 8250);
|
||||
|
||||
s_logger.info("Recieved boot strap command from management server with parameters " +
|
||||
" Zone:"+ _zone + " "+
|
||||
" Cluster:"+ _cluster + " "+
|
||||
" pod:"+_pod + " "+
|
||||
" host:"+ _host +" "+
|
||||
" port:"+_port);
|
||||
|
||||
launchAgentFromClassInfo("com.cloud.hypervisor.hyperv.resource.HypervResource");
|
||||
|
||||
// TODO: persist the info in agent.properties for agent restarts
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static class ShutdownThread extends Thread {
|
||||
VmmAgentShell _shell;
|
||||
VmmAgentShell _shell;
|
||||
public ShutdownThread(VmmAgentShell shell) {
|
||||
this._shell = shell;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
_shell.stop();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
@ -127,4 +127,34 @@ public class PropertiesStorage implements StorageComponent {
|
||||
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
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -139,4 +139,34 @@ public class FakeDhcpSnooper implements DhcpSnooper {
|
||||
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
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -224,4 +224,34 @@ public class DummyResource implements ServerResource {
|
||||
public void setAgentControl(IAgentControl 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
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -77,7 +77,7 @@ import com.google.gson.Gson;
|
||||
* server.
|
||||
*
|
||||
*/
|
||||
public class ConsoleProxyResource extends ServerResourceBase implements
|
||||
public abstract class ConsoleProxyResource extends ServerResourceBase implements
|
||||
ServerResource {
|
||||
static final Logger s_logger = Logger.getLogger(ConsoleProxyResource.class);
|
||||
|
||||
|
||||
@ -19,24 +19,23 @@ package com.cloud.agent;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import com.cloud.agent.AgentShell;
|
||||
import com.cloud.utils.testcase.Log4jEnabledTestCase;
|
||||
|
||||
public class TestAgentShell extends Log4jEnabledTestCase {
|
||||
public class TestAgentShell extends TestCase {
|
||||
protected final static Logger s_logger = Logger.getLogger(TestAgentShell.class);
|
||||
|
||||
|
||||
public void testWget() {
|
||||
File file = null;
|
||||
try {
|
||||
file = File.createTempFile("wget", ".html");
|
||||
AgentShell.wget("http://www.google.com/", file);
|
||||
|
||||
|
||||
if (s_logger.isDebugEnabled()) {
|
||||
s_logger.debug("file saved to " + file.getAbsolutePath());
|
||||
}
|
||||
|
||||
|
||||
} catch (final IOException e) {
|
||||
s_logger.warn("Exception while downloading agent update package, ", e);
|
||||
}
|
||||
|
||||
32
api/src/com/cloud/agent/api/ScheduleHostScanTaskCommand.java
Executable file
32
api/src/com/cloud/agent/api/ScheduleHostScanTaskCommand.java
Executable 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
|
||||
}
|
||||
}
|
||||
@ -17,8 +17,8 @@
|
||||
package com.cloud.agent.api.proxy;
|
||||
|
||||
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.Log4jLevel;
|
||||
|
||||
public class StartConsoleProxyAgentHttpHandlerCommand extends Command {
|
||||
@LogLevel(Log4jLevel.Off)
|
||||
|
||||
@ -28,7 +28,9 @@ public class DhcpEntryCommand extends NetworkElementCommand {
|
||||
String defaultRouter;
|
||||
String staticRoutes;
|
||||
String defaultDns;
|
||||
|
||||
String vmIp6Address;
|
||||
String ip6Gateway;
|
||||
String duid;
|
||||
|
||||
protected DhcpEntryCommand() {
|
||||
|
||||
@ -39,14 +41,15 @@ public class DhcpEntryCommand extends NetworkElementCommand {
|
||||
return true;
|
||||
}
|
||||
|
||||
public DhcpEntryCommand(String vmMac, String vmIpAddress, String vmName) {
|
||||
public DhcpEntryCommand(String vmMac, String vmIpAddress, String vmName, String vmIp6Address) {
|
||||
this.vmMac = vmMac;
|
||||
this.vmIpAddress = vmIpAddress;
|
||||
this.vmName = vmName;
|
||||
this.vmIp6Address = vmIp6Address;
|
||||
}
|
||||
|
||||
public DhcpEntryCommand(String vmMac, String vmIpAddress, String vmName, String dns, String gateway) {
|
||||
this(vmMac, vmIpAddress, vmName);
|
||||
public DhcpEntryCommand(String vmMac, String vmIpAddress, String vmName, String vmIp6Address, String dns, String gateway, String ip6Gateway) {
|
||||
this(vmMac, vmIpAddress, vmName, vmIp6Address);
|
||||
this.dns = dns;
|
||||
this.gateway = gateway;
|
||||
}
|
||||
@ -102,4 +105,28 @@ public class DhcpEntryCommand extends NetworkElementCommand {
|
||||
public void setDefaultDns(String 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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -16,7 +16,6 @@
|
||||
// under the License.
|
||||
package com.cloud.agent.api.storage;
|
||||
|
||||
import com.cloud.agent.api.Command;
|
||||
|
||||
public class CreateEntityDownloadURLCommand extends AbstractDownloadCommand {
|
||||
|
||||
|
||||
@ -18,11 +18,12 @@ package com.cloud.agent.api.storage;
|
||||
|
||||
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 com.cloud.storage.Storage.ImageFormat;
|
||||
import com.cloud.storage.Volume;
|
||||
import com.cloud.template.VirtualMachineTemplate;
|
||||
|
||||
|
||||
public class DownloadCommand extends AbstractDownloadCommand implements InternalIdentity {
|
||||
public static class PasswordAuth {
|
||||
|
||||
@ -19,7 +19,6 @@ package com.cloud.agent.api.storage;
|
||||
import java.util.Map;
|
||||
|
||||
import com.cloud.agent.api.Answer;
|
||||
|
||||
import com.cloud.storage.template.TemplateInfo;
|
||||
|
||||
public class ListTemplateAnswer extends Answer {
|
||||
|
||||
@ -16,9 +16,6 @@
|
||||
// under the License.
|
||||
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 {
|
||||
|
||||
|
||||
@ -16,8 +16,8 @@
|
||||
// under the License.
|
||||
package com.cloud.agent.api.storage;
|
||||
|
||||
import com.cloud.storage.Storage.ImageFormat;
|
||||
import com.cloud.agent.api.to.StorageFilerTO;
|
||||
import com.cloud.storage.Storage.ImageFormat;
|
||||
import com.cloud.storage.StoragePool;
|
||||
|
||||
/**
|
||||
|
||||
@ -18,7 +18,6 @@ package com.cloud.agent.api.storage;
|
||||
|
||||
import com.cloud.agent.api.Command;
|
||||
import com.cloud.agent.api.to.StorageFilerTO;
|
||||
import com.cloud.storage.StoragePool;
|
||||
|
||||
public class ResizeVolumeCommand extends Command {
|
||||
private String path;
|
||||
|
||||
@ -16,11 +16,12 @@
|
||||
// under the License.
|
||||
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.to.TemplateTO;
|
||||
import com.cloud.storage.Upload.Type;
|
||||
import com.cloud.template.VirtualMachineTemplate;
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
|
||||
|
||||
public class UploadCommand extends AbstractUploadCommand implements InternalIdentity {
|
||||
|
||||
@ -19,10 +19,11 @@ package com.cloud.agent.api.to;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
|
||||
import com.cloud.network.rules.FirewallRule;
|
||||
import com.cloud.network.rules.FirewallRule.State;
|
||||
import com.cloud.utils.net.NetUtils;
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
|
||||
/**
|
||||
* FirewallRuleTO transfers a port range for an ip to be opened.
|
||||
@ -94,7 +95,7 @@ public class FirewallRuleTO implements InternalIdentity {
|
||||
public FirewallRuleTO(FirewallRule rule, String srcIp) {
|
||||
this(rule.getId(),null, srcIp, rule.getProtocol(), rule.getSourcePortStart(), rule.getSourcePortEnd(), rule.getState()==State.Revoke, rule.getState()==State.Active, rule.getPurpose(),rule.getSourceCidrList(),rule.getIcmpType(),rule.getIcmpCode());
|
||||
}
|
||||
|
||||
|
||||
public FirewallRuleTO(FirewallRule rule, String srcVlanTag, String srcIp, FirewallRule.Purpose purpose) {
|
||||
this(rule.getId(),srcVlanTag, srcIp, rule.getProtocol(), rule.getSourcePortStart(), rule.getSourcePortEnd(), rule.getState()==State.Revoke, rule.getState()==State.Active, purpose,rule.getSourceCidrList(),rule.getIcmpType(),rule.getIcmpCode());
|
||||
}
|
||||
|
||||
@ -20,10 +20,11 @@ package com.cloud.agent.api.to;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
|
||||
import com.cloud.network.rules.FirewallRule;
|
||||
import com.cloud.network.rules.FirewallRule.TrafficType;
|
||||
import com.cloud.utils.net.NetUtils;
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
|
||||
|
||||
public class NetworkACLTO implements InternalIdentity {
|
||||
|
||||
@ -16,10 +16,10 @@
|
||||
// under the License.
|
||||
package com.cloud.agent.api.to;
|
||||
|
||||
import com.cloud.utils.S3Utils;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import com.cloud.utils.S3Utils;
|
||||
|
||||
public final class S3TO implements S3Utils.ClientOptions {
|
||||
|
||||
private Long id;
|
||||
|
||||
@ -16,9 +16,10 @@
|
||||
// under the License.
|
||||
package com.cloud.agent.api.to;
|
||||
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
|
||||
import com.cloud.storage.Storage.ImageFormat;
|
||||
import com.cloud.template.VirtualMachineTemplate;
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
|
||||
public class TemplateTO implements InternalIdentity {
|
||||
private long id;
|
||||
|
||||
@ -16,10 +16,11 @@
|
||||
// under the License.
|
||||
package com.cloud.agent.api.to;
|
||||
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
|
||||
import com.cloud.storage.Storage.StoragePoolType;
|
||||
import com.cloud.storage.StoragePool;
|
||||
import com.cloud.storage.Volume;
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
|
||||
public class VolumeTO implements InternalIdentity {
|
||||
protected VolumeTO() {
|
||||
|
||||
@ -16,11 +16,11 @@
|
||||
// under the License.
|
||||
package com.cloud.alert;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import org.apache.cloudstack.api.Identity;
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
public interface Alert extends Identity, InternalIdentity {
|
||||
short getType();
|
||||
String getSubject();
|
||||
|
||||
@ -16,14 +16,17 @@
|
||||
// under the License.
|
||||
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.NetworkResponse;
|
||||
import org.apache.cloudstack.api.response.PhysicalNetworkResponse;
|
||||
import org.apache.cloudstack.api.response.ProjectResponse;
|
||||
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.exception.ConcurrentOperationException;
|
||||
import com.cloud.exception.InsufficientCapacityException;
|
||||
|
||||
@ -16,11 +16,14 @@
|
||||
// under the License.
|
||||
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.cloudstack.api.APICommand;
|
||||
import org.apache.cloudstack.api.response.SuccessResponse;
|
||||
import com.cloud.event.EventTypes;
|
||||
import com.cloud.user.Account;
|
||||
import com.cloud.user.UserContext;
|
||||
|
||||
@ -19,12 +19,12 @@ package com.cloud.api.commands;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.cloudstack.api.APICommand;
|
||||
import org.apache.cloudstack.api.ApiConstants;
|
||||
import org.apache.cloudstack.api.BaseListCmd;
|
||||
import org.apache.cloudstack.api.Parameter;
|
||||
import org.apache.cloudstack.api.response.ListResponse;
|
||||
import org.apache.cloudstack.api.response.SnapshotScheduleResponse;
|
||||
|
||||
import com.cloud.storage.snapshot.SnapshotSchedule;
|
||||
|
||||
//@APICommand(description="Lists recurring snapshot schedule", responseObject=SnapshotScheduleResponse.class)
|
||||
|
||||
@ -20,24 +20,27 @@ import java.util.List;
|
||||
|
||||
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.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.vlan.CreateVlanIpRangeCmd;
|
||||
import org.apache.cloudstack.api.command.admin.offering.*;
|
||||
import org.apache.cloudstack.api.command.admin.offering.DeleteDiskOfferingCmd;
|
||||
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.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.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.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.user.network.ListNetworkOfferingsCmd;
|
||||
|
||||
import com.cloud.dc.DataCenter;
|
||||
import com.cloud.dc.Pod;
|
||||
import com.cloud.dc.Vlan;
|
||||
|
||||
@ -18,11 +18,12 @@ package com.cloud.dc;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import com.cloud.org.Grouping;
|
||||
import org.apache.cloudstack.acl.InfrastructureEntity;
|
||||
import org.apache.cloudstack.api.Identity;
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
|
||||
import com.cloud.org.Grouping;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
|
||||
@ -16,11 +16,12 @@
|
||||
// under the License.
|
||||
package com.cloud.dc;
|
||||
|
||||
import com.cloud.org.Grouping;
|
||||
import org.apache.cloudstack.acl.InfrastructureEntity;
|
||||
import org.apache.cloudstack.api.Identity;
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
|
||||
import com.cloud.org.Grouping;
|
||||
|
||||
/**
|
||||
* Represents one pod in the cloud stack.
|
||||
*
|
||||
|
||||
@ -44,4 +44,9 @@ public interface Vlan extends InfrastructureEntity, InternalIdentity, Identity {
|
||||
|
||||
public Long getPhysicalNetworkId();
|
||||
|
||||
public String getIp6Gateway();
|
||||
|
||||
public String getIp6Cidr();
|
||||
|
||||
public String getIp6Range();
|
||||
}
|
||||
|
||||
@ -18,10 +18,11 @@ package com.cloud.domain;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import com.cloud.user.OwnedBy;
|
||||
import org.apache.cloudstack.api.Identity;
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
|
||||
import com.cloud.user.OwnedBy;
|
||||
|
||||
/**
|
||||
* Domain defines the Domain object.
|
||||
*/
|
||||
@ -58,4 +59,8 @@ public interface Domain extends OwnedBy, Identity, InternalIdentity {
|
||||
void setState(State state);
|
||||
|
||||
String getNetworkDomain();
|
||||
|
||||
public String getUuid();
|
||||
|
||||
int getRegionId();
|
||||
}
|
||||
|
||||
55
api/src/com/cloud/event/EventCategory.java
Normal file
55
api/src/com/cloud/event/EventCategory.java
Normal 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");
|
||||
}
|
||||
@ -16,7 +16,41 @@
|
||||
// under the License.
|
||||
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 {
|
||||
|
||||
//map of Event and corresponding entity for which Event is applicable
|
||||
private static Map<String, String> entityEventDetails = null;
|
||||
|
||||
// VM Events
|
||||
public static final String EVENT_VM_CREATE = "VM.CREATE";
|
||||
public static final String EVENT_VM_DESTROY = "VM.DESTROY";
|
||||
@ -319,10 +353,323 @@ public class EventTypes {
|
||||
public static final String EVENT_AUTOSCALEVMGROUP_UPDATE = "AUTOSCALEVMGROUP.UPDATE";
|
||||
public static final String EVENT_AUTOSCALEVMGROUP_ENABLE = "AUTOSCALEVMGROUP.ENABLE";
|
||||
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_DELETE = "PHYSICAL.DHCP.DELETE";
|
||||
|
||||
public static final String EVENT_BAREMETAL_PXE_SERVER_ADD = "PHYSICAL.PXE.ADD";
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -17,6 +17,7 @@
|
||||
package com.cloud.exception;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import com.cloud.utils.exception.CSExceptionErrorCode;
|
||||
|
||||
/**
|
||||
|
||||
@ -19,6 +19,7 @@ package com.cloud.exception;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.cloudstack.acl.ControlledEntity;
|
||||
|
||||
import com.cloud.user.Account;
|
||||
import com.cloud.utils.SerialVersionUID;
|
||||
import com.cloud.utils.exception.CloudRuntimeException;
|
||||
|
||||
@ -18,11 +18,12 @@ package com.cloud.host;
|
||||
|
||||
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.resource.ResourceState;
|
||||
import com.cloud.utils.fsm.StateObject;
|
||||
import org.apache.cloudstack.api.Identity;
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@ -16,10 +16,11 @@
|
||||
// under the License.
|
||||
package com.cloud.hypervisor;
|
||||
|
||||
import com.cloud.hypervisor.Hypervisor.HypervisorType;
|
||||
import org.apache.cloudstack.api.Identity;
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
|
||||
import com.cloud.hypervisor.Hypervisor.HypervisorType;
|
||||
|
||||
|
||||
/**
|
||||
* HypervisorCapability represents one particular hypervisor version's capabilities.
|
||||
|
||||
@ -19,10 +19,11 @@ package com.cloud.network;
|
||||
import java.util.Date;
|
||||
|
||||
import org.apache.cloudstack.acl.ControlledEntity;
|
||||
import com.cloud.utils.net.Ip;
|
||||
import org.apache.cloudstack.api.Identity;
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
|
||||
import com.cloud.utils.net.Ip;
|
||||
|
||||
/**
|
||||
*
|
||||
* - Allocated = null
|
||||
|
||||
@ -16,24 +16,36 @@
|
||||
// under the License.
|
||||
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.api.Identity;
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
|
||||
import com.cloud.network.Networks.BroadcastDomainType;
|
||||
import com.cloud.network.Networks.Mode;
|
||||
import com.cloud.network.Networks.TrafficType;
|
||||
import com.cloud.utils.fsm.FiniteState;
|
||||
import com.cloud.utils.fsm.StateMachine;
|
||||
import com.cloud.network.Networks.BroadcastDomainType;
|
||||
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.InternalIdentity;
|
||||
|
||||
import java.net.URI;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* owned by an account.
|
||||
*/
|
||||
public interface Network extends ControlledEntity, InternalIdentity, Identity {
|
||||
public interface Network extends ControlledEntity, StateObject<Network.State>, InternalIdentity, Identity {
|
||||
|
||||
public enum GuestType {
|
||||
Shared,
|
||||
@ -47,7 +59,7 @@ public interface Network extends ControlledEntity, InternalIdentity, Identity {
|
||||
public static final Service Dhcp = new Service("Dhcp");
|
||||
public static final Service Dns = new Service("Dns", Capability.AllowDnsSuffixModification);
|
||||
public static final Service Gateway = new Service("Gateway");
|
||||
public static final Service Firewall = new Service("Firewall", Capability.SupportedProtocols,
|
||||
public static final Service Firewall = new Service("Firewall", Capability.SupportedProtocols,
|
||||
Capability.MultipleIps, Capability.TrafficStatistics, Capability.SupportedTrafficDirection, Capability.SupportedEgressProtocols);
|
||||
public static final Service Lb = new Service("Lb", Capability.SupportedLBAlgorithms, Capability.SupportedLBIsolation,
|
||||
Capability.SupportedProtocols, Capability.TrafficStatistics, Capability.LoadBalancingSupportedIps,
|
||||
@ -123,7 +135,8 @@ public interface Network extends ControlledEntity, InternalIdentity, Identity {
|
||||
public static final Provider SecurityGroupProvider = new Provider("SecurityGroupProvider", false);
|
||||
public static final Provider VPCVirtualRouter = new Provider("VpcVirtualRouter", 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);
|
||||
|
||||
private String name;
|
||||
@ -204,7 +217,8 @@ public interface Network extends ControlledEntity, InternalIdentity, Identity {
|
||||
OperationFailed;
|
||||
}
|
||||
|
||||
enum State implements FiniteState<State, Event> {
|
||||
public enum State {
|
||||
|
||||
Allocated("Indicates the network configuration is in allocated but not setup"),
|
||||
Setup("Indicates the network configuration is setup"),
|
||||
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"),
|
||||
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 {
|
||||
s_fsm.addTransition(State.Allocated, Event.ImplementNetwork, State.Implementing);
|
||||
s_fsm.addTransition(State.Implementing, Event.OperationSucceeded, State.Implemented);
|
||||
@ -253,8 +236,43 @@ public interface Network extends ControlledEntity, InternalIdentity, Identity {
|
||||
s_fsm.addTransition(State.Shutdown, Event.OperationSucceeded, State.Allocated);
|
||||
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();
|
||||
|
||||
Mode getMode();
|
||||
@ -267,6 +285,10 @@ public interface Network extends ControlledEntity, InternalIdentity, Identity {
|
||||
|
||||
String getCidr();
|
||||
|
||||
String getIp6Gateway();
|
||||
|
||||
String getIp6Cidr();
|
||||
|
||||
long getDataCenterId();
|
||||
|
||||
long getNetworkOfferingId();
|
||||
|
||||
@ -249,4 +249,5 @@ public interface NetworkModel {
|
||||
|
||||
boolean isNetworkInlineMode(Network network);
|
||||
|
||||
Vlan getVlanForNetwork(long networkId);
|
||||
}
|
||||
@ -21,7 +21,6 @@ import java.net.URI;
|
||||
import com.cloud.network.Networks.BroadcastDomainType;
|
||||
import com.cloud.network.Networks.Mode;
|
||||
import com.cloud.network.Networks.TrafficType;
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
|
||||
public class NetworkProfile implements Network {
|
||||
private long id;
|
||||
@ -39,6 +38,8 @@ public class NetworkProfile implements Network {
|
||||
private TrafficType trafficType;
|
||||
private String gateway;
|
||||
private String cidr;
|
||||
private String ip6Gateway;
|
||||
private String ip6Cidr;
|
||||
private long networkOfferingId;
|
||||
private long related;
|
||||
private String displayText;
|
||||
@ -64,6 +65,8 @@ public class NetworkProfile implements Network {
|
||||
this.trafficType = network.getTrafficType();
|
||||
this.gateway = network.getGateway();
|
||||
this.cidr = network.getCidr();
|
||||
this.ip6Gateway = network.getIp6Gateway();
|
||||
this.ip6Cidr = network.getIp6Cidr();
|
||||
this.networkOfferingId = network.getNetworkOfferingId();
|
||||
this.related = network.getRelated();
|
||||
this.displayText = network.getDisplayText();
|
||||
@ -230,4 +233,14 @@ public class NetworkProfile implements Network {
|
||||
public void setTrafficType(TrafficType type) {
|
||||
this.trafficType = type;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getIp6Gateway() {
|
||||
return ip6Gateway;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getIp6Cidr() {
|
||||
return ip6Cidr;
|
||||
}
|
||||
}
|
||||
|
||||
@ -19,9 +19,10 @@ package com.cloud.network;
|
||||
import java.util.List;
|
||||
|
||||
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.ListNetworksCmd;
|
||||
import org.apache.cloudstack.api.command.user.network.RestartNetworkCmd;
|
||||
|
||||
import com.cloud.exception.ConcurrentOperationException;
|
||||
import com.cloud.exception.InsufficientAddressCapacityException;
|
||||
import com.cloud.exception.InsufficientCapacityException;
|
||||
|
||||
@ -48,7 +48,7 @@ public class Networks {
|
||||
public enum AddressFormat {
|
||||
Ip4,
|
||||
Ip6,
|
||||
Mixed
|
||||
DualStack
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -16,11 +16,11 @@
|
||||
// under the License.
|
||||
package com.cloud.network;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.cloudstack.api.Identity;
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@ -35,7 +35,8 @@ public interface PhysicalNetwork extends Identity, InternalIdentity {
|
||||
VLAN,
|
||||
L3,
|
||||
GRE,
|
||||
STT;
|
||||
STT,
|
||||
VNS;
|
||||
}
|
||||
|
||||
public enum BroadcastDomainRange {
|
||||
|
||||
@ -18,9 +18,10 @@ package com.cloud.network;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.cloud.network.Network.Service;
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
|
||||
import com.cloud.network.Network.Service;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
|
||||
@ -16,10 +16,11 @@
|
||||
// under the License.
|
||||
package com.cloud.network;
|
||||
|
||||
import com.cloud.network.Networks.TrafficType;
|
||||
import org.apache.cloudstack.api.Identity;
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
|
||||
import com.cloud.network.Networks.TrafficType;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
|
||||
@ -17,9 +17,10 @@
|
||||
package com.cloud.network;
|
||||
|
||||
import org.apache.cloudstack.acl.ControlledEntity;
|
||||
import com.cloud.dc.Vlan;
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
|
||||
import com.cloud.dc.Vlan;
|
||||
|
||||
/**
|
||||
*/
|
||||
public interface PublicIpAddress extends ControlledEntity, IpAddress, Vlan, InternalIdentity {
|
||||
|
||||
@ -19,11 +19,12 @@ package com.cloud.network;
|
||||
import java.sql.SQLException;
|
||||
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.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 {
|
||||
StorageNetworkIpRange createIpRange(CreateStorageNetworkIpRangeCmd cmd) throws SQLException;
|
||||
|
||||
@ -17,6 +17,7 @@
|
||||
package com.cloud.network;
|
||||
|
||||
import org.apache.cloudstack.api.command.admin.router.UpgradeRouterCmd;
|
||||
|
||||
import com.cloud.exception.ConcurrentOperationException;
|
||||
import com.cloud.exception.InsufficientCapacityException;
|
||||
import com.cloud.exception.ResourceUnavailableException;
|
||||
|
||||
@ -19,11 +19,19 @@ package com.cloud.network.as;
|
||||
import java.util.List;
|
||||
|
||||
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.CreateAutoScaleVmGroupCmd;
|
||||
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.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.UpdateAutoScaleVmProfileCmd;
|
||||
|
||||
import com.cloud.exception.ResourceInUseException;
|
||||
import com.cloud.exception.ResourceUnavailableException;
|
||||
|
||||
|
||||
@ -20,9 +20,10 @@ package com.cloud.network.as;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.cloudstack.acl.ControlledEntity;
|
||||
import com.cloud.utils.Pair;
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
|
||||
import com.cloud.utils.Pair;
|
||||
|
||||
/**
|
||||
* AutoScaleVmProfile
|
||||
*/
|
||||
|
||||
@ -16,7 +16,6 @@
|
||||
// under the License.
|
||||
package com.cloud.network.element;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
@ -45,19 +44,19 @@ public interface NetworkElement extends Adapter {
|
||||
Map<Service, Map<Capability, String>> getCapabilities();
|
||||
|
||||
/**
|
||||
* NOTE:
|
||||
* NOTE:
|
||||
* NetworkElement -> Network.Provider is a one-to-one mapping. While adding a new NetworkElement, one must add a new Provider name to Network.Provider.
|
||||
*/
|
||||
Provider getProvider();
|
||||
|
||||
/**
|
||||
* Implement the network configuration as specified.
|
||||
* Implement the network configuration as specified.
|
||||
* @param config fully specified network configuration.
|
||||
* @param offering network offering that originated the network configuration.
|
||||
* @return true if network configuration is now usable; false if not; null if not handled by this element.
|
||||
* @throws InsufficientNetworkCapacityException TODO
|
||||
*/
|
||||
boolean implement(Network network, NetworkOffering offering, DeployDestination dest, ReservationContext context)
|
||||
boolean implement(Network network, NetworkOffering offering, DeployDestination dest, ReservationContext context)
|
||||
throws ConcurrentOperationException, ResourceUnavailableException, InsufficientCapacityException;
|
||||
|
||||
/**
|
||||
@ -72,8 +71,8 @@ public interface NetworkElement extends Adapter {
|
||||
* @throws ResourceUnavailableException
|
||||
* @throws InsufficientNetworkCapacityException
|
||||
*/
|
||||
boolean prepare(Network network, NicProfile nic, VirtualMachineProfile<? extends VirtualMachine> vm,
|
||||
DeployDestination dest, ReservationContext context) throws ConcurrentOperationException,
|
||||
boolean prepare(Network network, NicProfile nic, VirtualMachineProfile<? extends VirtualMachine> vm,
|
||||
DeployDestination dest, ReservationContext context) throws ConcurrentOperationException,
|
||||
ResourceUnavailableException, InsufficientCapacityException;
|
||||
|
||||
/**
|
||||
@ -86,7 +85,7 @@ public interface NetworkElement extends Adapter {
|
||||
* @throws ConcurrentOperationException
|
||||
* @throws ResourceUnavailableException
|
||||
*/
|
||||
boolean release(Network network, NicProfile nic, VirtualMachineProfile<? extends VirtualMachine> vm,
|
||||
boolean release(Network network, NicProfile nic, VirtualMachineProfile<? extends VirtualMachine> vm,
|
||||
ReservationContext context) throws ConcurrentOperationException, ResourceUnavailableException;
|
||||
|
||||
/**
|
||||
@ -98,7 +97,7 @@ public interface NetworkElement extends Adapter {
|
||||
* @throws ConcurrentOperationException
|
||||
* @throws ResourceUnavailableException
|
||||
*/
|
||||
boolean shutdown(Network network, ReservationContext context, boolean cleanup)
|
||||
boolean shutdown(Network network, ReservationContext context, boolean cleanup)
|
||||
throws ConcurrentOperationException, ResourceUnavailableException;
|
||||
|
||||
/**
|
||||
@ -125,11 +124,11 @@ public interface NetworkElement extends Adapter {
|
||||
* @throws ConcurrentOperationException
|
||||
* @throws ResourceUnavailableException
|
||||
*/
|
||||
boolean shutdownProviderInstances(PhysicalNetworkServiceProvider provider, ReservationContext context)
|
||||
boolean shutdownProviderInstances(PhysicalNetworkServiceProvider provider, ReservationContext context)
|
||||
throws ConcurrentOperationException, ResourceUnavailableException;
|
||||
|
||||
/**
|
||||
* This should return true if out of multiple services provided by this element, only some can be enabled. If all the services MUST be provided, this should return false.
|
||||
* This should return true if out of multiple services provided by this element, only some can be enabled. If all the services MUST be provided, this should return false.
|
||||
* @return true/false
|
||||
*/
|
||||
boolean canEnableIndividualServices();
|
||||
|
||||
@ -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.ListVirtualRouterElementsCmd;
|
||||
|
||||
import com.cloud.network.VirtualRouterProvider;
|
||||
import com.cloud.network.VirtualRouterProvider.VirtualRouterProviderType;
|
||||
import com.cloud.utils.component.PluggableService;
|
||||
|
||||
@ -27,7 +27,6 @@ import com.cloud.exception.ResourceUnavailableException;
|
||||
import com.cloud.network.vpc.PrivateGateway;
|
||||
import com.cloud.network.vpc.StaticRouteProfile;
|
||||
import com.cloud.network.vpc.Vpc;
|
||||
import com.cloud.network.vpc.VpcGateway;
|
||||
import com.cloud.vm.ReservationContext;
|
||||
|
||||
public interface VpcProvider extends NetworkElement{
|
||||
|
||||
@ -20,6 +20,7 @@ package com.cloud.network.firewall;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.cloudstack.api.command.user.firewall.ListFirewallRulesCmd;
|
||||
|
||||
import com.cloud.exception.NetworkRuleConflictException;
|
||||
import com.cloud.exception.ResourceUnavailableException;
|
||||
import com.cloud.network.rules.FirewallRule;
|
||||
|
||||
@ -20,6 +20,7 @@ package com.cloud.network.firewall;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.cloudstack.api.command.user.network.ListNetworkACLsCmd;
|
||||
|
||||
import com.cloud.exception.NetworkRuleConflictException;
|
||||
import com.cloud.exception.ResourceUnavailableException;
|
||||
import com.cloud.network.rules.FirewallRule;
|
||||
|
||||
@ -26,7 +26,6 @@ import com.cloud.network.as.Counter;
|
||||
import com.cloud.network.rules.FirewallRule;
|
||||
import com.cloud.network.rules.LoadBalancer;
|
||||
import com.cloud.utils.Pair;
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
|
||||
public class LoadBalancingRule implements FirewallRule, LoadBalancer {
|
||||
private LoadBalancer lb;
|
||||
|
||||
@ -18,9 +18,13 @@ package com.cloud.network.lb;
|
||||
|
||||
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.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 com.cloud.exception.InsufficientAddressCapacityException;
|
||||
import com.cloud.exception.NetworkRuleConflictException;
|
||||
import com.cloud.exception.ResourceUnavailableException;
|
||||
|
||||
@ -16,8 +16,9 @@
|
||||
// under the License.
|
||||
package com.cloud.network.rules;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
|
||||
|
||||
@ -19,6 +19,7 @@ package com.cloud.network.rules;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.cloudstack.api.command.user.firewall.ListPortForwardingRulesCmd;
|
||||
|
||||
import com.cloud.exception.InsufficientAddressCapacityException;
|
||||
import com.cloud.exception.NetworkRuleConflictException;
|
||||
import com.cloud.exception.ResourceUnavailableException;
|
||||
|
||||
@ -18,10 +18,11 @@ package com.cloud.network.rules;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.cloud.utils.Pair;
|
||||
import org.apache.cloudstack.api.Identity;
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
|
||||
import com.cloud.utils.Pair;
|
||||
|
||||
/**
|
||||
*/
|
||||
public interface StickinessPolicy extends InternalIdentity, Identity {
|
||||
|
||||
@ -15,9 +15,10 @@
|
||||
// specific language governing permissions and limitations
|
||||
// under the License.
|
||||
package com.cloud.network.security;
|
||||
import com.cloud.network.security.SecurityRule.SecurityRuleType;
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
|
||||
import com.cloud.network.security.SecurityRule.SecurityRuleType;
|
||||
|
||||
public interface SecurityGroupRules extends InternalIdentity {
|
||||
|
||||
String getName();
|
||||
|
||||
@ -18,7 +18,12 @@ package com.cloud.network.security;
|
||||
|
||||
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.PermissionDeniedException;
|
||||
|
||||
@ -16,10 +16,11 @@
|
||||
// under the License.
|
||||
package com.cloud.network.security;
|
||||
|
||||
import com.cloud.async.AsyncInstanceCreateStatus;
|
||||
import org.apache.cloudstack.api.Identity;
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
|
||||
import com.cloud.async.AsyncInstanceCreateStatus;
|
||||
|
||||
public interface SecurityRule extends Identity, InternalIdentity {
|
||||
|
||||
public static class SecurityRuleType {
|
||||
|
||||
@ -16,7 +16,6 @@
|
||||
// under the License.
|
||||
package com.cloud.network.vpc;
|
||||
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
|
||||
public class StaticRouteProfile implements StaticRoute {
|
||||
private long id;
|
||||
|
||||
@ -17,10 +17,11 @@
|
||||
package com.cloud.network.vpc;
|
||||
|
||||
import org.apache.cloudstack.acl.ControlledEntity;
|
||||
import com.cloud.network.Network;
|
||||
import org.apache.cloudstack.api.Identity;
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
|
||||
import com.cloud.network.Network;
|
||||
|
||||
public interface Vpc extends ControlledEntity, Identity, InternalIdentity {
|
||||
public enum State {
|
||||
Enabled,
|
||||
|
||||
@ -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.ListStaticRoutesCmd;
|
||||
|
||||
import com.cloud.exception.ConcurrentOperationException;
|
||||
import com.cloud.exception.InsufficientAddressCapacityException;
|
||||
import com.cloud.exception.InsufficientCapacityException;
|
||||
|
||||
@ -18,8 +18,9 @@ package com.cloud.network.vpn;
|
||||
|
||||
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.ListVpnUsersCmd;
|
||||
|
||||
import com.cloud.exception.NetworkRuleConflictException;
|
||||
import com.cloud.exception.ResourceUnavailableException;
|
||||
import com.cloud.network.RemoteAccessVpn;
|
||||
|
||||
@ -18,7 +18,6 @@ package com.cloud.network.vpn;
|
||||
|
||||
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.CreateVpnCustomerGatewayCmd;
|
||||
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.DeleteVpnGatewayCmd;
|
||||
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.ResetVpnConnectionCmd;
|
||||
import org.apache.cloudstack.api.command.user.vpn.UpdateVpnCustomerGatewayCmd;
|
||||
|
||||
import com.cloud.exception.NetworkRuleConflictException;
|
||||
import com.cloud.exception.ResourceUnavailableException;
|
||||
import com.cloud.network.Site2SiteCustomerGateway;
|
||||
|
||||
@ -16,12 +16,12 @@
|
||||
// under the License.
|
||||
package com.cloud.offering;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import org.apache.cloudstack.acl.InfrastructureEntity;
|
||||
import org.apache.cloudstack.api.Identity;
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* Represents a disk offering that specifies what the end user needs in
|
||||
* the disk offering.
|
||||
|
||||
@ -16,12 +16,13 @@
|
||||
// under the License.
|
||||
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.api.Identity;
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
|
||||
import com.cloud.network.Network.GuestType;
|
||||
import com.cloud.network.Networks.TrafficType;
|
||||
|
||||
/**
|
||||
* Describes network offering
|
||||
*
|
||||
@ -110,4 +111,7 @@ public interface NetworkOffering extends InfrastructureEntity, InternalIdentity,
|
||||
boolean getSpecifyIpRanges();
|
||||
|
||||
boolean isInline();
|
||||
|
||||
boolean getIsPersistent();
|
||||
|
||||
}
|
||||
|
||||
@ -16,12 +16,12 @@
|
||||
// under the License.
|
||||
package com.cloud.offering;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import org.apache.cloudstack.acl.InfrastructureEntity;
|
||||
import org.apache.cloudstack.api.Identity;
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* offered.
|
||||
*/
|
||||
|
||||
@ -16,11 +16,12 @@
|
||||
// under the License.
|
||||
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.InternalIdentity;
|
||||
|
||||
import com.cloud.hypervisor.Hypervisor.HypervisorType;
|
||||
import com.cloud.org.Managed.ManagedState;
|
||||
|
||||
public interface Cluster extends Grouping, InternalIdentity, Identity {
|
||||
public static enum ClusterType {
|
||||
CloudManaged,
|
||||
|
||||
@ -19,9 +19,10 @@ package com.cloud.projects;
|
||||
import java.util.Date;
|
||||
|
||||
import org.apache.cloudstack.api.Identity;
|
||||
import com.cloud.domain.PartOf;
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
|
||||
import com.cloud.domain.PartOf;
|
||||
|
||||
public interface Project extends PartOf, Identity, InternalIdentity {
|
||||
public enum State {
|
||||
Active, Disabled, Suspended
|
||||
|
||||
@ -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.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.ListS3sCmd;
|
||||
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.host.PrepareForMaintenanceCmd;
|
||||
|
||||
import com.cloud.exception.DiscoveryException;
|
||||
import com.cloud.exception.InvalidParameterValueException;
|
||||
import com.cloud.exception.ResourceInUseException;
|
||||
@ -36,7 +42,6 @@ import com.cloud.storage.S3;
|
||||
import com.cloud.storage.Swift;
|
||||
import com.cloud.utils.Pair;
|
||||
import com.cloud.utils.fsm.NoTransitionException;
|
||||
import org.apache.cloudstack.api.command.admin.host.ReconnectHostCmd;
|
||||
|
||||
public interface ResourceService {
|
||||
/**
|
||||
@ -95,7 +100,7 @@ public interface ResourceService {
|
||||
Swift discoverSwift(AddSwiftCmd addSwiftCmd) throws DiscoveryException;
|
||||
|
||||
S3 discoverS3(AddS3Cmd cmd) throws DiscoveryException;
|
||||
|
||||
|
||||
List<HypervisorType> getSupportedHypervisorTypes(long zoneId, boolean forVirtualRouter, Long podId);
|
||||
|
||||
Pair<List<? extends Swift>, Integer> listSwifts(ListSwiftsCmd cmd);
|
||||
|
||||
@ -22,43 +22,42 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import com.cloud.alert.Alert;
|
||||
import org.apache.cloudstack.api.ServerApiException;
|
||||
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.UpdateHostPasswordCmd;
|
||||
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.ListCapacityCmd;
|
||||
import org.apache.cloudstack.api.command.admin.domain.UpdateDomainCmd;
|
||||
import org.apache.cloudstack.api.command.admin.storage.ListStoragePoolsCmd;
|
||||
import org.apache.cloudstack.api.command.admin.systemvm.*;
|
||||
import org.apache.cloudstack.api.command.admin.resource.UploadCustomCertificateCmd;
|
||||
import org.apache.cloudstack.api.command.admin.systemvm.DestroySystemVmCmd;
|
||||
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.user.address.ListPublicIpAddressesCmd;
|
||||
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.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.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.template.ListTemplatesCmd;
|
||||
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.DeleteSSHKeyPairCmd;
|
||||
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.admin.systemvm.StopSystemVmCmd;
|
||||
import org.apache.cloudstack.api.command.user.iso.UpdateIsoCmd;
|
||||
import org.apache.cloudstack.api.command.user.template.ListTemplatesCmd;
|
||||
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.admin.systemvm.UpgradeSystemVMCmd;
|
||||
import org.apache.cloudstack.api.command.admin.resource.UploadCustomCertificateCmd;
|
||||
import org.apache.cloudstack.api.command.user.volume.ExtractVolumeCmd;
|
||||
import org.apache.cloudstack.api.command.user.zone.ListZonesByCmd;
|
||||
|
||||
import com.cloud.alert.Alert;
|
||||
import com.cloud.capacity.Capacity;
|
||||
import com.cloud.configuration.Configuration;
|
||||
import com.cloud.dc.DataCenter;
|
||||
@ -78,7 +77,6 @@ import com.cloud.offering.ServiceOffering;
|
||||
import com.cloud.org.Cluster;
|
||||
import com.cloud.storage.GuestOS;
|
||||
import com.cloud.storage.GuestOsCategory;
|
||||
import com.cloud.storage.StoragePool;
|
||||
import com.cloud.template.VirtualMachineTemplate;
|
||||
import com.cloud.user.SSHKeyPair;
|
||||
import com.cloud.utils.Pair;
|
||||
@ -127,7 +125,7 @@ public interface ManagementService {
|
||||
/**
|
||||
* Searches for servers by the specified search criteria Can search by: "name", "type", "state", "dataCenterId",
|
||||
* "podId"
|
||||
*
|
||||
*
|
||||
* @param cmd
|
||||
* @return List of Hosts
|
||||
*/
|
||||
|
||||
@ -18,11 +18,12 @@
|
||||
*/
|
||||
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.InternalIdentity;
|
||||
|
||||
import java.util.Date;
|
||||
import com.cloud.agent.api.to.S3TO;
|
||||
|
||||
public interface S3 extends InternalIdentity, Identity {
|
||||
|
||||
|
||||
@ -18,12 +18,14 @@ package com.cloud.storage;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import org.apache.cloudstack.acl.ControlledEntity;
|
||||
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.InternalIdentity;
|
||||
|
||||
public interface Snapshot extends ControlledEntity, Identity, InternalIdentity {
|
||||
public interface Snapshot extends ControlledEntity, Identity, InternalIdentity, StateObject<Snapshot.State> {
|
||||
public enum Type {
|
||||
MANUAL,
|
||||
RECURRING,
|
||||
@ -42,6 +44,7 @@ public interface Snapshot extends ControlledEntity, Identity, InternalIdentity {
|
||||
return max;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return this.name();
|
||||
}
|
||||
@ -51,13 +54,29 @@ public interface Snapshot extends ControlledEntity, Identity, InternalIdentity {
|
||||
}
|
||||
}
|
||||
|
||||
public enum Status {
|
||||
public enum State {
|
||||
Creating,
|
||||
CreatedOnPrimary,
|
||||
BackingUp,
|
||||
BackedUp,
|
||||
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() {
|
||||
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;
|
||||
|
||||
long getAccountId();
|
||||
@ -81,7 +109,7 @@ public interface Snapshot extends ControlledEntity, Identity, InternalIdentity {
|
||||
|
||||
Type getType();
|
||||
|
||||
Status getStatus();
|
||||
State getState();
|
||||
|
||||
HypervisorType getHypervisorType();
|
||||
|
||||
|
||||
@ -18,10 +18,11 @@ package com.cloud.storage;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import com.cloud.storage.Storage.StoragePoolType;
|
||||
import org.apache.cloudstack.api.Identity;
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
|
||||
import com.cloud.storage.Storage.StoragePoolType;
|
||||
|
||||
public interface StoragePool extends Identity, InternalIdentity {
|
||||
|
||||
/**
|
||||
@ -94,4 +95,14 @@ public interface StoragePool extends Identity, InternalIdentity {
|
||||
int getPort();
|
||||
|
||||
Long getPodId();
|
||||
|
||||
/**
|
||||
* @return
|
||||
*/
|
||||
String getStorageProvider();
|
||||
|
||||
/**
|
||||
* @return
|
||||
*/
|
||||
String getStorageType();
|
||||
}
|
||||
|
||||
@ -17,6 +17,7 @@
|
||||
package com.cloud.storage;
|
||||
|
||||
public enum StoragePoolStatus {
|
||||
Creating,
|
||||
Up,
|
||||
PrepareForMaintenance,
|
||||
ErrorInMaintenance,
|
||||
|
||||
@ -18,12 +18,14 @@ package com.cloud.storage;
|
||||
|
||||
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.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.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.UploadVolumeCmd;
|
||||
|
||||
import com.cloud.exception.ConcurrentOperationException;
|
||||
import com.cloud.exception.InsufficientCapacityException;
|
||||
import com.cloud.exception.PermissionDeniedException;
|
||||
|
||||
@ -16,9 +16,10 @@
|
||||
// under the License.
|
||||
package com.cloud.storage;
|
||||
|
||||
import com.cloud.agent.api.to.SwiftTO;
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
|
||||
import com.cloud.agent.api.to.SwiftTO;
|
||||
|
||||
public interface Swift extends InternalIdentity {
|
||||
public long getId();
|
||||
|
||||
|
||||
@ -16,11 +16,11 @@
|
||||
// under the License.
|
||||
package com.cloud.storage;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import org.apache.cloudstack.api.Identity;
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
public interface Upload extends InternalIdentity, Identity {
|
||||
|
||||
public static enum Status {
|
||||
|
||||
@ -16,14 +16,13 @@
|
||||
// under the License.
|
||||
package com.cloud.storage;
|
||||
|
||||
import org.apache.cloudstack.api.Identity;
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
|
||||
public interface VMTemplateStorageResourceAssoc extends InternalIdentity {
|
||||
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();
|
||||
|
||||
@ -19,11 +19,12 @@ package com.cloud.storage;
|
||||
import java.util.Date;
|
||||
|
||||
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.utils.fsm.StateMachine2;
|
||||
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> {
|
||||
enum Type {
|
||||
@ -38,8 +39,9 @@ public interface Volume extends ControlledEntity, Identity, InternalIdentity, Ba
|
||||
Snapshotting("There is a snapshot created on this volume, not backed up to secondary storage yet"),
|
||||
Resizing("The volume is being resized"),
|
||||
Expunging("The volume is being expunging"),
|
||||
Destroy("The volume is destroyed, and can't be recovered."),
|
||||
UploadOp ("The volume upload operation is in progress or in short the volume is on secondary storage");
|
||||
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");
|
||||
|
||||
String _description;
|
||||
|
||||
@ -63,14 +65,14 @@ public interface Volume extends ControlledEntity, Identity, InternalIdentity, Ba
|
||||
s_fsm.addTransition(Creating, Event.OperationFailed, Allocated);
|
||||
s_fsm.addTransition(Creating, Event.OperationSucceeded, Ready);
|
||||
s_fsm.addTransition(Creating, Event.DestroyRequested, Destroy);
|
||||
s_fsm.addTransition(Creating, Event.CreateRequested, Creating);
|
||||
s_fsm.addTransition(Creating, Event.CreateRequested, Creating);
|
||||
s_fsm.addTransition(Ready, Event.ResizeRequested, Resizing);
|
||||
s_fsm.addTransition(Resizing, Event.OperationSucceeded, Ready);
|
||||
s_fsm.addTransition(Resizing, Event.OperationFailed, Ready);
|
||||
s_fsm.addTransition(Allocated, Event.UploadRequested, UploadOp);
|
||||
s_fsm.addTransition(UploadOp, Event.CopyRequested, Creating);// CopyRequested for volume from sec to primary storage
|
||||
s_fsm.addTransition(UploadOp, Event.CopyRequested, Creating);// CopyRequested for volume from sec to primary storage
|
||||
s_fsm.addTransition(Creating, Event.CopySucceeded, Ready);
|
||||
s_fsm.addTransition(Creating, Event.CopyFailed, UploadOp);// Copying volume from sec to primary failed.
|
||||
s_fsm.addTransition(Creating, Event.CopyFailed, UploadOp);// Copying volume from sec to primary failed.
|
||||
s_fsm.addTransition(UploadOp, Event.DestroyRequested, Destroy);
|
||||
s_fsm.addTransition(Ready, Event.DestroyRequested, Destroy);
|
||||
s_fsm.addTransition(Destroy, Event.ExpungingRequested, Expunging);
|
||||
@ -152,4 +154,14 @@ public interface Volume extends ControlledEntity, Identity, InternalIdentity, Ba
|
||||
public void incrUpdatedCount();
|
||||
|
||||
public Date getUpdated();
|
||||
|
||||
/**
|
||||
* @return
|
||||
*/
|
||||
String getReservationId();
|
||||
|
||||
/**
|
||||
* @param reserv
|
||||
*/
|
||||
void setReservationId(String reserv);
|
||||
}
|
||||
|
||||
@ -19,10 +19,11 @@ package com.cloud.storage.snapshot;
|
||||
import java.util.List;
|
||||
|
||||
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 com.cloud.api.commands.ListRecurringSnapshotScheduleCmd;
|
||||
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.ResourceAllocationException;
|
||||
import com.cloud.storage.Snapshot;
|
||||
|
||||
@ -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.ExtractIsoCmd;
|
||||
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.DeleteTemplateCmd;
|
||||
import org.apache.cloudstack.api.command.user.template.ExtractTemplateCmd;
|
||||
import org.apache.cloudstack.api.command.user.template.RegisterTemplateCmd;
|
||||
|
||||
import com.cloud.exception.InternalErrorException;
|
||||
import com.cloud.exception.ResourceAllocationException;
|
||||
import com.cloud.exception.StorageUnavailableException;
|
||||
|
||||
@ -20,11 +20,12 @@ import java.util.Date;
|
||||
import java.util.Map;
|
||||
|
||||
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.storage.Storage.ImageFormat;
|
||||
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 {
|
||||
|
||||
@ -89,6 +90,5 @@ public interface VirtualMachineTemplate extends ControlledEntity, Identity, Inte
|
||||
Long getSourceTemplateId();
|
||||
|
||||
String getTemplateTag();
|
||||
|
||||
Map getDetails();
|
||||
}
|
||||
|
||||
@ -62,5 +62,8 @@ public interface Account extends ControlledEntity, InternalIdentity, Identity {
|
||||
public String getNetworkDomain();
|
||||
|
||||
public Long getDefaultZoneId();
|
||||
|
||||
|
||||
public int getRegionId();
|
||||
|
||||
public String getUuid();
|
||||
}
|
||||
|
||||
@ -22,16 +22,15 @@ import java.util.Map;
|
||||
import org.apache.cloudstack.acl.ControlledEntity;
|
||||
import org.apache.cloudstack.acl.RoleType;
|
||||
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.RegisterCmd;
|
||||
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.exception.ConcurrentOperationException;
|
||||
import com.cloud.exception.PermissionDeniedException;
|
||||
import com.cloud.exception.ResourceUnavailableException;
|
||||
import com.cloud.utils.Pair;
|
||||
|
||||
public interface AccountService {
|
||||
@ -63,35 +62,7 @@ public interface AccountService {
|
||||
* @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,
|
||||
Map<String, String> details);
|
||||
|
||||
/**
|
||||
* 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);
|
||||
Map<String, String> details, String accountUUID, String userUUID, Integer regionId);
|
||||
|
||||
/**
|
||||
* 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);
|
||||
|
||||
/**
|
||||
* 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();
|
||||
|
||||
User getSystemUser();
|
||||
|
||||
User createUser(String userName, String password, String firstName, String lastName, String email, String timeZone, String accountName, Long domainId);
|
||||
|
||||
boolean deleteUser(DeleteUserCmd deleteUserCmd);
|
||||
User createUser(String userName, String password, String firstName, String lastName, String email, String timeZone, String accountName, Long domainId, String userUUID, Integer regionId);
|
||||
|
||||
boolean isAdmin(short accountType);
|
||||
|
||||
|
||||
@ -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.ListDomainsCmd;
|
||||
|
||||
import com.cloud.domain.Domain;
|
||||
import com.cloud.exception.PermissionDeniedException;
|
||||
import com.cloud.utils.Pair;
|
||||
|
||||
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);
|
||||
|
||||
@ -40,12 +41,19 @@ public interface DomainService {
|
||||
*/
|
||||
boolean isChildDomain(Long parentId, Long childId);
|
||||
|
||||
boolean deleteDomain(long domainId, Boolean cleanup);
|
||||
|
||||
Pair<List<? extends Domain>, Integer> searchForDomains(ListDomainsCmd cmd)
|
||||
throws PermissionDeniedException;
|
||||
|
||||
Pair<List<? extends Domain>, Integer> searchForDomainChildren(ListDomainChildrenCmd cmd)
|
||||
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);
|
||||
|
||||
}
|
||||
|
||||
@ -16,10 +16,10 @@
|
||||
// under the License.
|
||||
package com.cloud.user;
|
||||
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
|
||||
public interface User extends OwnedBy, InternalIdentity {
|
||||
public static final long UID_SYSTEM = 1;
|
||||
|
||||
@ -73,4 +73,5 @@ public interface User extends OwnedBy, InternalIdentity {
|
||||
|
||||
boolean isRegistered();
|
||||
|
||||
public int getRegionId();
|
||||
}
|
||||
|
||||
@ -16,10 +16,10 @@
|
||||
// under the License.
|
||||
package com.cloud.user;
|
||||
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
|
||||
public interface UserAccount extends InternalIdentity {
|
||||
long getId();
|
||||
|
||||
|
||||
@ -16,14 +16,11 @@
|
||||
// under the License.
|
||||
package com.cloud.user;
|
||||
|
||||
import com.cloud.server.ManagementService;
|
||||
import com.cloud.utils.component.ComponentLocator;
|
||||
import com.cloud.utils.component.ComponentContext;
|
||||
import javax.inject.Inject;
|
||||
|
||||
public class 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 String sessionId;
|
||||
@ -31,10 +28,9 @@ public class UserContext {
|
||||
private long startEventId = 0;
|
||||
private long accountId;
|
||||
private String eventDetails;
|
||||
|
||||
private boolean apiServer;
|
||||
|
||||
private static UserContext s_adminContext = new UserContext(_accountMgr.getSystemUser().getId(), _accountMgr.getSystemAccount(), null, false);
|
||||
@Inject private AccountService _accountMgr = null;
|
||||
|
||||
public UserContext() {
|
||||
}
|
||||
@ -51,6 +47,9 @@ public class UserContext {
|
||||
}
|
||||
|
||||
public User getCallerUser() {
|
||||
if (_accountMgr == null) {
|
||||
_accountMgr = ComponentContext.getComponent(AccountService.class);
|
||||
}
|
||||
return _accountMgr.getActiveUser(userId);
|
||||
}
|
||||
|
||||
@ -90,10 +89,10 @@ public class UserContext {
|
||||
// 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
|
||||
// request in and
|
||||
// request in and
|
||||
// the core async-job manager that runs commands from user) have explicitly setup the UserContext.
|
||||
//
|
||||
return s_adminContext;
|
||||
return UserContextInitializer.getInstance().getAdminContext();
|
||||
}
|
||||
return context;
|
||||
}
|
||||
|
||||
40
api/src/com/cloud/user/UserContextInitializer.java
Normal file
40
api/src/com/cloud/user/UserContextInitializer.java
Normal 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);
|
||||
}
|
||||
}
|
||||
@ -17,6 +17,7 @@
|
||||
package com.cloud.uservm;
|
||||
|
||||
import org.apache.cloudstack.acl.ControlledEntity;
|
||||
|
||||
import com.cloud.vm.VirtualMachine;
|
||||
|
||||
/**
|
||||
|
||||
@ -34,6 +34,7 @@ public class DiskProfile {
|
||||
private long diskOfferingId;
|
||||
private Long templateId;
|
||||
private long volumeId;
|
||||
private String path;
|
||||
|
||||
private HypervisorType hyperType;
|
||||
|
||||
@ -56,6 +57,10 @@ public class DiskProfile {
|
||||
this(vol.getId(), vol.getVolumeType(), vol.getName(), offering.getId(), vol.getSize(), offering.getTagsArray(), offering.getUseLocalStorage(), offering.isCustomized(), null);
|
||||
this.hyperType = hyperType;
|
||||
}
|
||||
|
||||
public DiskProfile(DiskProfile dp) {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @return size of the disk requested in bytes.
|
||||
@ -137,4 +142,16 @@ public class DiskProfile {
|
||||
public HypervisorType getHypersorType() {
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -21,12 +21,13 @@ import java.util.Date;
|
||||
import java.util.List;
|
||||
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.Mode;
|
||||
import com.cloud.utils.fsm.FiniteState;
|
||||
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.
|
||||
@ -144,4 +145,10 @@ public interface Nic extends Identity, InternalIdentity {
|
||||
VirtualMachine.Type getVmType();
|
||||
|
||||
AddressFormat getAddressFormat();
|
||||
|
||||
String getIp6Gateway();
|
||||
|
||||
String getIp6Cidr();
|
||||
|
||||
String getIp6Address();
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user