diff --git a/api/src/com/cloud/api/response/UserResponse.java b/api/src/com/cloud/api/response/UserResponse.java
index 920eb598f5a..b1382e98b8a 100644
--- a/api/src/com/cloud/api/response/UserResponse.java
+++ b/api/src/com/cloud/api/response/UserResponse.java
@@ -69,6 +69,8 @@ public class UserResponse extends BaseResponse {
@SerializedName("accountid") @Param(description="the account ID of the user")
private IdentityProxy accountId = new IdentityProxy("account");
+ @SerializedName("iscallerchilddomain") @Param(description="the boolean value representing if the updating target is in caller's child domain")
+ private boolean isCallerChildDomain;
public Long getId() {
return id.getValue();
@@ -188,4 +190,12 @@ public class UserResponse extends BaseResponse {
public void setAccountId(Long accountId) {
this.accountId.setValue(accountId);
}
+
+ public boolean getIsCallerSubdomain() {
+ return this.isCallerChildDomain;
+ }
+
+ public void setIsCallerChildDomain(boolean isCallerChildDomain) {
+ this.isCallerChildDomain = isCallerChildDomain;
+ }
}
diff --git a/client/pom.xml b/client/pom.xml
index 1673429f3d9..77077066f9a 100644
--- a/client/pom.xml
+++ b/client/pom.xml
@@ -44,7 +44,7 @@
org.apache.cloudstack
cloud-plugin-user-authenticator-sha256salted
${project.version}
-
+
org.apache.cloudstack
cloud-plugin-network-nvp
@@ -66,9 +66,9 @@
${project.version}
- org.apache.cloudstack
- cloud-plugin-hypervisor-ovm
- ${project.version}
+ org.apache.cloudstack
+ cloud-plugin-hypervisor-ovm
+ ${project.version}
org.apache.cloudstack
@@ -290,7 +290,7 @@
-
org.eclipse.m2e
@@ -324,6 +324,21 @@
+
+ simulator
+
+
+ simulator
+
+
+
+
+ org.apache.cloudstack
+ cloud-plugin-hypervisor-simulator
+ ${project.version}
+
+
+
netapp
diff --git a/client/tomcatconf/commands.properties.in b/client/tomcatconf/commands.properties.in
index 437c8d458f5..e55017ce5ea 100755
--- a/client/tomcatconf/commands.properties.in
+++ b/client/tomcatconf/commands.properties.in
@@ -31,7 +31,7 @@ markDefaultZoneForAccount=com.cloud.api.commands.MarkDefaultZoneForAccountCmd;1
#### User commands
createUser=com.cloud.api.commands.CreateUserCmd;3
deleteUser=com.cloud.api.commands.DeleteUserCmd;3
-updateUser=com.cloud.api.commands.UpdateUserCmd;3
+updateUser=com.cloud.api.commands.UpdateUserCmd;15
listUsers=com.cloud.api.commands.ListUsersCmd;7
####lockUser=com.cloud.api.commands.LockUserCmd;7
disableUser=com.cloud.api.commands.DisableUserCmd;7
diff --git a/client/tomcatconf/simulator.properties.in b/client/tomcatconf/simulator_commands.properties.in
similarity index 71%
rename from client/tomcatconf/simulator.properties.in
rename to client/tomcatconf/simulator_commands.properties.in
index 24e5e627c71..d2a46997e6f 100644
--- a/client/tomcatconf/simulator.properties.in
+++ b/client/tomcatconf/simulator_commands.properties.in
@@ -5,9 +5,9 @@
# 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
@@ -15,17 +15,5 @@
# specific language governing permissions and limitations
# under the License.
-host=127.0.0.1
-port=8250
-workers=3
-zone=1
-pod=1
-run=13
-sequence=r
-agent.save.path=/tmp/agents
-latency=2
-latency.start.range=2
-latency.end.range=2
-delay.distribution={(5,10); (5,10); (5,10); (5,10); (5,10); (5,10); (5,10); (5,10); (5,10); (10,120)}
-property.scan.enabled=1
-property.scan.interval=300
+
+configureSimulator=com.cloud.api.commands.ConfigureSimulator;1
\ No newline at end of file
diff --git a/developer/developer-prefill.sql b/developer/developer-prefill.sql
index 8e215ba77d9..e14ac375e98 100644
--- a/developer/developer-prefill.sql
+++ b/developer/developer-prefill.sql
@@ -16,6 +16,8 @@
-- under the License.
-- Add a default ROOT domain
+use cloud;
+
INSERT INTO `cloud`.`domain` (id, name, parent, path, owner) VALUES
(1, 'ROOT', NULL, '/', 2);
diff --git a/developer/pom.xml b/developer/pom.xml
index 61cb1108d3a..b782a595f3a 100644
--- a/developer/pom.xml
+++ b/developer/pom.xml
@@ -1,4 +1,4 @@
-
4.0.0
cloud-developer
@@ -101,6 +102,7 @@
+
org.gjt.mm.mysql.Driver
jdbc:mysql://${db.cloud.host}:${db.cloud.port}/cloud
${db.cloud.username}
@@ -109,7 +111,6 @@
${maven.test.skip}
true
-
drop-database
@@ -310,9 +311,9 @@
true
-
- ${basedir}/developer-prefill.sql
-
+
+ ${basedir}/developer-prefill.sql
+
@@ -320,5 +321,128 @@
+
+
+
+ simulator
+
+ deploydb-simulator
+
+
+
+
+ org.codehaus.mojo
+ properties-maven-plugin
+ 1.0-alpha-2
+
+
+ initialize
+
+ read-project-properties
+
+
+
+ ${project.parent.basedir}/utils/conf/db.properties
+ ${project.parent.basedir}/utils/conf/db.properties.override
+
+ true
+
+
+
+
+
+ org.codehaus.mojo
+ sql-maven-plugin
+ 1.5
+
+
+ mysql
+ mysql-connector-java
+ ${cs.mysql.version}
+
+
+
+ org.gjt.mm.mysql.Driver
+ jdbc:mysql://${db.simulator.host}:3306/simulator
+ ${db.simulator.username}
+ ${db.simulator.password}
+ ${maven.test.skip}
+ true
+
+
+
+ drop-database
+ process-test-resources
+
+ execute
+
+
+ root
+ ${db.root.password}
+ jdbc:mysql://${db.simulator.host}:3306
+ drop database if exists `simulator`
+
+
+
+ create-database
+ process-test-resources
+
+ execute
+
+
+ root
+ ${db.root.password}
+ jdbc:mysql://${db.simulator.host}:3306
+ create database `simulator`
+
+
+
+ grant-user-cloud
+ process-test-resources
+
+ execute
+
+
+ root
+ ${db.root.password}
+ jdbc:mysql://${db.simulator.host}:3306
+ GRANT ALL ON simulator.* to
+ ${db.simulator.username}@`localhost` identified by
+ '${db.simulator.password}';
+
+
+
+ grant-user-cloud-all
+ process-test-resources
+
+ execute
+
+
+ root
+ ${db.root.password}
+ jdbc:mysql://${db.simulator.host}:3306
+ GRANT ALL ON simulator.* to
+ ${db.simulator.username}@`%` identified by
+ '${db.simulator.password}';
+
+
+
+ create-schema
+ process-test-resources
+
+ execute
+
+
+
+ ${basedir}/target/db/create-schema-simulator.sql
+ ${basedir}/target/db/templates.simulator.sql
+
+
+
+
+
+
+
+
diff --git a/patches/systemvm/debian/config/etc/init.d/cloud-early-config b/patches/systemvm/debian/config/etc/init.d/cloud-early-config
index 64459fd6118..fe536cbb5a9 100755
--- a/patches/systemvm/debian/config/etc/init.d/cloud-early-config
+++ b/patches/systemvm/debian/config/etc/init.d/cloud-early-config
@@ -477,6 +477,7 @@ setup_redundant_router() {
cp /root/redundant_router/check_bumpup.sh $rrouter_bin_path/
cp /root/redundant_router/disable_pubip.sh $rrouter_bin_path/
cp /root/redundant_router/checkrouter.sh.templ /opt/cloud/bin/checkrouter.sh
+ cp /root/redundant_router/services.sh $rrouter_bin_path/
sed -i "s/\[ROUTER_ID\]/$NAME/g" /etc/keepalived/keepalived.conf
sed -i "s/\[ROUTER_IP\]/$GUEST_GW\/$GUEST_CIDR_SIZE/g" /etc/keepalived/keepalived.conf
sed -i "s/\[BOARDCAST\]/$GUEST_BRD/g" /etc/keepalived/keepalived.conf
diff --git a/patches/systemvm/debian/config/opt/cloud/bin/ipassoc.sh b/patches/systemvm/debian/config/opt/cloud/bin/ipassoc.sh
index c9a5e14e56b..5af5d9233a7 100755
--- a/patches/systemvm/debian/config/opt/cloud/bin/ipassoc.sh
+++ b/patches/systemvm/debian/config/opt/cloud/bin/ipassoc.sh
@@ -137,7 +137,7 @@ copy_routes_from_main() {
ip_addr_add() {
local dev="$1"
local ip="$2"
- sudo ip addr add dev $dev $ip > /dev/null
+ sudo ip addr add dev $dev $ip brd + > /dev/null
}
@@ -294,7 +294,7 @@ remove_an_ip () {
then
continue
fi
- sudo ip addr add dev $ethDev $ipMask
+ sudo ip addr add dev $ethDev $ipMask brd +
done
remove_routing $1
diff --git a/patches/systemvm/debian/config/opt/cloud/bin/passwd_server b/patches/systemvm/debian/config/opt/cloud/bin/passwd_server
index 71349dd0336..0f4a7728874 100755
--- a/patches/systemvm/debian/config/opt/cloud/bin/passwd_server
+++ b/patches/systemvm/debian/config/opt/cloud/bin/passwd_server
@@ -19,5 +19,5 @@
ips=$(ip addr show dev eth0 | grep inet | grep eth0 | awk '{print $2}' ); echo $ips
for ip in $ips; do
addr=$(echo $ip | awk -F'/' '{print $1}')
- /opt/cloud/bin/passwd_server_ip $addr &
+ /opt/cloud/bin/passwd_server_ip $addr >> /var/log/cloud.log 2>&1 &
done;
diff --git a/patches/systemvm/debian/config/root/redundant_router/disable_pubip.sh b/patches/systemvm/debian/config/root/redundant_router/disable_pubip.sh
index af5edbfd2a1..ee4e894ba69 100644
--- a/patches/systemvm/debian/config/root/redundant_router/disable_pubip.sh
+++ b/patches/systemvm/debian/config/root/redundant_router/disable_pubip.sh
@@ -21,5 +21,3 @@ while read i
do
ifconfig $i down
done < /tmp/iflist
-service cloud-passwd-srvr stop
-service dnsmasq stop
diff --git a/patches/systemvm/debian/config/root/redundant_router/enable_pubip.sh.templ b/patches/systemvm/debian/config/root/redundant_router/enable_pubip.sh.templ
index ccdef0b7ea6..0e42ec4968a 100644
--- a/patches/systemvm/debian/config/root/redundant_router/enable_pubip.sh.templ
+++ b/patches/systemvm/debian/config/root/redundant_router/enable_pubip.sh.templ
@@ -30,6 +30,4 @@ do
ifconfig $i up
fi
done < /tmp/iflist
-ip route add default via [GATEWAY] dev eth2 && \
-service cloud-passwd-srvr restart && \
-service dnsmasq restart
+ip route add default via [GATEWAY] dev eth2
diff --git a/patches/systemvm/debian/config/root/redundant_router/master.sh.templ b/patches/systemvm/debian/config/root/redundant_router/master.sh.templ
index 418fd5d83b8..11ca6284f65 100644
--- a/patches/systemvm/debian/config/root/redundant_router/master.sh.templ
+++ b/patches/systemvm/debian/config/root/redundant_router/master.sh.templ
@@ -28,12 +28,18 @@ fi
echo To master called >> [RROUTER_LOG]
[RROUTER_BIN_PATH]/enable_pubip.sh >> [RROUTER_LOG] 2>&1
ret=$?
+if [ $ret -eq 0 ]
+then
+ [RROUTER_BIN_PATH]/services.sh restart >> [RROUTER_LOG] 2>&1
+ ret=$?
+fi
last_msg=`tail -n 1 [RROUTER_LOG]`
echo Enable public ip returned $ret >> [RROUTER_LOG]
if [ $ret -ne 0 ]
then
echo Fail to enable public ip! >> [RROUTER_LOG]
[RROUTER_BIN_PATH]/disable_pubip.sh >> [RROUTER_LOG] 2>&1
+ [RROUTER_BIN_PATH]/services.sh stop >> [RROUTER_LOG] 2>&1
service keepalived stop >> [RROUTER_LOG] 2>&1
service conntrackd stop >> [RROUTER_LOG] 2>&1
echo Status: FAULT \($last_msg\) >> [RROUTER_LOG]
diff --git a/patches/systemvm/debian/config/root/redundant_router/services.sh b/patches/systemvm/debian/config/root/redundant_router/services.sh
new file mode 100644
index 00000000000..b7ebeed264c
--- /dev/null
+++ b/patches/systemvm/debian/config/root/redundant_router/services.sh
@@ -0,0 +1,68 @@
+#!/bin/bash
+# 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.
+
+vpn_service() {
+ ps aux|grep ipsec | grep -v grep > /dev/null
+ no_vpn=$?
+ if [ $no_vpn -eq 1 ]
+ then
+ return 0
+ fi
+ r=0
+ case "$1" in
+ stop)
+ service ipsec stop && \
+ service xl2tpd stop
+ r=$?
+ ;;
+ restart)
+ service ipsec restart && \
+ service xl2tpd restart
+ r=$?
+ ;;
+ esac
+ return $r
+}
+
+ret=0
+case "$1" in
+ start)
+ vpn_service restart && \
+ service cloud-passwd-srvr start && \
+ service dnsmasq start
+ ret=$?
+ ;;
+ stop)
+ vpn_service stop && \
+ service cloud-passwd-srvr stop && \
+ service dnsmasq stop
+ ret=$?
+ ;;
+ restart)
+ vpn_service restart && \
+ service cloud-passwd-srvr restart && \
+ service dnsmasq restart
+ ret=$?
+ ;;
+ *)
+ echo "Usage: services {start|stop|restart}"
+ exit 1
+ ;;
+esac
+
+exit $ret
diff --git a/patches/systemvm/debian/config/root/savepassword.sh b/patches/systemvm/debian/config/root/savepassword.sh
index 80a6928df0e..a096b862fce 100755
--- a/patches/systemvm/debian/config/root/savepassword.sh
+++ b/patches/systemvm/debian/config/root/savepassword.sh
@@ -24,7 +24,7 @@
source /root/func.sh
-lock="biglock"
+lock="passwdlock"
locked=$(getLockFile $lock)
if [ "$locked" != "1" ]
then
diff --git a/plugins/hypervisors/simulator/pom.xml b/plugins/hypervisors/simulator/pom.xml
new file mode 100644
index 00000000000..15b37900590
--- /dev/null
+++ b/plugins/hypervisors/simulator/pom.xml
@@ -0,0 +1,45 @@
+
+
+ 4.0.0
+
+ org.apache.cloudstack
+ cloudstack-plugins
+ 4.1.0-SNAPSHOT
+ ../../pom.xml
+
+ org.apache.cloudstack
+ cloud-plugin-hypervisor-simulator
+ 4.1.0-SNAPSHOT
+ Apache CloudStack Plugin - Hypervisor Simulator
+ Simulator Hypervisor for Cloudstack
+
+ install
+ src
+ test
+
+
+
+ org.apache.cloudstack
+ cloud-utils
+ ${project.version}
+
+
+
\ No newline at end of file
diff --git a/plugins/hypervisors/simulator/resources/components-simulator.xml b/plugins/hypervisors/simulator/resources/components-simulator.xml
new file mode 100644
index 00000000000..2658e4db3ee
--- /dev/null
+++ b/plugins/hypervisors/simulator/resources/components-simulator.xml
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/agent-simulator/src/com/cloud/agent/MetricsCollector.java b/plugins/hypervisors/simulator/src/com/cloud/agent/MetricsCollector.java
similarity index 89%
rename from agent-simulator/src/com/cloud/agent/MetricsCollector.java
rename to plugins/hypervisors/simulator/src/com/cloud/agent/MetricsCollector.java
index 7d86a0c8e3e..fd611f83b9f 100644
--- a/agent-simulator/src/com/cloud/agent/MetricsCollector.java
+++ b/plugins/hypervisors/simulator/src/com/cloud/agent/MetricsCollector.java
@@ -30,43 +30,43 @@ import com.cloud.utils.concurrency.NamedThreadFactory;
public class MetricsCollector {
private static final Logger s_logger = Logger.getLogger(MetricsCollector.class);
-
+
private final Set vmNames = new HashSet();
private final Set newVMnames = new HashSet();
private final Map metricsMap = new HashMap();
-
+
private final transient ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(1, new NamedThreadFactory("Metrics"));
private Set _currentVms;
-
+
public MetricsCollector(Set currentVms) {
_currentVms = currentVms;
getAllVMNames();
}
-
+
public MetricsCollector() {
-
+
}
-
+
public synchronized void getAllVMNames() {
Set currentVMs = _currentVms;
-
+
newVMnames.clear();
newVMnames.addAll(currentVMs);
newVMnames.removeAll(vmNames); //leave only new vms
-
+
vmNames.removeAll(currentVMs); //old vms - current vms --> leave non-running vms;
for (String vm: vmNames) {
- removeVM(vm);
+ removeVM(vm);
}
-
+
vmNames.clear();
vmNames.addAll(currentVMs);
}
-
+
public synchronized void submitMetricsJobs() {
s_logger.debug("Submit Metric Jobs called");
-
+
for (String vm : newVMnames) {
MockVmMetrics task = new MockVmMetrics(vm);
if (!metricsMap.containsKey(vm)) {
@@ -77,30 +77,30 @@ public class MetricsCollector {
}
newVMnames.clear();
}
-
+
public synchronized void addVM(String vmName) {
newVMnames.add(vmName);
s_logger.debug("Added vm name= " + vmName);
}
-
+
public synchronized void removeVM(String vmName) {
newVMnames.remove(vmName);
vmNames.remove(vmName);
MockVmMetrics task = metricsMap.get(vmName);
- if (task != null) {
- task.stop();
- boolean r1= task.getFuture().cancel(false);
- metricsMap.remove(vmName);
- s_logger.debug("removeVM: cancel returned " + r1 + " for VM " + vmName);
- } else {
- s_logger.warn("removeVM called for nonexistent VM " + vmName);
- }
+ if (task != null) {
+ task.stop();
+ boolean r1= task.getFuture().cancel(false);
+ metricsMap.remove(vmName);
+ s_logger.debug("removeVM: cancel returned " + r1 + " for VM " + vmName);
+ } else {
+ s_logger.warn("removeVM called for nonexistent VM " + vmName);
}
-
+ }
+
public synchronized Set getVMNames() {
return vmNames;
}
-
+
public synchronized Map getMetricsMap() {
return metricsMap;
}
diff --git a/agent-simulator/src/com/cloud/agent/MockVmMetrics.java b/plugins/hypervisors/simulator/src/com/cloud/agent/MockVmMetrics.java
similarity index 96%
rename from agent-simulator/src/com/cloud/agent/MockVmMetrics.java
rename to plugins/hypervisors/simulator/src/com/cloud/agent/MockVmMetrics.java
index f106f367a9c..30b99e753a1 100644
--- a/agent-simulator/src/com/cloud/agent/MockVmMetrics.java
+++ b/plugins/hypervisors/simulator/src/com/cloud/agent/MockVmMetrics.java
@@ -25,52 +25,52 @@ import org.apache.log4j.Logger;
public class MockVmMetrics implements Runnable {
private static final Logger s_logger = Logger.getLogger(MockVmMetrics.class);
-
+
private String vmName;
-
+
public final int MAX_INTERFACES=1;
-
+
public final int MAX_DISKS=8;
-
+
//the last calculated traffic speed (transmit) per interface
private Map netTxKBps = new HashMap();
-
+
//the last calculated traffic speed (receive) per interface
private Map netRxKBps = new HashMap();
-
+
//the last calculated disk write speed per disk (Bytes Per Second)
private Map diskWriteKBytesPerSec = new HashMap();
-
+
//the last calculated disk read speed per disk (Bytes Per Second)
private Map diskReadKBytesPerSec = new HashMap();
-
+
//Total Bytes Transmitted on network interfaces
private Map netTxTotalBytes = new HashMap();
-
+
//Total Bytes Received on network interfaces
private Map netRxTotalBytes = new HashMap();
-
+
//Total Bytes read per disk
private Map diskReadTotalBytes = new HashMap();
//Total Bytes written per disk
private Map diskWriteTotalBytes = new HashMap();
-
+
//CPU time in seconds
private Double cpuSeconds = new Double(0.0);
-
+
//CPU percentage
private Float cpuPercent = new Float(0.0);
-
+
private Map diskMap = new HashMap();
private Map vifMap = new HashMap();
-
+
private Map diskStatTimestamp = new HashMap();
private Map netStatTimestamp = new HashMap();
-
+
private long cpuStatTimestamp = 0L;
-
+
private ScheduledFuture> future;
private boolean stopped = false;
private Random randSeed = new Random();
@@ -80,44 +80,44 @@ public class MockVmMetrics implements Runnable {
vifMap.put("eth0", "eth0");
vifMap.put("eth1", "eth1");
vifMap.put("eth2", "eth2");
-
+
Long networkStart = 0L;
netTxTotalBytes.put("eth0", networkStart);
netRxTotalBytes.put("eth0", networkStart);
-
+
netTxTotalBytes.put("eth1", networkStart);
netRxTotalBytes.put("eth1", networkStart);
-
+
netTxTotalBytes.put("eth2", networkStart);
- netRxTotalBytes.put("eth2", networkStart);
+ netRxTotalBytes.put("eth2", networkStart);
}
-
+
private int getIncrementor() {
return randSeed.nextInt(100);
}
-
+
@Override
public void run() {
if(s_logger.isDebugEnabled()) {
s_logger.debug("Generating MockVM metrics");
}
for (Map.Entry entry : netRxTotalBytes.entrySet()) {
- entry.setValue(entry.getValue() + getIncrementor());
+ entry.setValue(entry.getValue() + getIncrementor());
}
-
+
for (Map.Entry entry : netTxTotalBytes.entrySet()) {
entry.setValue(entry.getValue() + getIncrementor());
}
}
-
+
public String getVmName() {
return vmName;
}
-
+
public Map getNetTxKBps() {
return netTxKBps;
}
-
+
public Map getNetRxKBps() {
return netRxKBps;
}
@@ -125,11 +125,11 @@ public class MockVmMetrics implements Runnable {
public Map getDiskWriteBytesPerSec() {
return diskWriteKBytesPerSec;
}
-
+
public Map getDiskReadBytesPerSec() {
return diskReadKBytesPerSec;
}
-
+
public Map getNetTxTotalBytes() {
return netTxTotalBytes;
}
@@ -137,7 +137,7 @@ public class MockVmMetrics implements Runnable {
public Map getNetRxTotalBytes() {
return netRxTotalBytes;
}
-
+
public Map getDiskReadTotalBytes() {
return diskReadTotalBytes;
}
@@ -145,7 +145,7 @@ public class MockVmMetrics implements Runnable {
public Map getDiskWriteTotalBytes() {
return diskWriteTotalBytes;
}
-
+
public Double getNetTxKBps(String intf) {
return netTxKBps.get(intf);
}
@@ -153,7 +153,7 @@ public class MockVmMetrics implements Runnable {
public Double getNetRxKBps(String intf) {
return netRxKBps.get(intf);
}
-
+
public Double getDiskWriteKBytesPerSec(String disk) {
return diskWriteKBytesPerSec.get(disk);
}
@@ -161,7 +161,7 @@ public class MockVmMetrics implements Runnable {
public Double getDiskReadKBytesPerSec(String disk) {
return diskReadKBytesPerSec.get(disk);
}
-
+
public Long getNetTxTotalBytes(String intf) {
return netTxTotalBytes.get(intf);
}
@@ -169,7 +169,7 @@ public class MockVmMetrics implements Runnable {
public Long getNetRxTotalBytes(String intf) {
return netRxTotalBytes.get(intf);
}
-
+
public Long getDiskReadTotalBytes(String disk) {
return diskReadTotalBytes.get(disk);
}
@@ -177,7 +177,7 @@ public class MockVmMetrics implements Runnable {
public Long getDiskWriteTotalBytes(String disk) {
return diskWriteTotalBytes.get(disk);
}
-
+
public Double getCpuSeconds() {
return cpuSeconds;
}
@@ -189,7 +189,7 @@ public class MockVmMetrics implements Runnable {
public Float getCpuPercent() {
return cpuPercent;
}
-
+
public void setFuture(ScheduledFuture> sf) {
this.future = sf;
}
@@ -197,9 +197,8 @@ public class MockVmMetrics implements Runnable {
public ScheduledFuture> getFuture() {
return future;
}
-
+
public void stop() {
this.stopped = true;
}
}
-
diff --git a/agent-simulator/src/com/cloud/agent/MultiCaster.java b/plugins/hypervisors/simulator/src/com/cloud/agent/MultiCaster.java
similarity index 94%
rename from agent-simulator/src/com/cloud/agent/MultiCaster.java
rename to plugins/hypervisors/simulator/src/com/cloud/agent/MultiCaster.java
index 9c98ef651be..7d38baf0e68 100644
--- a/agent-simulator/src/com/cloud/agent/MultiCaster.java
+++ b/plugins/hypervisors/simulator/src/com/cloud/agent/MultiCaster.java
@@ -30,49 +30,49 @@ import org.apache.log4j.Logger;
public class MultiCaster implements Runnable {
private static final Logger s_logger = Logger.getLogger(MultiCaster.class);
-
+
public final int MAX_PACKET_SIZE = 8096;
-
+
private List listeners;
private DatagramSocket socket;
private byte[] recvBuffer;
-
+
private Thread driver;
private volatile boolean stopRequested = false;
-
+
public MultiCaster() {
listeners = new ArrayList();
recvBuffer = new byte[MAX_PACKET_SIZE];
}
-
+
public void addListener(MultiCasterListener listener) {
synchronized(listeners) {
listeners.add(listener);
}
}
-
+
public void removeListener(MultiCasterListener listener) {
synchronized(listeners) {
listeners.remove(listener);
}
}
-
- public void cast(byte[] buf, int off, int len,
+
+ public void cast(byte[] buf, int off, int len,
InetAddress toAddress, int nToPort) throws IOException {
-
+
if(socket == null)
throw new IOException("multi caster is not started");
-
+
if(len >= MAX_PACKET_SIZE)
throw new IOException("packet size exceeds limit of " + MAX_PACKET_SIZE);
-
- DatagramPacket packet = new DatagramPacket(buf, off,
+
+ DatagramPacket packet = new DatagramPacket(buf, off,
len, toAddress, nToPort);
socket.send(packet);
}
-
- public void start(String strOutboundAddress,
+
+ public void start(String strOutboundAddress,
String strClusterAddress, int nPort) throws SocketException {
assert(socket == null);
@@ -82,22 +82,22 @@ public class MultiCaster implements Runnable {
} catch(IOException e) {
s_logger.error("Unexpected exception " , e);
}
-
+
if(addr != null && addr.isMulticastAddress()) {
try {
socket = new MulticastSocket(nPort);
socket.setReuseAddress(true);
-
+
if(s_logger.isInfoEnabled())
s_logger.info("Join multicast group : " + addr);
-
+
((MulticastSocket)socket).joinGroup(addr);
((MulticastSocket)socket).setTimeToLive(1);
-
+
if(strOutboundAddress != null) {
if(s_logger.isInfoEnabled())
s_logger.info("set outgoing interface to : " + strOutboundAddress);
-
+
InetAddress ia = InetAddress.getByName(strOutboundAddress);
NetworkInterface ni = NetworkInterface.getByInetAddress(ia);
((MulticastSocket)socket).setNetworkInterface(ni);
@@ -109,16 +109,16 @@ public class MultiCaster implements Runnable {
socket = new DatagramSocket(nPort);
socket.setReuseAddress(true);
}
-
+
driver = new Thread(this, "Multi-caster");
driver.setDaemon(true);
driver.start();
}
-
+
public void stop() {
if(socket != null) {
stopRequested = true;
-
+
socket.close();
if(driver != null) {
try {
@@ -128,17 +128,17 @@ public class MultiCaster implements Runnable {
driver = null;
}
}
-
+
socket = null;
stopRequested = false;
}
-
+
public void run() {
while(!stopRequested) {
try {
DatagramPacket packet = new DatagramPacket(recvBuffer, recvBuffer.length);
socket.receive(packet);
-
+
for(Object listener : listeners.toArray()) {
((MultiCasterListener)listener).onMultiCasting(packet.getData(),
packet.getOffset(), packet.getLength(), packet.getAddress());
diff --git a/agent-simulator/src/com/cloud/agent/MultiCasterListener.java b/plugins/hypervisors/simulator/src/com/cloud/agent/MultiCasterListener.java
similarity index 100%
rename from agent-simulator/src/com/cloud/agent/MultiCasterListener.java
rename to plugins/hypervisors/simulator/src/com/cloud/agent/MultiCasterListener.java
diff --git a/agent-simulator/src/com/cloud/agent/SimulatorCmd.java b/plugins/hypervisors/simulator/src/com/cloud/agent/SimulatorCmd.java
similarity index 96%
rename from agent-simulator/src/com/cloud/agent/SimulatorCmd.java
rename to plugins/hypervisors/simulator/src/com/cloud/agent/SimulatorCmd.java
index 342bfd2491e..caed518dd78 100644
--- a/agent-simulator/src/com/cloud/agent/SimulatorCmd.java
+++ b/plugins/hypervisors/simulator/src/com/cloud/agent/SimulatorCmd.java
@@ -20,17 +20,17 @@ import java.io.Serializable;
public class SimulatorCmd implements Serializable {
private static final long serialVersionUID = 1L;
-
+
private String testCase = "DEFAULT";
-
+
public SimulatorCmd(String testCase) {
- this.testCase = testCase;
+ this.testCase = testCase;
}
-
+
public String getTestCase() {
return testCase;
}
-
+
public void setTestCase(String testCase) {
this.testCase = testCase;
}
diff --git a/agent-simulator/src/com/cloud/agent/SimulatorMigrateVmCmd.java b/plugins/hypervisors/simulator/src/com/cloud/agent/SimulatorMigrateVmCmd.java
similarity index 99%
rename from agent-simulator/src/com/cloud/agent/SimulatorMigrateVmCmd.java
rename to plugins/hypervisors/simulator/src/com/cloud/agent/SimulatorMigrateVmCmd.java
index f86b16ee7d4..6a2190d696a 100644
--- a/agent-simulator/src/com/cloud/agent/SimulatorMigrateVmCmd.java
+++ b/plugins/hypervisors/simulator/src/com/cloud/agent/SimulatorMigrateVmCmd.java
@@ -21,12 +21,12 @@ public class SimulatorMigrateVmCmd extends SimulatorCmd {
private static final long serialVersionUID = 1L;
private String destIp;
-
+
private String vmName;
private long ramSize;
private int cpuCount;
private int utilization;
-
+
public SimulatorMigrateVmCmd(String testCase) {
super(testCase);
}
@@ -38,7 +38,7 @@ public class SimulatorMigrateVmCmd extends SimulatorCmd {
public void setDestIp(String destIp) {
this.destIp = destIp;
}
-
+
public String getVmName() {
return vmName;
}
@@ -70,14 +70,14 @@ public class SimulatorMigrateVmCmd extends SimulatorCmd {
public void setUtilization(int utilization) {
this.utilization = utilization;
}
-
+
public String toString() {
StringBuffer sb = new StringBuffer();
sb.append("SimulatorMigrateVmCmd {").append("vm: ").append(getVmName());
sb.append(", destIp: ").append(getDestIp()).append(", ramSize: ").append(getRamSize());
sb.append(", cpuCount: ").append(getCpuCount()).append(", utilization: ").append(getUtilization());
sb.append("}");
-
+
return sb.toString();
}
}
diff --git a/agent-simulator/src/com/cloud/agent/manager/MockAgentManager.java b/plugins/hypervisors/simulator/src/com/cloud/agent/manager/MockAgentManager.java
similarity index 97%
rename from agent-simulator/src/com/cloud/agent/manager/MockAgentManager.java
rename to plugins/hypervisors/simulator/src/com/cloud/agent/manager/MockAgentManager.java
index 7db5b20f55c..2bb1205b115 100644
--- a/agent-simulator/src/com/cloud/agent/manager/MockAgentManager.java
+++ b/plugins/hypervisors/simulator/src/com/cloud/agent/manager/MockAgentManager.java
@@ -56,8 +56,6 @@ public interface MockAgentManager extends Manager {
Answer pingTest(PingTestCommand cmd);
- Answer prepareForMigrate(PrepareForMigrationCommand cmd);
-
MockHost getHost(String guid);
Answer maintain(MaintainCommand cmd);
diff --git a/agent-simulator/src/com/cloud/agent/manager/MockAgentManagerImpl.java b/plugins/hypervisors/simulator/src/com/cloud/agent/manager/MockAgentManagerImpl.java
similarity index 98%
rename from agent-simulator/src/com/cloud/agent/manager/MockAgentManagerImpl.java
rename to plugins/hypervisors/simulator/src/com/cloud/agent/manager/MockAgentManagerImpl.java
index cb992979e07..f6bc8fc7fee 100755
--- a/agent-simulator/src/com/cloud/agent/manager/MockAgentManagerImpl.java
+++ b/plugins/hypervisors/simulator/src/com/cloud/agent/manager/MockAgentManagerImpl.java
@@ -429,15 +429,6 @@ public class MockAgentManagerImpl implements MockAgentManager {
return new Answer(cmd);
}
- @Override
- public PrepareForMigrationAnswer prepareForMigrate(PrepareForMigrationCommand cmd) {
- VirtualMachineTO vm = cmd.getVirtualMachine();
- if (s_logger.isDebugEnabled()) {
- s_logger.debug("Preparing host for migrating " + vm);
- }
- return new PrepareForMigrationAnswer(cmd);
- }
-
@Override
public boolean start() {
return true;
diff --git a/agent-simulator/src/com/cloud/agent/manager/MockStorageManager.java b/plugins/hypervisors/simulator/src/com/cloud/agent/manager/MockStorageManager.java
similarity index 85%
rename from agent-simulator/src/com/cloud/agent/manager/MockStorageManager.java
rename to plugins/hypervisors/simulator/src/com/cloud/agent/manager/MockStorageManager.java
index 3b7a286c5e1..ff26d185d76 100644
--- a/agent-simulator/src/com/cloud/agent/manager/MockStorageManager.java
+++ b/plugins/hypervisors/simulator/src/com/cloud/agent/manager/MockStorageManager.java
@@ -35,35 +35,26 @@ import com.cloud.agent.api.ModifyStoragePoolCommand;
import com.cloud.agent.api.SecStorageSetupCommand;
import com.cloud.agent.api.SecStorageVMSetupCommand;
import com.cloud.agent.api.StoragePoolInfo;
-import com.cloud.agent.api.storage.CopyVolumeAnswer;
-import com.cloud.agent.api.storage.CopyVolumeCommand;
-import com.cloud.agent.api.storage.CreateAnswer;
-import com.cloud.agent.api.storage.CreateCommand;
-import com.cloud.agent.api.storage.DeleteTemplateCommand;
-import com.cloud.agent.api.storage.DestroyCommand;
-import com.cloud.agent.api.storage.DownloadCommand;
-import com.cloud.agent.api.storage.DownloadProgressCommand;
-import com.cloud.agent.api.storage.ListTemplateCommand;
-import com.cloud.agent.api.storage.PrimaryStorageDownloadAnswer;
-import com.cloud.agent.api.storage.PrimaryStorageDownloadCommand;
+import com.cloud.agent.api.storage.*;
import com.cloud.utils.component.Manager;
public interface MockStorageManager extends Manager {
public static final long DEFAULT_HOST_STORAGE_SIZE = 1 * 1024 * 1024 * 1024 * 1024L; //1T
public static final long DEFAULT_TEMPLATE_SIZE = 1 * 1000 * 1000 * 1000L; //1G
-
+
public PrimaryStorageDownloadAnswer primaryStorageDownload(PrimaryStorageDownloadCommand cmd);
-
+
public CreateAnswer createVolume(CreateCommand cmd);
public AttachVolumeAnswer AttachVolume(AttachVolumeCommand cmd);
public Answer AttachIso(AttachIsoCommand cmd);
-
+
public Answer DeleteStoragePool(DeleteStoragePoolCommand cmd);
public Answer ModifyStoragePool(ModifyStoragePoolCommand cmd);
public Answer CreateStoragePool(CreateStoragePoolCommand cmd);
-
+
public Answer SecStorageSetup(SecStorageSetupCommand cmd);
public Answer ListTemplates(ListTemplateCommand cmd);
+ public Answer ListVolumes(ListVolumeCommand cmd);
public Answer Destroy(DestroyCommand cmd);
public Answer Download(DownloadCommand cmd);
public Answer DownloadProcess(DownloadProgressCommand cmd);
@@ -74,7 +65,7 @@ public interface MockStorageManager extends Manager {
public Answer CreateVolumeFromSnapshot(CreateVolumeFromSnapshotCommand cmd);
public Answer DeleteTemplate(DeleteTemplateCommand cmd);
public Answer SecStorageVMSetup(SecStorageVMSetupCommand cmd);
-
+
public void preinstallTemplates(String url, long zoneId);
StoragePoolInfo getLocalStorage(String hostGuid);
diff --git a/agent-simulator/src/com/cloud/agent/manager/MockStorageManagerImpl.java b/plugins/hypervisors/simulator/src/com/cloud/agent/manager/MockStorageManagerImpl.java
similarity index 95%
rename from agent-simulator/src/com/cloud/agent/manager/MockStorageManagerImpl.java
rename to plugins/hypervisors/simulator/src/com/cloud/agent/manager/MockStorageManagerImpl.java
index cc15b206738..1076089dcd6 100644
--- a/agent-simulator/src/com/cloud/agent/manager/MockStorageManagerImpl.java
+++ b/plugins/hypervisors/simulator/src/com/cloud/agent/manager/MockStorageManagerImpl.java
@@ -30,6 +30,7 @@ import java.util.UUID;
import javax.ejb.Local;
import javax.naming.ConfigurationException;
+import com.cloud.agent.api.storage.*;
import org.apache.log4j.Logger;
import com.cloud.agent.api.Answer;
@@ -56,20 +57,6 @@ import com.cloud.agent.api.SecStorageSetupAnswer;
import com.cloud.agent.api.SecStorageSetupCommand;
import com.cloud.agent.api.SecStorageVMSetupCommand;
import com.cloud.agent.api.StoragePoolInfo;
-import com.cloud.agent.api.storage.CopyVolumeAnswer;
-import com.cloud.agent.api.storage.CopyVolumeCommand;
-import com.cloud.agent.api.storage.CreateAnswer;
-import com.cloud.agent.api.storage.CreateCommand;
-import com.cloud.agent.api.storage.CreatePrivateTemplateAnswer;
-import com.cloud.agent.api.storage.DeleteTemplateCommand;
-import com.cloud.agent.api.storage.DestroyCommand;
-import com.cloud.agent.api.storage.DownloadAnswer;
-import com.cloud.agent.api.storage.DownloadCommand;
-import com.cloud.agent.api.storage.DownloadProgressCommand;
-import com.cloud.agent.api.storage.ListTemplateAnswer;
-import com.cloud.agent.api.storage.ListTemplateCommand;
-import com.cloud.agent.api.storage.PrimaryStorageDownloadAnswer;
-import com.cloud.agent.api.storage.PrimaryStorageDownloadCommand;
import com.cloud.agent.api.to.StorageFilerTO;
import com.cloud.agent.api.to.VolumeTO;
import com.cloud.simulator.MockHost;
@@ -139,8 +126,8 @@ public class MockStorageManagerImpl implements MockStorageManager {
@Override
public PrimaryStorageDownloadAnswer primaryStorageDownload(PrimaryStorageDownloadCommand cmd) {
- MockVolumeVO template = findVolumeFromSecondary(cmd.getUrl(), cmd.getSecondaryStorageUrl(),
- MockVolumeType.TEMPLATE);
+ MockVolumeVO template = findVolumeFromSecondary(cmd.getUrl(), cmd.getSecondaryStorageUrl(),
+ MockVolumeType.TEMPLATE);
if (template == null) {
return new PrimaryStorageDownloadAnswer("Can't find primary storage");
}
@@ -421,6 +408,49 @@ public class MockStorageManagerImpl implements MockStorageManager {
return new SecStorageSetupAnswer(storage.getMountPoint());
}
+ @Override
+ public Answer ListVolumes(ListVolumeCommand cmd) {
+ Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
+ MockSecStorageVO storage = null;
+ try {
+ txn.start();
+ storage = _mockSecStorageDao.findByUrl(cmd.getSecUrl());
+ if (storage == null) {
+ return new Answer(cmd, false, "Failed to get secondary storage");
+ }
+ txn.commit();
+ } catch (Exception ex) {
+ txn.rollback();
+ throw new CloudRuntimeException("Error when finding sec storage " + cmd.getSecUrl(), ex);
+ } finally {
+ txn.close();
+ txn = Transaction.open(Transaction.CLOUD_DB);
+ txn.close();
+ }
+
+ txn = Transaction.open(Transaction.SIMULATOR_DB);
+ try {
+ txn.start();
+ List volumes = _mockVolumeDao.findByStorageIdAndType(storage.getId(),
+ MockVolumeType.VOLUME);
+
+ Map templateInfos = new HashMap();
+ for (MockVolumeVO volume : volumes) {
+ templateInfos.put(volume.getId(), new TemplateInfo(volume.getName(), volume.getPath()
+ .replaceAll(storage.getMountPoint(), ""), volume.getSize(), volume.getSize(), true, false));
+ }
+ txn.commit();
+ return new ListVolumeAnswer(cmd.getSecUrl(), templateInfos);
+ } catch (Exception ex) {
+ txn.rollback();
+ throw new CloudRuntimeException("Error when finding template on sec storage " + storage.getId(), ex);
+ } finally {
+ txn.close();
+ txn = Transaction.open(Transaction.CLOUD_DB);
+ txn.close();
+ }
+ }
+
@Override
public Answer ListTemplates(ListTemplateCommand cmd) {
Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
@@ -703,7 +733,7 @@ public class MockStorageManagerImpl implements MockStorageManager {
txn = Transaction.open(Transaction.CLOUD_DB);
txn.close();
}
-
+
MockVolumeVO newsnapshot = new MockVolumeVO();
String name = UUID.randomUUID().toString();
newsnapshot.setName(name);
@@ -907,7 +937,7 @@ public class MockStorageManagerImpl implements MockStorageManager {
long defaultTemplateSize = 2 * 1024 * 1024 * 1024L;
MockVolumeVO template = new MockVolumeVO();
template.setName("simulator-domR");
- template.setPath(storage.getMountPoint() + "template/tmpl/1/9/" + UUID.randomUUID().toString());
+ template.setPath(storage.getMountPoint() + "template/tmpl/1/10/" + UUID.randomUUID().toString());
template.setPoolId(storage.getId());
template.setSize(defaultTemplateSize);
template.setType(MockVolumeType.TEMPLATE);
@@ -928,7 +958,7 @@ public class MockStorageManagerImpl implements MockStorageManager {
template = new MockVolumeVO();
template.setName("simulator-Centos");
- template.setPath(storage.getMountPoint() + "template/tmpl/1/10/" + UUID.randomUUID().toString());
+ template.setPath(storage.getMountPoint() + "template/tmpl/1/11/" + UUID.randomUUID().toString());
template.setPoolId(storage.getId());
template.setSize(defaultTemplateSize);
template.setType(MockVolumeType.TEMPLATE);
@@ -953,7 +983,7 @@ public class MockStorageManagerImpl implements MockStorageManager {
@Override
public StoragePoolInfo getLocalStorage(String hostGuid) {
Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
- MockHost host = null;
+ MockHost host = null;
MockStoragePoolVO storagePool = null;
try {
txn.start();
@@ -968,7 +998,7 @@ public class MockStorageManagerImpl implements MockStorageManager {
txn = Transaction.open(Transaction.CLOUD_DB);
txn.close();
}
-
+
if (storagePool == null) {
String uuid = UUID.randomUUID().toString();
storagePool = new MockStoragePoolVO();
@@ -998,7 +1028,7 @@ public class MockStorageManagerImpl implements MockStorageManager {
@Override
public StoragePoolInfo getLocalStorage(String hostGuid, Long storageSize) {
Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
- MockHost host = null;
+ MockHost host = null;
try {
txn.start();
host = _mockHostDao.findByGuid(hostGuid);
diff --git a/agent-simulator/src/com/cloud/agent/manager/MockVmManager.java b/plugins/hypervisors/simulator/src/com/cloud/agent/manager/MockVmManager.java
similarity index 97%
rename from agent-simulator/src/com/cloud/agent/manager/MockVmManager.java
rename to plugins/hypervisors/simulator/src/com/cloud/agent/manager/MockVmManager.java
index 07cf584883e..117e2f6374f 100644
--- a/agent-simulator/src/com/cloud/agent/manager/MockVmManager.java
+++ b/plugins/hypervisors/simulator/src/com/cloud/agent/manager/MockVmManager.java
@@ -40,7 +40,7 @@ import com.cloud.vm.VirtualMachine.State;
public interface MockVmManager extends Manager {
public Answer stopVM(StopCommand cmd);
public Answer rebootVM(RebootCommand cmd);
-
+
public Answer checkVmState(CheckVirtualMachineCommand cmd);
public Map getVmStates(String hostGuid);
public Answer getVncPort(GetVncPortCommand cmd);
@@ -49,31 +49,32 @@ public interface MockVmManager extends Manager {
Answer getVmStats(GetVmStatsCommand cmd);
public CheckSshAnswer checkSshCommand(CheckSshCommand cmd);
-
+
Answer SetStaticNatRules(SetStaticNatRulesCommand cmd);
-
+
Answer SetPortForwardingRules(SetPortForwardingRulesCommand cmd);
Answer SetFirewallRules(SetFirewallRulesCommand cmd);
-
+
Answer getNetworkUsage(NetworkUsageCommand cmd);
-
+
Answer IpAssoc(IpAssocCommand cmd);
Answer LoadBalancerConfig(LoadBalancerConfigCommand cmd);
-
+
Answer AddDhcpEntry(DhcpEntryCommand cmd);
-
+
Answer setVmData(VmDataCommand cmd);
Answer CleanupNetworkRules(CleanupNetworkRulesCmd cmd, SimulatorInfo info);
-
+
Answer CheckConsoleProxyLoad(CheckConsoleProxyLoadCommand cmd);
Answer WatchConsoleProxyLoad(WatchConsoleProxyLoadCommand cmd);
-
+
Answer SavePassword(SavePasswordCommand cmd);
HashMap> syncNetworkGroups(SimulatorInfo info);
SecurityGroupRuleAnswer AddSecurityGroupRules(SecurityGroupRulesCmd cmd, SimulatorInfo info);
MigrateAnswer Migrate(MigrateCommand cmd, SimulatorInfo info);
+ PrepareForMigrationAnswer prepareForMigrate(PrepareForMigrationCommand cmd);
GetDomRVersionAnswer getDomRVersion(GetDomRVersionCmd cmd);
Map getVms(String hostGuid);
diff --git a/agent-simulator/src/com/cloud/agent/manager/MockVmManagerImpl.java b/plugins/hypervisors/simulator/src/com/cloud/agent/manager/MockVmManagerImpl.java
similarity index 88%
rename from agent-simulator/src/com/cloud/agent/manager/MockVmManagerImpl.java
rename to plugins/hypervisors/simulator/src/com/cloud/agent/manager/MockVmManagerImpl.java
index 78881f2fc3a..40cd80acf8e 100644
--- a/agent-simulator/src/com/cloud/agent/manager/MockVmManagerImpl.java
+++ b/plugins/hypervisors/simulator/src/com/cloud/agent/manager/MockVmManagerImpl.java
@@ -60,20 +60,20 @@ public class MockVmManagerImpl implements MockVmManager {
@Inject MockHostDao _mockHostDao = null;
@Inject MockSecurityRulesDao _mockSecurityDao = null;
private Map>> _securityRules = new ConcurrentHashMap>>();
-
+
public MockVmManagerImpl() {
}
-
+
@Override
public boolean configure(String name, Map params)
throws ConfigurationException {
-
+
return true;
}
-
+
public String startVM(String vmName, NicTO[] nics,
- int cpuHz, long ramSize,
- String bootArgs, String hostGuid) {
+ int cpuHz, long ramSize,
+ String bootArgs, String hostGuid) {
Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
MockHost host = null;
@@ -95,7 +95,7 @@ public class MockVmManagerImpl implements MockVmManager {
txn = Transaction.open(Transaction.CLOUD_DB);
txn.close();
}
-
+
if(vm == null) {
int vncPort = 0;
if(vncPort < 0)
@@ -107,14 +107,15 @@ public class MockVmManagerImpl implements MockVmManager {
vm.setName(vmName);
vm.setVncPort(vncPort);
vm.setHostId(host.getId());
+ vm.setBootargs(bootArgs);
if(vmName.startsWith("s-")) {
- vm.setType("SecondaryStorageVm");
+ vm.setType("SecondaryStorageVm");
} else if (vmName.startsWith("v-")) {
- vm.setType("ConsoleProxy");
+ vm.setType("ConsoleProxy");
} else if (vmName.startsWith("r-")) {
- vm.setType("DomainRouter");
+ vm.setType("DomainRouter");
} else if (vmName.startsWith("i-")) {
- vm.setType("User");
+ vm.setType("User");
}
txn = Transaction.open(Transaction.SIMULATOR_DB);
try {
@@ -133,18 +134,18 @@ public class MockVmManagerImpl implements MockVmManager {
if(vm.getState() == State.Stopped) {
vm.setState(State.Running);
txn = Transaction.open(Transaction.SIMULATOR_DB);
- try {
- txn.start();
- _mockVmDao.update(vm.getId(), (MockVMVO)vm);
- txn.commit();
- } catch (Exception ex) {
- txn.rollback();
- throw new CloudRuntimeException("unable to update vm " + vm.getName(), ex);
- } finally {
- txn.close();
+ try {
+ txn.start();
+ _mockVmDao.update(vm.getId(), (MockVMVO)vm);
+ txn.commit();
+ } catch (Exception ex) {
+ txn.rollback();
+ throw new CloudRuntimeException("unable to update vm " + vm.getName(), ex);
+ } finally {
+ txn.close();
txn = Transaction.open(Transaction.CLOUD_DB);
txn.close();
- }
+ }
}
}
@@ -212,7 +213,7 @@ public class MockVmManagerImpl implements MockVmManager {
}
return true;
}
-
+
@Override
public Map getVms(String hostGuid) {
Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
@@ -238,15 +239,16 @@ public class MockVmManagerImpl implements MockVmManager {
@Override
public CheckRouterAnswer checkRouter(CheckRouterCommand cmd) {
String router_name = cmd.getAccessDetail(NetworkElementCommand.ROUTER_NAME);
- int router_id = Integer.parseInt(router_name.split("-")[1]);
- if (router_id % 2 == 0) {
- s_logger.debug("Found even routerId, making it MASTER in RvR");
+ MockVm vm = _mockVmDao.findByVmName(router_name);
+ String args = vm.getBootargs();
+ if (args.indexOf("router_pr=100") > 0) {
+ s_logger.debug("Router priority is for MASTER");
CheckRouterAnswer ans = new CheckRouterAnswer(cmd, "Status: MASTER & Bumped: NO", true);
ans.setState(VirtualRouter.RedundantState.MASTER);
return ans;
} else {
- s_logger.debug("Found odd routerId, making it BACKUP in RvR");
- CheckRouterAnswer ans = new CheckRouterAnswer(cmd, "Status: MASTER & Bumped: NO", true);
+ s_logger.debug("Router priority is for BACKUP");
+ CheckRouterAnswer ans = new CheckRouterAnswer(cmd, "Status: BACKUP & Bumped: NO", true);
ans.setState(VirtualRouter.RedundantState.BACKUP);
return ans;
}
@@ -255,13 +257,13 @@ public class MockVmManagerImpl implements MockVmManager {
@Override
public Answer bumpPriority(BumpUpPriorityCommand cmd) {
String router_name = cmd.getAccessDetail(NetworkElementCommand.ROUTER_NAME);
- int router_id = Integer.parseInt(router_name.split("-")[1]);
- if (router_id % 2 == 0) {
- return new Answer(cmd, true, "Status: MASTER & Bumped: YES");
- } else {
+ MockVm vm = _mockVmDao.findByVmName(router_name);
+ String args = vm.getBootargs();
+ if (args.indexOf("router_pr=100") > 0) {
return new Answer(cmd, true, "Status: BACKUP & Bumped: YES");
+ } else {
+ return new Answer(cmd, true, "Status: MASTER & Bumped: YES");
}
-
}
@Override
@@ -303,8 +305,8 @@ public class MockVmManagerImpl implements MockVmManager {
@Override
public String getName() {
return this.getClass().getSimpleName();
- }
-
+ }
+
@Override
public Answer getVmStats(GetVmStatsCommand cmd) {
HashMap vmStatsNameMap = new HashMap();
@@ -370,9 +372,9 @@ public class MockVmManagerImpl implements MockVmManager {
@Override
public Answer SetFirewallRules(SetFirewallRulesCommand cmd) {
- return new Answer(cmd);
+ return new Answer(cmd);
}
-
+
@Override
public NetworkUsageAnswer getNetworkUsage(NetworkUsageCommand cmd) {
@@ -388,8 +390,12 @@ public class MockVmManagerImpl implements MockVmManager {
String destGuid = cmd.getHostGuid();
MockVMVO vm = _mockVmDao.findByVmNameAndHost(vmName, info.getHostUuid());
if (vm == null) {
- return new MigrateAnswer(cmd, false, "can;t find vm:" + vmName + " on host:" + info.getHostUuid(), null);
- }
+ return new MigrateAnswer(cmd, false, "can't find vm:" + vmName + " on host:" + info.getHostUuid(), null);
+ } else {
+ if (vm.getState() == State.Migrating) {
+ vm.setState(State.Running);
+ }
+ }
MockHost destHost = _mockHostDao.findByGuid(destGuid);
if (destHost == null) {
@@ -409,6 +415,27 @@ public class MockVmManagerImpl implements MockVmManager {
}
}
+ @Override
+ public PrepareForMigrationAnswer prepareForMigrate(PrepareForMigrationCommand cmd) {
+ Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
+ VirtualMachineTO vmTo = cmd.getVirtualMachine();
+ try {
+ txn.start();
+ MockVMVO vm = _mockVmDao.findById(vmTo.getId());
+ vm.setState(State.Migrating);
+ _mockVmDao.update(vm.getId(), vm);
+ txn.commit();
+ } catch (Exception ex) {
+ txn.rollback();
+ throw new CloudRuntimeException("unable to find vm " + vmTo.getName(), ex);
+ } finally {
+ txn.close();
+ txn = Transaction.open(Transaction.CLOUD_DB);
+ txn.close();
+ return new PrepareForMigrationAnswer(cmd);
+ }
+ }
+
@Override
public Answer IpAssoc(IpAssocCommand cmd) {
return new Answer(cmd);
@@ -516,20 +543,20 @@ public class MockVmManagerImpl implements MockVmManager {
public Answer WatchConsoleProxyLoad(WatchConsoleProxyLoadCommand cmd) {
return Answer.createUnsupportedCommandAnswer(cmd);
}
-
+
@Override
public GetDomRVersionAnswer getDomRVersion(GetDomRVersionCmd cmd) {
- return new GetDomRVersionAnswer(cmd, null, null, null);
+ return new GetDomRVersionAnswer(cmd, null, null, null);
}
@Override
public SecurityGroupRuleAnswer AddSecurityGroupRules(SecurityGroupRulesCmd cmd, SimulatorInfo info) {
if (!info.isEnabled()) {
- return new SecurityGroupRuleAnswer(cmd, false, "Disabled", SecurityGroupRuleAnswer.FailureReason.CANNOT_BRIDGE_FIREWALL);
+ return new SecurityGroupRuleAnswer(cmd, false, "Disabled", SecurityGroupRuleAnswer.FailureReason.CANNOT_BRIDGE_FIREWALL);
}
-
+
Map> rules = _securityRules.get(info.getHostUuid());
-
+
if (rules == null) {
logSecurityGroupAction(cmd, null);
rules = new ConcurrentHashMap>();
@@ -539,10 +566,10 @@ public class MockVmManagerImpl implements MockVmManager {
logSecurityGroupAction(cmd, rules.get(cmd.getVmName()));
rules.put(cmd.getVmName(), new Ternary(cmd.getSignature(), cmd.getVmId(), cmd.getSeqNum()));
}
-
+
return new SecurityGroupRuleAnswer(cmd);
}
-
+
private boolean logSecurityGroupAction(SecurityGroupRulesCmd cmd, Ternary rule) {
String action = ", do nothing";
String reason = ", reason=";
@@ -554,13 +581,13 @@ public class MockVmManagerImpl implements MockVmManager {
s_logger.info("New seqno received: " + cmd.getSeqNum() + " curr=" + currSeqnum);
updateSeqnoAndSig = true;
if (!cmd.getSignature().equals(currSig)) {
- s_logger.info("New seqno received: " + cmd.getSeqNum() + " curr=" + currSeqnum
+ s_logger.info("New seqno received: " + cmd.getSeqNum() + " curr=" + currSeqnum
+ " new signature received:" + cmd.getSignature() + " curr=" + currSig + ", updated iptables");
action = ", updated iptables";
reason = reason + "seqno_increased_sig_changed";
} else {
- s_logger.info("New seqno received: " + cmd.getSeqNum() + " curr=" + currSeqnum
- + " no change in signature:" + cmd.getSignature() + ", do nothing");
+ s_logger.info("New seqno received: " + cmd.getSeqNum() + " curr=" + currSeqnum
+ + " no change in signature:" + cmd.getSignature() + ", do nothing");
reason = reason + "seqno_increased_sig_same";
}
} else if (cmd.getSeqNum() < currSeqnum) {
@@ -568,14 +595,14 @@ public class MockVmManagerImpl implements MockVmManager {
reason = reason + "seqno_decreased";
} else {
if (!cmd.getSignature().equals(currSig)) {
- s_logger.info("Identical seqno received: " + cmd.getSeqNum()
+ s_logger.info("Identical seqno received: " + cmd.getSeqNum()
+ " new signature received:" + cmd.getSignature() + " curr=" + currSig + ", updated iptables");
action = ", updated iptables";
reason = reason + "seqno_same_sig_changed";
updateSeqnoAndSig = true;
} else {
- s_logger.info("Identical seqno received: " + cmd.getSeqNum() + " curr=" + currSeqnum
- + " no change in signature:" + cmd.getSignature() + ", do nothing");
+ s_logger.info("Identical seqno received: " + cmd.getSeqNum() + " curr=" + currSeqnum
+ + " no change in signature:" + cmd.getSignature() + ", do nothing");
reason = reason + "seqno_same_sig_same";
}
}
@@ -585,8 +612,8 @@ public class MockVmManagerImpl implements MockVmManager {
action = ", updated iptables";
reason = ", seqno_new";
}
- s_logger.info("Programmed network rules for vm " + cmd.getVmName() + " seqno=" + cmd.getSeqNum()
- + " signature=" + cmd.getSignature()
+ s_logger.info("Programmed network rules for vm " + cmd.getVmName() + " seqno=" + cmd.getSeqNum()
+ + " signature=" + cmd.getSignature()
+ " guestIp=" + cmd.getGuestIp() + ", numIngressRules="
+ cmd.getIngressRuleSet().length + ", numEgressRules="
+ cmd.getEgressRuleSet().length + " total cidrs=" + cmd.getTotalNumCidrs() + action + reason);
@@ -595,13 +622,13 @@ public class MockVmManagerImpl implements MockVmManager {
@Override
public Answer SavePassword(SavePasswordCommand cmd) {
- return new Answer(cmd);
+ return new Answer(cmd);
}
-
+
@Override
public HashMap> syncNetworkGroups(SimulatorInfo info) {
HashMap> maps = new HashMap>();
-
+
Map> rules = _securityRules.get(info.getHostUuid());
if (rules == null) {
return maps;
diff --git a/agent-simulator/src/com/cloud/agent/manager/SimulatorInfo.java b/plugins/hypervisors/simulator/src/com/cloud/agent/manager/SimulatorInfo.java
similarity index 98%
rename from agent-simulator/src/com/cloud/agent/manager/SimulatorInfo.java
rename to plugins/hypervisors/simulator/src/com/cloud/agent/manager/SimulatorInfo.java
index dafd33abb51..c084730c6bb 100644
--- a/agent-simulator/src/com/cloud/agent/manager/SimulatorInfo.java
+++ b/plugins/hypervisors/simulator/src/com/cloud/agent/manager/SimulatorInfo.java
@@ -20,39 +20,39 @@ public class SimulatorInfo {
private boolean enabled;
private int timeout;
private String hostUuid;
-
+
public SimulatorInfo(boolean enabled, int timeout, String hostUuid) {
this.enabled = enabled;
this.timeout = timeout;
this.hostUuid = hostUuid;
}
-
+
public SimulatorInfo() {
this.enabled = true;
this.timeout = -1;
this.hostUuid = null;
}
-
+
public boolean isEnabled() {
return this.enabled;
}
-
+
public int getTimeout() {
return this.timeout;
}
-
+
public String getHostUuid() {
return this.hostUuid;
}
-
+
public void setEnabled(boolean enabled) {
this.enabled = enabled;
}
-
+
public void setTimeout(int timeout) {
this.timeout = timeout;
}
-
+
public void setHostUuid(String hostUuid) {
this.hostUuid = hostUuid;
}
diff --git a/agent-simulator/src/com/cloud/agent/manager/SimulatorManager.java b/plugins/hypervisors/simulator/src/com/cloud/agent/manager/SimulatorManager.java
similarity index 97%
rename from agent-simulator/src/com/cloud/agent/manager/SimulatorManager.java
rename to plugins/hypervisors/simulator/src/com/cloud/agent/manager/SimulatorManager.java
index 2b31b14d32f..ff8c32ce185 100755
--- a/agent-simulator/src/com/cloud/agent/manager/SimulatorManager.java
+++ b/plugins/hypervisors/simulator/src/com/cloud/agent/manager/SimulatorManager.java
@@ -23,7 +23,6 @@ import java.util.Map;
import com.cloud.agent.api.Answer;
import com.cloud.agent.api.Command;
import com.cloud.agent.api.StoragePoolInfo;
-import com.cloud.agent.mockvm.MockVm;
import com.cloud.simulator.MockVMVO;
import com.cloud.utils.Pair;
import com.cloud.utils.component.Manager;
@@ -31,10 +30,10 @@ import com.cloud.vm.VirtualMachine.State;
public interface SimulatorManager extends Manager {
public static final String Name = "simulator manager";
-
+
public enum AgentType {
Computing(0), // not used anymore
- Routing(1),
+ Routing(1),
Storage(2);
int value;
@@ -56,7 +55,7 @@ public interface SimulatorManager extends Manager {
Answer simulate(Command cmd, String hostGuid);
StoragePoolInfo getLocalStorage(String hostGuid);
-
+
boolean configureSimulator(Long zoneId, Long podId, Long clusterId, Long hostId, String command, String values);
public HashMap> syncNetworkGroups(String hostGuid);
diff --git a/agent-simulator/src/com/cloud/agent/manager/SimulatorManagerImpl.java b/plugins/hypervisors/simulator/src/com/cloud/agent/manager/SimulatorManagerImpl.java
similarity index 81%
rename from agent-simulator/src/com/cloud/agent/manager/SimulatorManagerImpl.java
rename to plugins/hypervisors/simulator/src/com/cloud/agent/manager/SimulatorManagerImpl.java
index 9a81ea6edaa..4f70ee5bae7 100644
--- a/agent-simulator/src/com/cloud/agent/manager/SimulatorManagerImpl.java
+++ b/plugins/hypervisors/simulator/src/com/cloud/agent/manager/SimulatorManagerImpl.java
@@ -16,8 +16,6 @@
// under the License.
package com.cloud.agent.manager;
-import java.sql.Connection;
-import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
@@ -25,6 +23,7 @@ import javax.ejb.Local;
import javax.naming.ConfigurationException;
import com.cloud.agent.api.*;
+import com.cloud.agent.api.storage.*;
import org.apache.log4j.Logger;
import com.cloud.agent.api.check.CheckSshCommand;
@@ -38,14 +37,6 @@ import com.cloud.agent.api.routing.SetFirewallRulesCommand;
import com.cloud.agent.api.routing.SetPortForwardingRulesCommand;
import com.cloud.agent.api.routing.SetStaticNatRulesCommand;
import com.cloud.agent.api.routing.VmDataCommand;
-import com.cloud.agent.api.storage.CopyVolumeCommand;
-import com.cloud.agent.api.storage.CreateCommand;
-import com.cloud.agent.api.storage.DeleteTemplateCommand;
-import com.cloud.agent.api.storage.DestroyCommand;
-import com.cloud.agent.api.storage.DownloadCommand;
-import com.cloud.agent.api.storage.DownloadProgressCommand;
-import com.cloud.agent.api.storage.ListTemplateCommand;
-import com.cloud.agent.api.storage.PrimaryStorageDownloadCommand;
import com.cloud.simulator.MockConfigurationVO;
import com.cloud.simulator.MockHost;
import com.cloud.simulator.MockVMVO;
@@ -58,6 +49,7 @@ import com.cloud.utils.db.DB;
import com.cloud.utils.db.Transaction;
import com.cloud.utils.exception.CloudRuntimeException;
import com.cloud.vm.VirtualMachine.State;
+
@Local(value = { SimulatorManager.class })
public class SimulatorManagerImpl implements SimulatorManager {
private static final Logger s_logger = Logger.getLogger(SimulatorManagerImpl.class);
@@ -121,83 +113,83 @@ public class SimulatorManagerImpl implements SimulatorManager {
public Answer simulate(Command cmd, String hostGuid) {
Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
// txn.transitToUserManagedConnection(_concierge.conn());
-
+
try {
MockHost host = _mockHost.findByGuid(hostGuid);
String cmdName = cmd.toString();
int index = cmdName.lastIndexOf(".");
if (index != -1) {
- cmdName = cmdName.substring(index + 1);
+ cmdName = cmdName.substring(index + 1);
}
MockConfigurationVO config = _mockConfigDao.findByNameBottomUP(host.getDataCenterId(), host.getPodId(), host.getClusterId(), host.getId(), cmdName);
-
+
SimulatorInfo info = new SimulatorInfo();
info.setHostUuid(hostGuid);
-
+
if (config != null) {
Map configParameters = config.getParameters();
for (Map.Entry entry : configParameters.entrySet()) {
- if (entry.getKey().equalsIgnoreCase("enabled")) {
- info.setEnabled(Boolean.parseBoolean(entry.getValue()));
- } else if (entry.getKey().equalsIgnoreCase("timeout")) {
- try {
- info.setTimeout(Integer.valueOf(entry.getValue()));
- } catch (NumberFormatException e) {
- s_logger.debug("invalid timeout parameter: " + e.toString());
- }
- } else if (entry.getKey().equalsIgnoreCase("wait")) {
- try {
- int wait = Integer.valueOf(entry.getValue());
- Thread.sleep(wait * 1000);
- } catch (NumberFormatException e) {
- s_logger.debug("invalid timeout parameter: " + e.toString());
- } catch (InterruptedException e) {
- s_logger.debug("thread is interrupted: " + e.toString());
- }
- }
+ if (entry.getKey().equalsIgnoreCase("enabled")) {
+ info.setEnabled(Boolean.parseBoolean(entry.getValue()));
+ } else if (entry.getKey().equalsIgnoreCase("timeout")) {
+ try {
+ info.setTimeout(Integer.valueOf(entry.getValue()));
+ } catch (NumberFormatException e) {
+ s_logger.debug("invalid timeout parameter: " + e.toString());
+ }
+ } else if (entry.getKey().equalsIgnoreCase("wait")) {
+ try {
+ int wait = Integer.valueOf(entry.getValue());
+ Thread.sleep(wait * 1000);
+ } catch (NumberFormatException e) {
+ s_logger.debug("invalid timeout parameter: " + e.toString());
+ } catch (InterruptedException e) {
+ s_logger.debug("thread is interrupted: " + e.toString());
+ }
+ }
}
}
-
+
if (cmd instanceof GetHostStatsCommand) {
- return _mockAgentMgr.getHostStatistic((GetHostStatsCommand)cmd);
+ return _mockAgentMgr.getHostStatistic((GetHostStatsCommand) cmd);
} else if (cmd instanceof CheckHealthCommand) {
- return _mockAgentMgr.checkHealth((CheckHealthCommand)cmd);
+ return _mockAgentMgr.checkHealth((CheckHealthCommand) cmd);
} else if (cmd instanceof PingTestCommand) {
- return _mockAgentMgr.pingTest((PingTestCommand)cmd);
+ return _mockAgentMgr.pingTest((PingTestCommand) cmd);
} else if (cmd instanceof PrepareForMigrationCommand) {
- return _mockAgentMgr.prepareForMigrate((PrepareForMigrationCommand)cmd);
+ return _mockVmMgr.prepareForMigrate((PrepareForMigrationCommand) cmd);
} else if (cmd instanceof MigrateCommand) {
- return _mockVmMgr.Migrate((MigrateCommand)cmd, info);
+ return _mockVmMgr.Migrate((MigrateCommand) cmd, info);
} else if (cmd instanceof StartCommand) {
- return _mockVmMgr.startVM((StartCommand)cmd, info);
+ return _mockVmMgr.startVM((StartCommand) cmd, info);
} else if (cmd instanceof CheckSshCommand) {
- return _mockVmMgr.checkSshCommand((CheckSshCommand)cmd);
+ return _mockVmMgr.checkSshCommand((CheckSshCommand) cmd);
} else if (cmd instanceof CheckVirtualMachineCommand) {
- return _mockVmMgr.checkVmState((CheckVirtualMachineCommand)cmd);
+ return _mockVmMgr.checkVmState((CheckVirtualMachineCommand) cmd);
} else if (cmd instanceof SetStaticNatRulesCommand) {
- return _mockVmMgr.SetStaticNatRules((SetStaticNatRulesCommand)cmd);
+ return _mockVmMgr.SetStaticNatRules((SetStaticNatRulesCommand) cmd);
} else if (cmd instanceof SetFirewallRulesCommand) {
- return _mockVmMgr.SetFirewallRules((SetFirewallRulesCommand)cmd);
+ return _mockVmMgr.SetFirewallRules((SetFirewallRulesCommand) cmd);
} else if (cmd instanceof SetPortForwardingRulesCommand) {
- return _mockVmMgr.SetPortForwardingRules((SetPortForwardingRulesCommand)cmd);
+ return _mockVmMgr.SetPortForwardingRules((SetPortForwardingRulesCommand) cmd);
} else if (cmd instanceof NetworkUsageCommand) {
- return _mockVmMgr.getNetworkUsage((NetworkUsageCommand)cmd);
+ return _mockVmMgr.getNetworkUsage((NetworkUsageCommand) cmd);
} else if (cmd instanceof IpAssocCommand) {
- return _mockVmMgr.IpAssoc((IpAssocCommand)cmd);
+ return _mockVmMgr.IpAssoc((IpAssocCommand) cmd);
} else if (cmd instanceof LoadBalancerConfigCommand) {
- return _mockVmMgr.LoadBalancerConfig((LoadBalancerConfigCommand)cmd);
+ return _mockVmMgr.LoadBalancerConfig((LoadBalancerConfigCommand) cmd);
} else if (cmd instanceof DhcpEntryCommand) {
- return _mockVmMgr.AddDhcpEntry((DhcpEntryCommand)cmd);
+ return _mockVmMgr.AddDhcpEntry((DhcpEntryCommand) cmd);
} else if (cmd instanceof VmDataCommand) {
- return _mockVmMgr.setVmData((VmDataCommand)cmd);
+ return _mockVmMgr.setVmData((VmDataCommand) cmd);
} else if (cmd instanceof CleanupNetworkRulesCmd) {
- return _mockVmMgr.CleanupNetworkRules((CleanupNetworkRulesCmd)cmd, info);
+ return _mockVmMgr.CleanupNetworkRules((CleanupNetworkRulesCmd) cmd, info);
} else if (cmd instanceof CheckNetworkCommand) {
- return _mockAgentMgr.checkNetworkCommand((CheckNetworkCommand) cmd);
+ return _mockAgentMgr.checkNetworkCommand((CheckNetworkCommand) cmd);
}else if (cmd instanceof StopCommand) {
return _mockVmMgr.stopVM((StopCommand)cmd);
} else if (cmd instanceof RebootCommand) {
- return _mockVmMgr.rebootVM((RebootCommand)cmd);
+ return _mockVmMgr.rebootVM((RebootCommand) cmd);
} else if (cmd instanceof GetVncPortCommand) {
return _mockVmMgr.getVncPort((GetVncPortCommand)cmd);
} else if (cmd instanceof CheckConsoleProxyLoadCommand) {
@@ -226,6 +218,8 @@ public class SimulatorManagerImpl implements SimulatorManager {
return _mockStorageMgr.SecStorageSetup((SecStorageSetupCommand)cmd);
} else if (cmd instanceof ListTemplateCommand) {
return _mockStorageMgr.ListTemplates((ListTemplateCommand)cmd);
+ } else if (cmd instanceof ListVolumeCommand) {
+ return _mockStorageMgr.ListVolumes((ListVolumeCommand)cmd);
} else if (cmd instanceof DestroyCommand) {
return _mockStorageMgr.Destroy((DestroyCommand)cmd);
} else if (cmd instanceof DownloadProgressCommand) {
@@ -261,12 +255,11 @@ public class SimulatorManagerImpl implements SimulatorManager {
} else if (cmd instanceof BumpUpPriorityCommand) {
return _mockVmMgr.bumpPriority((BumpUpPriorityCommand) cmd);
} else if (cmd instanceof GetDomRVersionCmd) {
- return _mockVmMgr.getDomRVersion((GetDomRVersionCmd) cmd);
+ return _mockVmMgr.getDomRVersion((GetDomRVersionCmd) cmd);
} else if (cmd instanceof ClusterSyncCommand) {
- return new Answer(cmd);
- //return new ClusterSyncAnswer(((ClusterSyncCommand) cmd).getClusterId(), this.getVmStates(hostGuid));
+ return new Answer(cmd);
} else if (cmd instanceof CopyVolumeCommand) {
- return _mockStorageMgr.CopyVolume((CopyVolumeCommand) cmd);
+ return _mockStorageMgr.CopyVolume((CopyVolumeCommand) cmd);
} else {
return Answer.createUnsupportedCommandAnswer(cmd);
}
@@ -288,19 +281,19 @@ public class SimulatorManagerImpl implements SimulatorManager {
@Override
public Map getVmStates(String hostGuid) {
- return _mockVmMgr.getVmStates(hostGuid);
+ return _mockVmMgr.getVmStates(hostGuid);
}
-
+
@Override
public Map getVms(String hostGuid) {
- return _mockVmMgr.getVms(hostGuid);
+ return _mockVmMgr.getVms(hostGuid);
}
-
+
@Override
public HashMap> syncNetworkGroups(String hostGuid) {
- SimulatorInfo info = new SimulatorInfo();
- info.setHostUuid(hostGuid);
- return _mockVmMgr.syncNetworkGroups(info);
+ SimulatorInfo info = new SimulatorInfo();
+ info.setHostUuid(hostGuid);
+ return _mockVmMgr.syncNetworkGroups(info);
}
@Override
diff --git a/agent-simulator/src/com/cloud/api/commands/ConfigureSimulator.java b/plugins/hypervisors/simulator/src/com/cloud/api/commands/ConfigureSimulator.java
similarity index 98%
rename from agent-simulator/src/com/cloud/api/commands/ConfigureSimulator.java
rename to plugins/hypervisors/simulator/src/com/cloud/api/commands/ConfigureSimulator.java
index 4147e3aae1f..60ce82e2c05 100755
--- a/agent-simulator/src/com/cloud/api/commands/ConfigureSimulator.java
+++ b/plugins/hypervisors/simulator/src/com/cloud/api/commands/ConfigureSimulator.java
@@ -37,25 +37,25 @@ import com.cloud.utils.component.ComponentLocator;
public class ConfigureSimulator extends BaseCmd {
public static final Logger s_logger = Logger.getLogger(ConfigureSimulator.class.getName());
private static final String s_name = "configuresimulatorresponse";
-
+
@Parameter(name=ApiConstants.ZONE_ID, type=CommandType.LONG, description="configure range: in a zone")
private Long zoneId;
-
+
@Parameter(name=ApiConstants.POD_ID, type=CommandType.LONG, description="configure range: in a pod")
private Long podId;
-
+
@Parameter(name=ApiConstants.CLUSTER_ID, type=CommandType.LONG, description="configure range: in a cluster")
private Long clusterId;
-
+
@Parameter(name=ApiConstants.HOST_ID, type=CommandType.LONG, description="configure range: in a host")
private Long hostId;
-
+
@Parameter(name=ApiConstants.NAME, type=CommandType.STRING, required=true, description="which command needs to be configured")
private String command;
-
+
@Parameter(name=ApiConstants.VALUE, type=CommandType.STRING, required=true, description="configuration options for this command, which is seperated by ;")
private String values;
-
+
@Override
public void execute() throws ResourceUnavailableException, InsufficientCapacityException, ServerApiException, ConcurrentOperationException, ResourceAllocationException {
ComponentLocator locator = ComponentLocator.getLocator(ManagementService.Name);
@@ -64,7 +64,7 @@ public class ConfigureSimulator extends BaseCmd {
if (!result) {
throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Failed to configure simulator");
}
-
+
SuccessResponse response = new SuccessResponse(getCommandName());
this.setResponseObject(response);
}
diff --git a/agent-simulator/src/com/cloud/configuration/SimulatorComponentLibrary.java b/plugins/hypervisors/simulator/src/com/cloud/configuration/SimulatorComponentLibrary.java
similarity index 100%
rename from agent-simulator/src/com/cloud/configuration/SimulatorComponentLibrary.java
rename to plugins/hypervisors/simulator/src/com/cloud/configuration/SimulatorComponentLibrary.java
diff --git a/agent-simulator/src/com/cloud/resource/AgentResourceBase.java b/plugins/hypervisors/simulator/src/com/cloud/resource/AgentResourceBase.java
similarity index 98%
rename from agent-simulator/src/com/cloud/resource/AgentResourceBase.java
rename to plugins/hypervisors/simulator/src/com/cloud/resource/AgentResourceBase.java
index 6261158ee11..808ca070d4d 100644
--- a/agent-simulator/src/com/cloud/resource/AgentResourceBase.java
+++ b/plugins/hypervisors/simulator/src/com/cloud/resource/AgentResourceBase.java
@@ -52,7 +52,7 @@ public class AgentResourceBase implements ServerResource {
protected String _name;
private List _warnings = new LinkedList();
private List _errors = new LinkedList();
-
+
private transient IAgentControl _agentControl;
protected long _instanceId;
@@ -64,36 +64,36 @@ public class AgentResourceBase implements ServerResource {
protected MockHost agentHost = null;
protected boolean stopped = false;
protected String hostGuid = null;
-
+
public AgentResourceBase(long instanceId, AgentType agentType, SimulatorManager simMgr, String hostGuid) {
- _instanceId = instanceId;
-
+ _instanceId = instanceId;
+
if(s_logger.isDebugEnabled()) {
s_logger.info("New Routing host instantiated with guid:" + hostGuid);
}
-
+
if (agentType == AgentType.Routing) {
_type = Host.Type.Routing;
} else {
_type = Host.Type.Storage;
}
-
+
this.hostGuid = hostGuid;
}
-
+
protected MockVmManager getVmMgr() {
return _simMgr.getVmMgr();
}
-
+
protected MockStorageManager getStorageMgr() {
return _simMgr.getStorageMgr();
}
-
+
protected MockAgentManager getAgentMgr() {
return _simMgr.getAgentMgr();
}
-
+
protected long getInstanceId() {
return _instanceId;
}
@@ -102,7 +102,7 @@ public class AgentResourceBase implements ServerResource {
if(s_logger.isDebugEnabled()) {
s_logger.debug("Deserializing simulated agent on reconnect");
}
-
+
}
@Override
@@ -113,18 +113,18 @@ public class AgentResourceBase implements ServerResource {
public void setName(String name) {
_name = name;
}
-
+
@Override
public boolean configure(String name, Map params)
throws ConfigurationException {
hostGuid = (String)params.get("guid");
_locator = ComponentLocator.getLocator("management-server");
_simMgr = _locator.getManager(SimulatorManager.class);
-
+
agentHost = getAgentMgr().getHost(hostGuid);
return true;
}
-
+
private void reconnect(MockHost host) {
if(s_logger.isDebugEnabled()) {
@@ -244,7 +244,7 @@ public class AgentResourceBase implements ServerResource {
}
return file.getAbsolutePath();
}
-
+
@Override
public Answer executeRequest(Command cmd) {
@@ -264,20 +264,20 @@ public class AgentResourceBase implements ServerResource {
public void setType(Host.Type _type) {
this._type = _type;
}
-
+
@Override
public StartupCommand[] initialize() {
return null;
}
-
+
public SimulatorManager getSimulatorManager() {
return _simMgr;
- }
-
- public void setSimulatorManager(SimulatorManager simMgr) {
- _simMgr = simMgr;
}
-
+
+ public void setSimulatorManager(SimulatorManager simMgr) {
+ _simMgr = simMgr;
+ }
+
public boolean isStopped() {
return this.stopped;
}
diff --git a/agent-simulator/src/com/cloud/resource/AgentRoutingResource.java b/plugins/hypervisors/simulator/src/com/cloud/resource/AgentRoutingResource.java
similarity index 96%
rename from agent-simulator/src/com/cloud/resource/AgentRoutingResource.java
rename to plugins/hypervisors/simulator/src/com/cloud/resource/AgentRoutingResource.java
index f10713d126c..f35e4325b38 100644
--- a/agent-simulator/src/com/cloud/resource/AgentRoutingResource.java
+++ b/plugins/hypervisors/simulator/src/com/cloud/resource/AgentRoutingResource.java
@@ -91,7 +91,7 @@ public class AgentRoutingResource extends AgentStorageResource {
} else if (cmd instanceof ReadyCommand) {
return new ReadyAnswer((ReadyCommand)cmd);
} else if (cmd instanceof ShutdownCommand) {
- return execute((ShutdownCommand)cmd);
+ return execute((ShutdownCommand)cmd);
} else {
return _simMgr.simulate(cmd, hostGuid);
}
@@ -99,7 +99,7 @@ public class AgentRoutingResource extends AgentStorageResource {
return new Answer(cmd, false, e.getMessage());
}
}
-
+
@Override
public Type getType() {
return Host.Type.Routing;
@@ -111,10 +111,10 @@ public class AgentRoutingResource extends AgentStorageResource {
return null;
}
synchronized (_vms) {
- if (_vms.size() == 0) {
- //load vms state from database
- _vms.putAll(_simMgr.getVmStates(hostGuid));
- }
+ if (_vms.size() == 0) {
+ //load vms state from database
+ _vms.putAll(_simMgr.getVmStates(hostGuid));
+ }
}
final HashMap newStates = sync();
HashMap> nwGrpStates = _simMgr.syncNetworkGroups(hostGuid);
@@ -131,18 +131,18 @@ public class AgentRoutingResource extends AgentStorageResource {
totalCpu = agentHost.getCpuCount() * agentHost.getCpuSpeed();
totalMem = agentHost.getMemorySize();
for (Map.Entry entry : vmsMaps.entrySet()) {
- MockVMVO vm = entry.getValue();
- usedCpu += vm.getCpu();
- usedMem += vm.getMemory();
- _runningVms.put(entry.getKey(), new Pair(Long.valueOf(vm.getCpu()), vm.getMemory()));
+ MockVMVO vm = entry.getValue();
+ usedCpu += vm.getCpu();
+ usedMem += vm.getMemory();
+ _runningVms.put(entry.getKey(), new Pair(Long.valueOf(vm.getCpu()), vm.getMemory()));
}
-
+
List