Skip to content

Commit 27e9cdb

Browse files
committed
add console proxy support for devcloud
1 parent 1f8e994 commit 27e9cdb

6 files changed

Lines changed: 91 additions & 6 deletions

File tree

build/build-devcloud.xml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,14 @@
3535

3636
<target name="rdeploydb">
3737
<echo message="ant rdeploydb"/>
38-
<sshexec host="${host}" port="${port}" username="root" password="password" command="echo $CATALINA_HOME; export CATALINA_HOME=/opt/cloudstack/apache-tomcat-6.0.32;killall java;cd /opt/cloudstack/incubator-cloudstack;ant deploycddb"/>
38+
<sshexec host="${host}" port="${port}" username="root" password="password" command="echo $CATALINA_HOME; export CATALINA_HOME=/opt/cloudstack/apache-tomcat-6.0.32;killall java;cd /opt/cloudstack/incubator-cloudstack;ant deploycddb -Drhost=${host}"/>
3939
</target>
4040

4141
<target name="deploycddb" description="deploy specific db configuration for clouddev" depends="deploydb">
4242
<exec dir="${db.scripts.dir}" executable="bash">
4343
<arg value="deploy-db-clouddev.sh" />
44+
<arg value="${host}" />
45+
<arg value="8443" />
4446
</exec>
4547
</target>
4648

@@ -51,7 +53,7 @@
5153

5254
<target name="rdebug">
5355
<echo message="ant debug"/>
54-
<sshexec host="${host}" port="${port}" username="root" password="password" command="killall java;sleep 1;echo $CATALINA_HOME; export CATALINA_HOME=/opt/cloudstack/apache-tomcat-6.0.32;cd /opt/cloudstack/incubator-cloudstack;ant deploy-server; ant debug"/>
56+
<sshexec host="${host}" port="${port}" username="root" password="password" command="killall java;sleep 1;export CATALINA_HOME=/opt/cloudstack/apache-tomcat-6.0.32;cd /opt/cloudstack/incubator-cloudstack;ant deploy-server; ant debug "/>
5557
</target>
5658

5759

plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/XcpOssResource.java

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,18 @@
3131
import com.cloud.agent.api.Command;
3232
import com.cloud.agent.api.NetworkUsageAnswer;
3333
import com.cloud.agent.api.NetworkUsageCommand;
34+
import com.cloud.agent.api.StartAnswer;
35+
import com.cloud.agent.api.StartCommand;
3436
import com.cloud.agent.api.StartupRoutingCommand;
37+
import com.cloud.agent.api.StopAnswer;
38+
import com.cloud.agent.api.StopCommand;
39+
import com.cloud.agent.api.to.NicTO;
40+
import com.cloud.agent.api.to.VirtualMachineTO;
41+
import com.cloud.network.Networks.TrafficType;
3542
import com.cloud.resource.ServerResource;
3643
import com.cloud.utils.exception.CloudRuntimeException;
3744
import com.cloud.utils.script.Script;
45+
import com.cloud.vm.VirtualMachine;
3846
import com.xensource.xenapi.Connection;
3947
import com.xensource.xenapi.Types;
4048
import com.xensource.xenapi.VBD;
@@ -124,4 +132,35 @@ public Answer executeRequest(Command cmd) {
124132
return super.executeRequest(cmd);
125133
}
126134
}
135+
136+
@Override
137+
public StartAnswer execute(StartCommand cmd) {
138+
StartAnswer answer = super.execute(cmd);
139+
140+
VirtualMachineTO vmSpec = cmd.getVirtualMachine();
141+
if (vmSpec.getType() == VirtualMachine.Type.ConsoleProxy) {
142+
Connection conn = getConnection();
143+
String publicIp = null;
144+
for (NicTO nic : vmSpec.getNics()) {
145+
if (nic.getType() == TrafficType.Guest) {
146+
publicIp = nic.getIp();
147+
}
148+
}
149+
callHostPlugin(conn, "vmops", "setDNATRule", "ip", publicIp, "port", "8443", "add", "true");
150+
}
151+
152+
return answer;
153+
}
154+
155+
@Override
156+
public StopAnswer execute(StopCommand cmd) {
157+
StopAnswer answer = super.execute(cmd);
158+
String vmName = cmd.getVmName();
159+
if (vmName.startsWith("v-")) {
160+
Connection conn = getConnection();
161+
callHostPlugin(conn, "vmops", "setDNATRule", "add", "false");
162+
}
163+
return answer;
164+
}
165+
127166
}

scripts/vm/hypervisor/xenserver/xcposs/vmops

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1450,6 +1450,18 @@ def bumpUpPriority(session, args):
14501450
txt = ''
14511451

14521452
return txt
1453+
1454+
@echo
1455+
def setDNATRule(session, args):
1456+
add = args["add"]
1457+
if add == "false":
1458+
util.pread2(["iptables", "-t", "nat", "-F"])
1459+
else:
1460+
ip = args["ip"]
1461+
port = args["port"]
1462+
util.pread2(["iptables", "-t", "nat", "-F"])
1463+
util.pread2(["iptables", "-t", "nat", "-A", "PREROUTING", "-i", "xenbr0", "-p", "tcp", "--dport", port, "-m", "state", "--state", "NEW", "-j", "DNAT", "--to-destination", ip +":443"])
1464+
return ""
14531465

14541466
@echo
14551467
def createISOVHD(session, args):
@@ -1533,4 +1545,5 @@ if __name__ == "__main__":
15331545
"cleanup_rules":cleanup_rules, "checkRouter":checkRouter,
15341546
"bumpUpPriority":bumpUpPriority, "getDomRVersion":getDomRVersion,
15351547
"kill_copy_process":kill_copy_process,
1536-
"createISOVHD":createISOVHD})
1548+
"createISOVHD":createISOVHD,
1549+
"setDNATRule":setDNATRule})

server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,8 @@ public class ConsoleProxyManagerImpl implements ConsoleProxyManager, ConsoleProx
262262
private Map<Long, ConsoleProxyLoadInfo> _zoneVmCountMap; // map <zone id, info about running VMs count in zone>
263263

264264
private String _hashKey;
265+
private String _staticPublicIp;
266+
private int _staticPort;
265267

266268
private final GlobalLock _allocProxyLock = GlobalLock.getInternLock(getAllocProxyLockName());
267269

@@ -465,8 +467,12 @@ public ConsoleProxyInfo assignProxy(final long dataCenterId, final long vmId) {
465467

466468
KeystoreVO ksVo = _ksDao.findByName(ConsoleProxyManager.CERTIFICATE_NAME);
467469
assert (ksVo != null);
468-
469-
return new ConsoleProxyInfo(proxy.isSslEnabled(), proxy.getPublicIpAddress(), _consoleProxyPort, proxy.getPort(), ksVo.getDomainSuffix());
470+
471+
if (_staticPublicIp == null) {
472+
return new ConsoleProxyInfo(proxy.isSslEnabled(), proxy.getPublicIpAddress(), _consoleProxyPort, proxy.getPort(), ksVo.getDomainSuffix());
473+
} else {
474+
return new ConsoleProxyInfo(proxy.isSslEnabled(), _staticPublicIp, _consoleProxyPort, _staticPort, ksVo.getDomainSuffix());
475+
}
470476
}
471477

472478
public ConsoleProxyVO doAssignProxy(long dataCenterId, long vmId) {
@@ -1529,6 +1535,11 @@ public boolean configure(String name, Map<String, Object> params) throws Configu
15291535
_loadScanner = new SystemVmLoadScanner<Long>(this);
15301536
_loadScanner.initScan(STARTUP_DELAY, _capacityScanInterval);
15311537
_resourceMgr.registerResourceStateAdapter(this.getClass().getSimpleName(), this);
1538+
1539+
_staticPublicIp = _configDao.getValue("consoleproxy.static.publicIp");
1540+
if (_staticPublicIp != null) {
1541+
_staticPort = NumbersUtil.parseInt(_configDao.getValue("consoleproxy.static.port"), 8443);
1542+
}
15321543

15331544
if (s_logger.isInfoEnabled()) {
15341545
s_logger.info("Console Proxy Manager is configured.");

server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1063,7 +1063,7 @@ public boolean finalizeVirtualMachineProfile(VirtualMachineProfile<SecondaryStor
10631063
if (profile.getHypervisorType() == HypervisorType.Hyperv) {
10641064
buf.append(" resource=com.cloud.storage.resource.CifsSecondaryStorageResource");
10651065
} else {
1066-
buf.append(" resource=com.cloud.storage.resource.PremiumSecondaryStorageResource");
1066+
buf.append(" resource=com.cloud.storage.resource.NfsSecondaryStorageResource");
10671067
}
10681068
} else {
10691069
buf.append(" resource=com.cloud.storage.resource.NfsSecondaryStorageResource");

setup/db/deploy-db-clouddev.sh

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,23 @@ mysql --user=cloud --password=cloud < clouddev.sql
2121
if [ $? -ne 0 ]; then
2222
printf "failed to init cloudev db"
2323
fi
24+
mysql --user=cloud -t cloud --password=cloud -e "insert into configuration (name, value) VALUES('consoleproxy.static.publicip', \"$1\")"
25+
mysql --user=cloud -t cloud --password=cloud -e "insert into configuration (name, value) VALUES('consoleproxy.static.port', \"$2\")"
26+
27+
vmids=`xe vm-list is-control-domain=false |grep uuid|awk '{print $5}'`
28+
for vm in $vmids
29+
do
30+
echo $vm
31+
xe vm-shutdown uuid=$vm
32+
xe vm-destroy uuid=$vm
33+
done
34+
35+
vdis=`xe vdi-list |grep ^uuid |awk '{print $5}'`
36+
for vdi in $vdis
37+
do
38+
xe vdi-destroy uuid=$vdi
39+
if [ $? -gt 0 ];then
40+
xe vdi-forget uuid=$vdi
41+
fi
42+
43+
done

0 commit comments

Comments
 (0)