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 5786AECC6 for ; Sat, 2 Mar 2013 02:07:35 +0000 (UTC) Received: (qmail 62546 invoked by uid 500); 2 Mar 2013 02:07:34 -0000 Delivered-To: apmail-incubator-cloudstack-dev-archive@incubator.apache.org Received: (qmail 62503 invoked by uid 500); 2 Mar 2013 02:07:34 -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 62493 invoked by uid 99); 2 Mar 2013 02:07:34 -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 02:07:34 +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.69] (HELO na3sys009aog102.obsmtp.com) (74.125.149.69) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 02 Mar 2013 02:07:27 +0000 Received: from mail-lb0-f199.google.com ([209.85.217.199]) (using TLSv1) by na3sys009aob102.postini.com ([74.125.148.12]) with SMTP ID DSNKUTFeyA46eMYjUbp9CWHMHJ5G8tFke39h@postini.com; Fri, 01 Mar 2013 18:07:06 PST Received: by mail-lb0-f199.google.com with SMTP id m4so4197615lbo.2 for ; Fri, 01 Mar 2013 18:07:03 -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=WjjTXnQuDcq1bYSQ0Bo+P//kqv4DtfNNmRqLFdMtBPo=; b=bR98RrgmXRTpfUE0kjRe0lTYolxedMxrYgqBMolQTEDAyHddYOK5TQbS9WkRTfrMjp 3HIjgTw9acLAOQQLCeLN57bZ4fRYrQrAnWGz+uCRZDw9fWZNZkQ9VkRGUDE9ysBTMqFl rVUHr45uX5IKCd6whi1/GQzwOn3C+eCiHBtcBcSQZlS7GGp+g6oyQisn3iNQA0NWC9nE zPkmnyERBGM8YM59DdxpfQqG63A8jzygtquFWme4aED7o1wxCVX2MweT/7s8bShPUrxK 2mZ5uUjAixRqKsrnFxuBYZAysjBd0KDX4VIevYUtpRvAu2ffX2AZRUGoc80xG1kJ4CAB H3aA== X-Received: by 10.194.81.40 with SMTP id w8mr20847441wjx.14.1362190023164; Fri, 01 Mar 2013 18:07:03 -0800 (PST) X-Received: by 10.194.81.40 with SMTP id w8mr20847434wjx.14.1362190023028; Fri, 01 Mar 2013 18:07:03 -0800 (PST) References: <20130301230407.5FE963BB11@tyr.zones.apache.org> <93099572B72EB341B81A644E134F240B013145AD3217@SJCPMAILBOX01.citrite.net> <-4078276585263887489@unknownmsgid> <93099572B72EB341B81A644E134F240B013145AD321A@SJCPMAILBOX01.citrite.net> From: Chip Childers Mime-Version: 1.0 (1.0) In-Reply-To: <93099572B72EB341B81A644E134F240B013145AD321A@SJCPMAILBOX01.citrite.net> Date: Fri, 1 Mar 2013 21:06:51 -0500 Message-ID: <3746214186055429084@unknownmsgid> Subject: Re: git commit: refs/heads/4.1 - CloudStack CLOUDSTACK-774 Supporting kickstart in CloudStack baremetal To: Frank Zhang Cc: "" Content-Type: text/plain; charset=ISO-8859-1 X-Gm-Message-State: ALoCoQnQ0L95lE8sI64qtZNqT04uHLYDe79/pNEVIurCyXnT4XTgECE2FaB1Wwj9h+vUn/c0WqXZ1sAZEH449VxSn/ssRIpyl138xIMocuIPYdbVcTpx/8eWm2KA7PJuqQL0MLGZWSdSjB+233XnpR1W6nPTLf5GmNR6vKTrESGI8GbRylBbZw95JXAYJXCtXmzYrbjS2nVx X-Virus-Checked: Checked by ClamAV on apache.org On Mar 1, 2013, at 8:03 PM, Frank Zhang wrote: > But I do find recently 4.1 broken on baremetal, because some merge flush part of my code. > I am going to file a block bug for that Cool deal. Thanks Frank! > >> -----Original Message----- >> From: Chip Childers [mailto:chip.childers@sungard.com] >> Sent: Friday, March 01, 2013 4:44 PM >> To: >> Cc: Frank Zhang >> Subject: Re: git commit: refs/heads/4.1 - CloudStack CLOUDSTACK-774 >> Supporting kickstart in CloudStack baremetal >> >> 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/7 >>>>> 5a >>>>> ad676 >>>>> Tree: >>>>> http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/75a >>>>> ad >>>>> 676 >>>>> Diff: >>>>> http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/75a >>>>> ad >>>>> 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/75a >>>>> ad >> 676/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkserv >>>> i >>>>> ce/BaremetalKickStartPxeResource.java >>>>> -------------------------------------------------------------------- >>>>> -- >>>>> diff --git >> a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservic >>>> e >>>>> /BaremetalKickStartPxeResource.java >> b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservic >>>> e >>>>> /BaremetalKickStartPxeResource.java >>>>> index 2b9b140..58c6e86 100755 >>>>> --- >> a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservic >>>> e >>>>> /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/75a >>>>> ad >> 676/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkserv >>>> i >>>>> ce/BaremetalKickStartServiceImpl.java >>>>> -------------------------------------------------------------------- >>>>> -- >>>>> diff --git >> a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservic >>>> e >>>>> /BaremetalKickStartServiceImpl.java >> b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservic >>>> e >>>>> /BaremetalKickStartServiceImpl.java >>>>> index ba5fb0d..8a5ac78 100755 >>>>> --- >> a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservic >>>> e >>>>> /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=nf >>>> s_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/75a >>>>> ad >> 676/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkserv >>>> i >>>>> ce/PrepareKickstartPxeServerCommand.java >>>>> -------------------------------------------------------------------- >>>>> -- >>>>> diff --git >> a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservic >>>> e >>>>> /PrepareKickstartPxeServerCommand.java >> b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservic >>>> e >>>>> /PrepareKickstartPxeServerCommand.java >>>>> index 8951547..25dfeb7 100755 >>>>> --- >> a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservic >>>> e >>>>> /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/75a >>>>> ad 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()) >