Updated Branches: refs/heads/4.1 c9c8f1b5c -> 38e06631d
revert 75aad6763b57ab2ebbe79101888368a3bd8f4185 which was wrongly checked in after 4.1 frozen Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/38e06631 Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/38e06631 Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/38e06631 Branch: refs/heads/4.1 Commit: 38e06631d242ca2ba232e5c75ae853de15c51043 Parents: c9c8f1b Author: frank <[email protected]> Authored: Fri Mar 1 17:49:35 2013 -0800 Committer: frank <[email protected]> Committed: Fri Mar 1 17:50:08 2013 -0800 ---------------------------------------------------------------------- .../BaremetalKickStartPxeResource.java | 2 +- .../BaremetalKickStartServiceImpl.java | 33 +-------- .../PrepareKickstartPxeServerCommand.java | 31 +++----- .../ping/prepare_kickstart_kernel_initrd.py | 55 +++++++-------- 4 files changed, 41 insertions(+), 80 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/38e06631/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalKickStartPxeResource.java ---------------------------------------------------------------------- diff --git a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalKickStartPxeResource.java b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalKickStartPxeResource.java index 58c6e86..2b9b140 100755 --- a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalKickStartPxeResource.java +++ b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalKickStartPxeResource.java @@ -175,7 +175,7 @@ public class BaremetalKickStartPxeResource extends BaremetalPxeResourceBase { } String copyTo = String.format("%s/%s", _tftpDir, cmd.getTemplateUuid()); - String script = String.format("python /usr/bin/prepare_kickstart_kernel_initrd.py %s %s %s", cmd.getKernel(), cmd.getInitrd(), copyTo); + String script = String.format("python /usr/bin/prepare_kickstart_kernel_initrd.py %s %s", cmd.getRepo(), copyTo); if (!SSHCmdHelper.sshExecuteCmd(sshConnection, script)) { return new Answer(cmd, false, "prepare kickstart at pxe server " + _ip + " failed, command:" + script); http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/38e06631/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalKickStartServiceImpl.java ---------------------------------------------------------------------- diff --git a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalKickStartServiceImpl.java b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalKickStartServiceImpl.java index 8a5ac78..ba5fb0d 100755 --- a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalKickStartServiceImpl.java +++ b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalKickStartServiceImpl.java @@ -95,36 +95,11 @@ public class BaremetalKickStartServiceImpl extends BareMetalPxeServiceBase imple try { String tpl = profile.getTemplate().getUrl(); assert tpl != null : "How can a null template get here!!!"; - String[] tpls = tpl.split(";"); - CloudRuntimeException err = new CloudRuntimeException(String.format("template url[%s] is not correctly encoded. it must be in format of ks=http_link_to_kickstartfile;kernel=nfs_path_to_pxe_kernel;initrd=nfs_path_to_pxe_initrd", tpl)); - if (tpls.length != 3) { - throw err; - } - - String ks = null; - String kernel = null; - String initrd = null; - - for (String t : tpls) { - String[] kv = t.split("="); - if (kv.length != 2) { - throw err; - } - if (kv[0].equals("ks")) { - ks = kv[1]; - } else if (kv[0].equals("kernel")) { - kernel = kv[1]; - } else if (kv[0].equals("initrd")) { - initrd = kv[1]; - } else { - throw err; - } - } - + String[] tpls = tpl.split(";"); + assert tpls.length == 2 : "Template is not correctly encoded. " + tpl; PrepareKickstartPxeServerCommand cmd = new PrepareKickstartPxeServerCommand(); - cmd.setKsFile(ks); - cmd.setInitrd(initrd); - cmd.setKernel(kernel); + cmd.setKsFile(tpls[0]); + cmd.setRepo(tpls[1]); cmd.setMac(nic.getMacAddress()); cmd.setTemplateUuid(template.getUuid()); Answer aws = _agentMgr.send(pxeVo.getHostId(), cmd); http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/38e06631/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/PrepareKickstartPxeServerCommand.java ---------------------------------------------------------------------- diff --git a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/PrepareKickstartPxeServerCommand.java b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/PrepareKickstartPxeServerCommand.java index 25dfeb7..8951547 100755 --- a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/PrepareKickstartPxeServerCommand.java +++ b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/PrepareKickstartPxeServerCommand.java @@ -22,11 +22,10 @@ import com.cloud.agent.api.Command; public class PrepareKickstartPxeServerCommand extends Command { private String ksFile; + private String repo; private String templateUuid; private String mac; - private String ksDevice; - private String kernel; - private String initrd; + private String ksDevice; @Override public boolean executeInSequence() { @@ -40,23 +39,15 @@ public class PrepareKickstartPxeServerCommand extends Command { public void setKsFile(String ksFile) { this.ksFile = ksFile; } - - public String getKernel() { - return kernel; - } - - public void setKernel(String kernel) { - this.kernel = kernel; - } - - public String getInitrd() { - return initrd; - } - - public void setInitrd(String initrd) { - this.initrd = initrd; - } - + + public String getRepo() { + return repo; + } + + public void setRepo(String repo) { + this.repo = repo; + } + public String getTemplateUuid() { return templateUuid; } http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/38e06631/scripts/network/ping/prepare_kickstart_kernel_initrd.py ---------------------------------------------------------------------- diff --git a/scripts/network/ping/prepare_kickstart_kernel_initrd.py b/scripts/network/ping/prepare_kickstart_kernel_initrd.py index ff61848..b234a62 100755 --- a/scripts/network/ping/prepare_kickstart_kernel_initrd.py +++ b/scripts/network/ping/prepare_kickstart_kernel_initrd.py @@ -21,55 +21,50 @@ import tempfile import os.path import os -kernel = None -initrd = None -copy_to = None +iso_folder = '' +copy_to = '' def cmd(cmdstr, err=True): - print cmdstr if os.system(cmdstr) != 0 and err: raise Exception("Failed to run shell command: %s" % cmdstr) def prepare(): - global kernel, initrd, copy_to try: - k = os.path.join(copy_to, "vmlinuz") - i = os.path.join(copy_to, "initrd.img") - if os.path.exists(k) and os.path.exists(i): + kernel = os.path.join(copy_to, "vmlinuz") + initrd = os.path.join(copy_to, "initrd.img") + if os.path.exists(kernel) and os.path.exists(initrd): print "Having template(%s) prepared already, skip copying" % copy_to return 0 else: if not os.path.exists(copy_to): os.makedirs(copy_to) - - def copy_from_nfs(src, dst): - mnt_path = tempfile.mkdtemp() - try: - nfs_path = os.path.dirname(src) - filename = os.path.basename(src) - t = os.path.join(mnt_path, filename) - mnt = "mount %s %s" % (nfs_path, mnt_path) - cmd(mnt) - cp = "cp -f %s %s" % (t, dst) - cmd(cp) - finally: - umnt = "umount %s" % mnt_path - cmd(umnt, False) - rm = "rm -r %s" % mnt_path - cmd(rm, False) - - copy_from_nfs(kernel, copy_to) - copy_from_nfs(initrd, copy_to) + mnt_path = tempfile.mkdtemp() + try: + mnt = "mount %s %s" % (iso_folder, mnt_path) + cmd(mnt) + + kernel = os.path.join(mnt_path, "vmlinuz") + initrd = os.path.join(mnt_path, "initrd.img") + cp = "cp -f %s %s/" % (kernel, copy_to) + cmd(cp) + cp = "cp -f %s %s/" % (initrd, copy_to) + cmd(cp) + finally: + umnt = "umount %s" % mnt_path + cmd(umnt, False) + rm = "rm -r %s" % mnt_path + cmd(rm, False) + return 0 except Exception, e: print e return 1 if __name__ == "__main__": - if len(sys.argv) < 4: - print "Usage: prepare_kickstart_kerneal_initrd.py path_to_kernel path_to_initrd path_kernel_initrd_copy_to" + if len(sys.argv) < 3: + print "Usage: prepare_kickstart_kerneal_initrd.py path_to_kernel_initrd_iso path_kernel_initrd_copy_to" sys.exit(1) - (kernel, initrd, copy_to) = sys.argv[1:] + (iso_folder, copy_to) = sys.argv[1:] sys.exit(prepare())
