On Mar 1, 2013, at 8:03 PM, Frank Zhang <frank.zh...@citrix.com> 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.child...@sungard.com]
>> Sent: Friday, March 01, 2013 4:44 PM
>> To: <cloudstack-dev@incubator.apache.org>
>> 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 <frank.zh...@citrix.com> 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:da...@gnsa.us]
>>>> Sent: Friday, March 01, 2013 3:10 PM
>>>> To: cloudstack-dev@incubator.apache.org
>>>> Cc: cloudstack-comm...@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,  <frankzh...@apache.org> 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 <frank.zh...@citrix.com>
>>>>> Authored: Fri Mar 1 15:03:10 2013 -0800
>>>>> Committer: Frank Zhang <frank.zh...@citrix.com>
>>>>> 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())
>

Reply via email to