Return-Path: X-Original-To: apmail-incubator-cloudstack-dev-archive@minotaur.apache.org Delivered-To: apmail-incubator-cloudstack-dev-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 97C96DBBE for ; Sat, 2 Mar 2013 00:44:10 +0000 (UTC) Received: (qmail 20651 invoked by uid 500); 2 Mar 2013 00:44:10 -0000 Delivered-To: apmail-incubator-cloudstack-dev-archive@incubator.apache.org Received: (qmail 20621 invoked by uid 500); 2 Mar 2013 00:44:10 -0000 Mailing-List: contact cloudstack-dev-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: cloudstack-dev@incubator.apache.org Delivered-To: mailing list cloudstack-dev@incubator.apache.org Received: (qmail 20612 invoked by uid 99); 2 Mar 2013 00:44:10 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 02 Mar 2013 00:44:10 +0000 X-ASF-Spam-Status: No, hits=-1.6 required=5.0 tests=RCVD_IN_DNSWL_MED,SPF_NEUTRAL X-Spam-Check-By: apache.org Received-SPF: neutral (nike.apache.org: local policy) Received: from [74.125.149.141] (HELO na3sys009aog128.obsmtp.com) (74.125.149.141) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 02 Mar 2013 00:44:02 +0000 Received: from mail-wg0-f71.google.com ([74.125.82.71]) (using TLSv1) by na3sys009aob128.postini.com ([74.125.148.12]) with SMTP ID DSNKUTFLPEx3G3GMhcUFi7zdX5l5O5Ox/D3C@postini.com; Fri, 01 Mar 2013 16:43:41 PST Received: by mail-wg0-f71.google.com with SMTP id dr13so4043004wgb.6 for ; Fri, 01 Mar 2013 16:43:39 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=x-received:x-received:references:from:mime-version:in-reply-to:date :message-id:subject:to:cc:content-type:x-gm-message-state; bh=6NOs671EQASc3QRnS6g4FfIT3BgFxMi7odYjNa0vwBk=; b=Nfxk0V2FGEe8fwE5MiDFaXcs6o+C5JEOWVUtqE6C1UlXkWphQLfoqh9762yw2qSRDr oqecJVpScmf/D9JuRhkHNWkePcwLWQUBWH5cJuUvPS7eUpUHLyjpQoqlQhmNhFAxUuGD 0bgDq+M+iJiXsPwrd0BV3mzQSHRfz2hj/iYweGqEZuRkh4bEl7H/dls3xUFpxlxphrU8 BLz0FWaj1SfM165CTnVkzTYWrOBIsYp+vJJ7Y8C+ZcgGFDOPu0nmAjf10A837AqzEeRu aYXEdSsEL8v9pntdoa8q8Yz8D2YO3Rx4P3zhxMNLiDwuaLPiJtGgVENe8rDYWZWsKqdc RvZg== X-Received: by 10.194.81.40 with SMTP id w8mr20634394wjx.14.1362185019209; Fri, 01 Mar 2013 16:43:39 -0800 (PST) X-Received: by 10.194.81.40 with SMTP id w8mr20634390wjx.14.1362185019086; Fri, 01 Mar 2013 16:43:39 -0800 (PST) References: <20130301230407.5FE963BB11@tyr.zones.apache.org> <93099572B72EB341B81A644E134F240B013145AD3217@SJCPMAILBOX01.citrite.net> From: Chip Childers Mime-Version: 1.0 (1.0) In-Reply-To: <93099572B72EB341B81A644E134F240B013145AD3217@SJCPMAILBOX01.citrite.net> Date: Fri, 1 Mar 2013 19:43:32 -0500 Message-ID: <-4078276585263887489@unknownmsgid> Subject: Re: git commit: refs/heads/4.1 - CloudStack CLOUDSTACK-774 Supporting kickstart in CloudStack baremetal To: "" Cc: "Frank.Zhang@citrix.com" Content-Type: text/plain; charset=ISO-8859-1 X-Gm-Message-State: ALoCoQnRfNjMt/EqkIjuAJU33sJeMMvGvVu91QiyMHb9+fkj2qtg13Qvo4mo/LoGNEA9dOayByDtBX/fGztMOvkRWHNunCnUDPtYT/pKhA996PlqYduy6hQjTxN9I1gKtsEErQnAJOHTzi3YfR7he3TWonc6CarvOZDcz+OZZthC+sicLXuqxDR9/UOE0KowwwrHNr0XMSIE X-Virus-Checked: Checked by ClamAV on apache.org Is this a blocker bug fix? On Mar 1, 2013, at 7:22 PM, Frank Zhang wrote: > Oh, I am sorry. I forgot the last day of Feb is 28 ... didn't notice today is 3/1 > >> -----Original Message----- >> From: David Nalley [mailto:david@gnsa.us] >> Sent: Friday, March 01, 2013 3:10 PM >> To: cloudstack-dev@incubator.apache.org >> Cc: cloudstack-commits@incubator.apache.org >> Subject: Re: git commit: refs/heads/4.1 - CloudStack CLOUDSTACK-774 >> Supporting kickstart in CloudStack baremetal >> >> Why did this hit 4.1? >> >> >> >> On Fri, Mar 1, 2013 at 6:04 PM, wrote: >>> Updated Branches: >>> refs/heads/4.1 a47f32343 -> 75aad6763 >>> >>> >>> CloudStack CLOUDSTACK-774 >>> Supporting kickstart in CloudStack baremetal >>> >>> make kikcstart working with ubuntu >>> >>> >>> Project: >>> http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo >>> Commit: >>> http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/75a >>> ad676 >>> Tree: >>> http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/75aad >>> 676 >>> Diff: >>> http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/75aad >>> 676 >>> >>> Branch: refs/heads/4.1 >>> Commit: 75aad6763b57ab2ebbe79101888368a3bd8f4185 >>> Parents: a47f323 >>> Author: Frank Zhang >>> Authored: Fri Mar 1 15:03:10 2013 -0800 >>> Committer: Frank Zhang >>> Committed: Fri Mar 1 15:03:33 2013 -0800 >>> >>> ---------------------------------------------------------------------- >>> .../BaremetalKickStartPxeResource.java | 2 +- >>> .../BaremetalKickStartServiceImpl.java | 33 ++++++++- >>> .../PrepareKickstartPxeServerCommand.java | 31 +++++--- >>> .../ping/prepare_kickstart_kernel_initrd.py | 55 ++++++++------- >>> 4 files changed, 80 insertions(+), 41 deletions(-) >>> ---------------------------------------------------------------------- >>> >>> >>> http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/75aad >> 676/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservi >>> ce/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 2b9b140..58c6e86 100755 >>> --- >> a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice >>> /BaremetalKickStartPxeResource.java >>> +++ >> b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkser >>> +++ vice/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", cmd.getRepo(), >> copyTo); >>> + String script = String.format("python >>> + /usr/bin/prepare_kickstart_kernel_initrd.py %s %s %s", >>> + cmd.getKernel(), cmd.getInitrd(), 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/75aad >> 676/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservi >>> ce/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 ba5fb0d..8a5ac78 100755 >>> --- >> a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice >>> /BaremetalKickStartServiceImpl.java >>> +++ >> b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkser >>> +++ vice/BaremetalKickStartServiceImpl.java >>> @@ -95,11 +95,36 @@ 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(";"); >>> - assert tpls.length == 2 : "Template is not correctly encoded. " + tpl; >>> + 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_pa >> th_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; >>> + } >>> + } >>> + >>> PrepareKickstartPxeServerCommand cmd = new >> PrepareKickstartPxeServerCommand(); >>> - cmd.setKsFile(tpls[0]); >>> - cmd.setRepo(tpls[1]); >>> + cmd.setKsFile(ks); >>> + cmd.setInitrd(initrd); >>> + cmd.setKernel(kernel); >>> 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/75aad >> 676/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservi >>> ce/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 8951547..25dfeb7 100755 >>> --- >> a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice >>> /PrepareKickstartPxeServerCommand.java >>> +++ >> b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkser >>> +++ vice/PrepareKickstartPxeServerCommand.java >>> @@ -22,10 +22,11 @@ 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 ksDevice; >>> + private String kernel; >>> + private String initrd; >>> >>> @Override >>> public boolean executeInSequence() { @@ -39,15 +40,23 @@ public >>> class PrepareKickstartPxeServerCommand extends Command { >>> public void setKsFile(String ksFile) { >>> this.ksFile = ksFile; >>> } >>> - >>> - public String getRepo() { >>> - return repo; >>> - } >>> - >>> - public void setRepo(String repo) { >>> - this.repo = repo; >>> - } >>> - >>> + >>> + 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 getTemplateUuid() { >>> return templateUuid; >>> } >>> >>> http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/75aad >>> 676/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 b234a62..ff61848 100755 >>> --- a/scripts/network/ping/prepare_kickstart_kernel_initrd.py >>> +++ b/scripts/network/ping/prepare_kickstart_kernel_initrd.py >>> @@ -21,50 +21,55 @@ import tempfile >>> import os.path >>> import os >>> >>> -iso_folder = '' >>> -copy_to = '' >>> +kernel = None >>> +initrd = None >>> +copy_to = None >>> >>> 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: >>> - 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): >>> + 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): >>> print "Having template(%s) prepared already, skip copying" % >> copy_to >>> return 0 >>> else: >>> if not os.path.exists(copy_to): >>> os.makedirs(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 >>> + >>> + 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) >>> except Exception, e: >>> print e >>> return 1 >>> >>> if __name__ == "__main__": >>> - if len(sys.argv) < 3: >>> - print "Usage: prepare_kickstart_kerneal_initrd.py >> path_to_kernel_initrd_iso path_kernel_initrd_copy_to" >>> + if len(sys.argv) < 4: >>> + print "Usage: prepare_kickstart_kerneal_initrd.py path_to_kernel >> path_to_initrd path_kernel_initrd_copy_to" >>> sys.exit(1) >>> >>> - (iso_folder, copy_to) = sys.argv[1:] >>> + (kernel, initrd, copy_to) = sys.argv[1:] >>> sys.exit(prepare()) >