diff --git a/build/build-cloud.xml b/build/build-cloud.xml index 4d52d08bb01..db9e5a7c5af 100755 --- a/build/build-cloud.xml +++ b/build/build-cloud.xml @@ -107,10 +107,6 @@ - - - - @@ -523,8 +519,7 @@ - - + @@ -536,26 +531,8 @@ - - - - - - - - - - - - - - - - - - - - + + diff --git a/build/developer.xml b/build/developer.xml index 33d77a6c85a..77d760b2af7 100755 --- a/build/developer.xml +++ b/build/developer.xml @@ -100,7 +100,7 @@ - + @@ -114,6 +114,7 @@ + diff --git a/build/package.xml b/build/package.xml index fce58ddcd5e..82781c61a2f 100755 --- a/build/package.xml +++ b/build/package.xml @@ -94,7 +94,7 @@ - + @@ -103,18 +103,6 @@ - - - - - - - - - - - - @@ -135,7 +123,7 @@ - + diff --git a/client/tomcatconf/components.xml.in b/client/tomcatconf/components.xml.in index 91141cff203..ce698854bbe 100755 --- a/client/tomcatconf/components.xml.in +++ b/client/tomcatconf/components.xml.in @@ -110,9 +110,7 @@ - - - + diff --git a/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java b/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java index cf552dabc4c..d88b50528cd 100644 --- a/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java +++ b/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java @@ -152,7 +152,6 @@ import com.cloud.host.Host.Type; import com.cloud.hypervisor.Hypervisor; import com.cloud.network.Network.BroadcastDomainType; import com.cloud.network.Network.TrafficType; -import com.cloud.hypervisor.xen.resource.XenServerConnectionPool.XenServerConnection; import com.cloud.resource.ServerResource; import com.cloud.storage.Storage; import com.cloud.storage.Storage.ImageFormat; @@ -1064,7 +1063,29 @@ public abstract class CitrixResourceBase implements StoragePoolResource, ServerR } protected Answer execute(ModifySshKeysCommand cmd) { - return new Answer(cmd); + String publickey = cmd.getPubKey(); + String privatekey = cmd.getPrvKey(); + + com.trilead.ssh2.Connection sshConnection = new com.trilead.ssh2.Connection(_host.ip, 22); + try { + sshConnection.connect(null, 60000, 60000); + if (!sshConnection.authenticateWithPassword(_username, _password)) { + throw new Exception("Unable to authenticate"); + } + SCPClient scp = new SCPClient(sshConnection); + + scp.put(publickey.getBytes(), "id_rsa.pub", "/opt/xensource/bin", "0600"); + scp.put(privatekey.getBytes(), "id_rsa", "/opt/xensource/bin", "0600"); + scp.put(privatekey.getBytes(), "id_rsa.cloud", "/root/.ssh", "0600"); + return new Answer(cmd); + + } catch (Exception e) { + String msg = " scp ssh key failed due to " + e.toString() + " - " + e.getMessage(); + s_logger.warn(msg); + } finally { + sshConnection.close(); + } + return new Answer(cmd, false, "modifySshkeys failed"); } private boolean doPingTest(final String computingHostIp) { @@ -3166,6 +3187,13 @@ public abstract class CitrixResourceBase implements StoragePoolResource, ServerR Ternary mount = mounts.get(0); + if (!patchSystemVm(mount.second(), vmName)) { // FIXME make this + // nonspecific + String msg = "patch system vm failed"; + s_logger.warn(msg); + return msg; + } + Set templates = VM.getByNameLabel(conn, "CentOS 5.3"); if (templates.size() == 0) { templates = VM.getByNameLabel(conn, "CentOS 5.3 (64-bit)"); @@ -3204,17 +3232,6 @@ public abstract class CitrixResourceBase implements StoragePoolResource, ServerR vbdr.type = Types.VbdType.DISK; VBD.create(conn, vbdr); - - /* create CD-ROM VBD */ - VBD.Record cdromVBDR = new VBD.Record(); - cdromVBDR.VM = vm; - cdromVBDR.empty = true; - cdromVBDR.bootable = false; - cdromVBDR.userdevice = "3"; - cdromVBDR.mode = Types.VbdMode.RO; - cdromVBDR.type = Types.VbdType.CD; - VBD cdromVBD = VBD.create(conn, cdromVBDR); - cdromVBD.insert(conn, VDI.getByUuid(conn, _host.systemvmisouuid)); /* create VIF0 */ VIF.Record vifr = new VIF.Record(); @@ -3491,6 +3508,8 @@ public abstract class CitrixResourceBase implements StoragePoolResource, ServerR s_logger.debug("Slave logon successful. session= " + slaveSession); } Host host = Host.getByUuid(slaveConn, _host.uuid); + + for (int i = 0; i < params.length; i += 2) { args.put(params[i], params[i + 1]); } @@ -3994,38 +4013,7 @@ public abstract class CitrixResourceBase implements StoragePoolResource, ServerR try { Host myself = Host.getByUuid(conn, _host.uuid); _host.pool = getPoolUuid(); - - boolean findsystemvmiso = false; - Set srs = SR.getByNameLabel(conn, "XenServer Tools"); - if( srs.size() != 1 ) { - throw new CloudRuntimeException("There are " + srs.size() + " SRs with name XenServer Tools"); - } - SR sr = srs.iterator().next(); - sr.scan(conn); - SR.Record srr = sr.getRecord(conn); - _host.systemvmisouuid = null; - for( VDI vdi : srr.VDIs ) { - VDI.Record vdir = vdi.getRecord(conn); - if(vdir.nameLabel.contains("systemvm-premium")){ - _host.systemvmisouuid = vdir.uuid; - break; - } - } - if( _host.systemvmisouuid == null ) { - for( VDI vdi : srr.VDIs ) { - VDI.Record vdir = vdi.getRecord(conn); - if(vdir.nameLabel.contains("systemvm")){ - _host.systemvmisouuid = vdir.uuid; - break; - } - } - } - - if( _host.systemvmisouuid == null ) { - throw new CloudRuntimeException("can not find systemvmiso"); - } - String name = "cloud-private"; if (_privateNetworkName != null) { name = _privateNetworkName; @@ -4356,13 +4344,17 @@ public abstract class CitrixResourceBase implements StoragePoolResource, ServerR scp.put(f, d, p); } - } catch (IOException e) { throw new CloudRuntimeException("Unable to setup the server correctly", e); } finally { sshConnection.close(); } + try { + // wait 2 seconds before call plugin + Thread.sleep(2000); + } catch (final InterruptedException ex) { + } if (!setIptables()) { s_logger.warn("set xenserver Iptable failed"); } @@ -6647,7 +6639,6 @@ public abstract class CitrixResourceBase implements StoragePoolResource, ServerR // the resource first connects to XenServer. These UUIDs do // not change over time. protected class XenServerHost { - public String systemvmisouuid; public String uuid; public String ip; public String publicNetwork; diff --git a/patches/xenserver/etc/sysconfig/iptables-domr b/patches/xenserver/etc/sysconfig/iptables-domr deleted file mode 100644 index 3bc7b50f74a..00000000000 --- a/patches/xenserver/etc/sysconfig/iptables-domr +++ /dev/null @@ -1,24 +0,0 @@ -*nat -:PREROUTING ACCEPT [0:0] -:POSTROUTING ACCEPT [0:0] -:OUTPUT ACCEPT [0:0] -COMMIT -*filter -:INPUT DROP [0:0] -:FORWARD DROP [0:0] -:OUTPUT ACCEPT [0:0] --A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT --A INPUT -i eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT --A INPUT -i eth2 -m state --state RELATED,ESTABLISHED -j ACCEPT --A INPUT -p icmp -j ACCEPT --A INPUT -i lo -j ACCEPT --A INPUT -i eth0 -p udp -m udp --dport 67 -j ACCEPT --A INPUT -i eth0 -p udp -m udp --dport 53 -j ACCEPT --A INPUT -i eth1 -p tcp -m state --state NEW --dport 3922 -j ACCEPT --A INPUT -i eth0 -p tcp -m state --state NEW --dport 8080 -j ACCEPT --A INPUT -i eth0 -p tcp -m state --state NEW --dport 80 -j ACCEPT --A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT --A FORWARD -i eth0 -o eth2 -j ACCEPT --A FORWARD -i eth2 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT -COMMIT - diff --git a/patches/xenserver/root/.ssh/authorized_keys b/patches/xenserver/root/.ssh/authorized_keys deleted file mode 100644 index 2cb275c2582..00000000000 --- a/patches/xenserver/root/.ssh/authorized_keys +++ /dev/null @@ -1 +0,0 @@ -ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA3VD1tGRDn3stlJvPNXmQZdQCNjqcfY+xlitd5q0n3KYqJ5OBrty3/00XBUdLt31TbQ4dv+GR7uEr+ex7rm0jjmTFKV4rHYPi882CuC5+bkBp5R4k+mpcyKbxb+IoNS9ItbiExQxMiiRQpHvNem0GGnNFO3lElRPwUFs8evTvZu5HcTj4k4RJLJ66jeIGJ3sMAJ03SICGwfEZjrsyeOMwJk7cH8WNeuNzxzoZd9v02eI0lHdK9O5z7FwrxvRBbzsmJ0EwuhbH8pR7WR6kGLTNP9KEwtrnzV1LYWd+rFoSeh6ImExG7fma3Ldydg8CPTQsjvCEQUxiuV1/x5am5VJlUw== root@r-6-TEST diff --git a/patches/xenserver/root/patchsystemvm.sh b/patches/xenserver/root/patchsystemvm.sh deleted file mode 100755 index f878ea11aa8..00000000000 --- a/patches/xenserver/root/patchsystemvm.sh +++ /dev/null @@ -1,121 +0,0 @@ -#/bin/bash -# $Id: patchsystemvm.sh 10800 2010-07-16 13:48:39Z edison $ $HeadURL: svn://svn.lab.vmops.com/repos/branches/2.1.x/java/scripts/vm/hypervisor/xenserver/prepsystemvm.sh $ - -#set -x -logfile="/var/log/patchsystemvm.log" -# -# To use existing console proxy .zip-based package file -# -patch_console_proxy() { - local patchfile=$1 - rm /usr/local/cloud/systemvm -rf - mkdir -p /usr/local/cloud/systemvm - echo "All" | unzip $patchfile -d /usr/local/cloud/systemvm >$logfile 2>&1 - find /usr/local/cloud/systemvm/ -name \*.sh | xargs chmod 555 - return 0 -} - -consoleproxy_svcs() { - chkconfig cloud on - chkconfig postinit on - chkconfig domr_webserver off - chkconfig haproxy off ; - chkconfig dnsmasq off - chkconfig sshd on - chkconfig httpd off - chkconfig nfs off - chkconfig nfslock off - chkconfig rpcbind off - chkconfig rpcidmap off - cp /etc/sysconfig/iptables-consoleproxy /etc/sysconfig/iptables - mkdir -p /var/log/cloud -} - -secstorage_svcs() { - chkconfig cloud on - chkconfig postinit on - chkconfig domr_webserver off - chkconfig haproxy off ; - chkconfig dnsmasq off - chkconfig sshd on - chkconfig httpd off - cp /etc/sysconfig/iptables-secstorage /etc/sysconfig/iptables - mkdir -p /var/log/cloud -} - -routing_svcs() { - chkconfig cloud off - chkconfig domr_webserver on ; - chkconfig haproxy on ; - chkconfig dnsmasq on - chkconfig sshd on - chkconfig nfs off - chkconfig nfslock off - chkconfig rpcbind off - chkconfig rpcidmap off - cp /etc/sysconfig/iptables-domr /etc/sysconfig/iptables -} - -CMDLINE=$(cat /proc/cmdline) -TYPE="router" - -for i in $CMDLINE - do - # search for foo=bar pattern and cut out foo - KEY=$(echo $i | cut -d= -f1) - VALUE=$(echo $i | cut -d= -f2) - case $KEY in - type) - TYPE=$VALUE - ;; - *) - ;; - esac -done - -if [ "$TYPE" == "consoleproxy" ] || [ "$TYPE" == "secstorage" ] && [ -f /media/cdrom/systemvm.zip ] -then - patch_console_proxy /media/cdrom/systemvm.zip - if [ $? -gt 0 ] - then - printf "Failed to apply patch systemvm\n" >$logfile - exit 5 - fi -fi - - -#empty known hosts -echo "" > /root/.ssh/known_hosts - -if [ "$TYPE" == "router" ] -then - routing_svcs - if [ $? -gt 0 ] - then - printf "Failed to execute routing_svcs\n" >$logfile - exit 6 - fi -fi - - -if [ "$TYPE" == "consoleproxy" ] -then - consoleproxy_svcs - if [ $? -gt 0 ] - then - printf "Failed to execute consoleproxy_svcs\n" >$logfile - exit 7 - fi -fi - -if [ "$TYPE" == "secstorage" ] -then - secstorage_svcs - if [ $? -gt 0 ] - then - printf "Failed to execute secstorage_svcs\n" >$logfile - exit 8 - fi -fi - -exit $? diff --git a/scripts/vm/hypervisor/xenserver/id_rsa.cloud b/scripts/vm/hypervisor/xenserver/id_rsa.cloud deleted file mode 100644 index ea46a3cebb6..00000000000 --- a/scripts/vm/hypervisor/xenserver/id_rsa.cloud +++ /dev/null @@ -1,27 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIEogIBAAKCAQEA3VD1tGRDn3stlJvPNXmQZdQCNjqcfY+xlitd5q0n3KYqJ5OB -rty3/00XBUdLt31TbQ4dv+GR7uEr+ex7rm0jjmTFKV4rHYPi882CuC5+bkBp5R4k -+mpcyKbxb+IoNS9ItbiExQxMiiRQpHvNem0GGnNFO3lElRPwUFs8evTvZu5HcTj4 -k4RJLJ66jeIGJ3sMAJ03SICGwfEZjrsyeOMwJk7cH8WNeuNzxzoZd9v02eI0lHdK -9O5z7FwrxvRBbzsmJ0EwuhbH8pR7WR6kGLTNP9KEwtrnzV1LYWd+rFoSeh6ImExG -7fma3Ldydg8CPTQsjvCEQUxiuV1/x5am5VJlUwIBIwKCAQEA0KtrUk/n/MSYsLAp -xLRyNB+qUGMl1Xjao4f5cxhKJ8/emlfgrC8xI+mZXL+QiG7ZoVZz0ixzprcMNMkG -5kmlLnxE3dxxy18Xz+2nIq9+hTVrKHuB82uZT3jVAxcP96GcU5C3snlPeu8KNK8+ -FFgqU3P/cpbo5FSgwMsNI3k5fkyffYtmBdtjZhWXJqnA9+bMdCmYEKyQFWp18LvV -pjGx1jLFZTx9+aDz7gdIk21zbVXmwQmnS1fVKJEByTMvokpvdJUvDedvpgqGqX/g -IXkTXe49pYhYwxVguLK6FXyQBwOuUsnur2A79T3wBvzEMozkYLkEG/zcw0fyo3iC -fdzc6wKBgQD2gq+kUc2r/+xE+smIej2ICvFZZlSh1ko2tVmVUHuuuMCuBt054Dq9 -mf8/yIbXSvVtuBMJ+jewVnKfhucEQKf6E1jBdQShezlomFLOQ8cFQJhT6tAwJl/k -TR+OjeTuOcBknkE8nstNt7hAkZxY6h/Lu54OM9AkXyZ9skx7gHh+IwKBgQDl1f09 -YkoM9rqXM8lMKjF0z81T4ACCaFUA6ZKjSZelyG+azJDlRFNWX1In3Kq6aInpZPzs -owwIS9tjkXIaLR1wDJ+K8IGJQ19sqCzv3/kBCDXA6mqXkkPR80xRi4wuZ3lETOdL -OBXPffuQaKxk32esqsxK6As1LgH4+048JS23EQKBgQCpCSf7pc7cV7f0yTm8q5fo -QgSVEvg0da87dQo6gFTPlKFhY8rl25X+WvgrvLQ726D6x12DLzwhJVXpu5cY2+Dl -/qNC0+XrEqsF5MsRGIh4oVKCr6SzTYOVPDLlaJz7IElpkRbKe4QYCPNfecpLmTpf -0Rvse0zlvZa8l4Tm+QIqmwKBgBOzQZeMFPnMAV1q1r1is8gvEZl5maTHHTqXrXu1 -2cxhoyqGkBOmxVCL09eH8WBvXEc0irUyjAC2C32QH7kZz1K/QOAF/Hl6zao6TP6e -K0k7N861AdJ6QFPTBoqlj6w0wUBeXPfRm3gvXrSbQfoEhTqvjdqI6wSO6jnpp57B -W7CbAoGABFHMVXEyT3SliMSRtiCuDOrtl9E/aiOByPulXolqth5WDSel31Lz+iY7 -ldOLNQO/oononTStdd0fDGChl3WXBSOToJJ/HjIWH05bDY9n2EDAyZvmaW9rX3JQ -pH9c/1vlD9lxDEBvq4JXmTtdL0Ho00F5vVHnWnwINtfx6c5BIjg= ------END RSA PRIVATE KEY----- diff --git a/scripts/vm/hypervisor/xenserver/xenserver56/patch b/scripts/vm/hypervisor/xenserver/xenserver56/patch index 14b4039c5a2..15b8908ddb5 100644 --- a/scripts/vm/hypervisor/xenserver/xenserver56/patch +++ b/scripts/vm/hypervisor/xenserver/xenserver56/patch @@ -18,12 +18,9 @@ nfs.py=/opt/xensource/sm patch.tgz=..,0775,/opt/xensource/bin vmops=..,0755,/etc/xapi.d/plugins vmopsSnapshot=..,0755,/etc/xapi.d/plugins -xs_cleanup.sh=..,0755,/opt/xensource/bin -systemvm-premium.iso=../../../../../vms,0644,/opt/xensource/packages/iso -systemvm.iso=../../../../../vms,0644,/opt/xensource/packages/iso +systemvm-premium.zip=../../../../../vms,0755,/opt/xensource/bin hostvmstats.py=..,0755,/opt/xensource/sm -id_rsa.cloud=..,0600,/opt/xensource/bin -id_rsa.cloud=..,0600,/root/.ssh +xs_cleanup.sh=..,0755,/opt/xensource/bin network_info.sh=..,0755,/opt/xensource/bin prepsystemvm.sh=..,0755,/opt/xensource/bin setupxenserver.sh=..,0755,/opt/xensource/bin diff --git a/server/src/com/cloud/alert/AlertManagerImpl.java b/server/src/com/cloud/alert/AlertManagerImpl.java index 033b1ba3282..378bc5dc699 100644 --- a/server/src/com/cloud/alert/AlertManagerImpl.java +++ b/server/src/com/cloud/alert/AlertManagerImpl.java @@ -153,8 +153,7 @@ public class AlertManagerImpl implements AlertManager { smtpDebug = Boolean.parseBoolean(smtpDebugStr); } - _emailAlert = new EmailAlert(emailAddresses, smtpHost, smtpPort, useAuth, smtpUsername, smtpPassword, emailSender, smtpDebug); - _emailAlert = null; + _emailAlert = new EmailAlert(emailAddresses, smtpHost, smtpPort, useAuth, smtpUsername, smtpPassword, emailSender, smtpDebug); String storageCapacityThreshold = configs.get("storage.capacity.threshold"); String cpuCapacityThreshold = configs.get("cpu.capacity.threshold"); diff --git a/server/src/com/cloud/hypervisor/xen/discoverer/XcpServerDiscoverer.java b/server/src/com/cloud/hypervisor/xen/discoverer/XcpServerDiscoverer.java index e7dc2a20fbb..049d9a70923 100644 --- a/server/src/com/cloud/hypervisor/xen/discoverer/XcpServerDiscoverer.java +++ b/server/src/com/cloud/hypervisor/xen/discoverer/XcpServerDiscoverer.java @@ -52,7 +52,6 @@ import com.cloud.host.Status; import com.cloud.host.dao.HostDao; import com.cloud.hypervisor.xen.resource.CitrixResourceBase; import com.cloud.hypervisor.xen.resource.XcpServerResource; -import com.cloud.hypervisor.xen.resource.XenServerResource; import com.cloud.hypervisor.xen.resource.XenServerConnectionPool; import com.cloud.resource.Discoverer; import com.cloud.resource.DiscovererBase; @@ -383,10 +382,10 @@ public class XcpServerDiscoverer extends DiscovererBase implements Discoverer, L if(prodBrand.equals("XenCloudPlatform") && prodVersion.equals("0.1.1")) return new XcpServerResource(); - if(prodBrand.equals("XenServer") && prodVersion.equals("5.6.0")) - return new XenServerResource(); +// if(prodBrand.equals("XenServer") && prodVersion.equals("5.6.0")) +// return new XenServerResource(); - String msg = "Only support XCP 0.1.1 and XenServer 5.6.0, but this one is " + prodBrand + " " + prodVersion; + String msg = "Only support XCP 0.1.1 and Xerver 5.6.0, but this one is " + prodBrand + " " + prodVersion; _alertMgr.sendAlert(AlertManager.ALERT_TYPE_HOST, dcId, podId, msg, msg); s_logger.debug(msg); throw new RuntimeException(msg);