You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cloudstack.apache.org by David Nalley <da...@gnsa.us> on 2013/03/02 00:09:48 UTC
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, <fr...@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/75aad676
> Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/75aad676
> Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/75aad676
>
> Branch: refs/heads/4.1
> Commit: 75aad6763b57ab2ebbe79101888368a3bd8f4185
> Parents: a47f323
> Author: Frank Zhang <Fr...@citrix.com>
> Authored: Fri Mar 1 15:03:10 2013 -0800
> Committer: Frank Zhang <Fr...@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/75aad676/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 2b9b140..58c6e86 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", 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/75aad676/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 ba5fb0d..8a5ac78 100755
> --- a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalKickStartServiceImpl.java
> +++ b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/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_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;
> + }
> + }
> +
> 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/75aad676/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 8951547..25dfeb7 100755
> --- a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/PrepareKickstartPxeServerCommand.java
> +++ b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/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/75aad676/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())
>
>
Re: git commit: refs/heads/4.1 - CloudStack CLOUDSTACK-774 Supporting
kickstart in CloudStack baremetal
Posted by Chip Childers <ch...@sungard.com>.
On Mar 1, 2013, at 8:03 PM, Frank Zhang <Fr...@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.childers@sungard.com]
>> Sent: Friday, March 01, 2013 4:44 PM
>> To: <cl...@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 <Fr...@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: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, <fr...@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 <Fr...@citrix.com>
>>>>> Authored: Fri Mar 1 15:03:10 2013 -0800
>>>>> Committer: Frank Zhang <Fr...@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())
>
RE: git commit: refs/heads/4.1 - CloudStack CLOUDSTACK-774
Supporting kickstart in CloudStack baremetal
Posted by Frank Zhang <Fr...@citrix.com>.
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
> -----Original Message-----
> From: Chip Childers [mailto:chip.childers@sungard.com]
> Sent: Friday, March 01, 2013 4:44 PM
> To: <cl...@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 <Fr...@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: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, <fr...@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 <Fr...@citrix.com>
> >>> Authored: Fri Mar 1 15:03:10 2013 -0800
> >>> Committer: Frank Zhang <Fr...@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())
> >
Re: git commit: refs/heads/4.1 - CloudStack CLOUDSTACK-774 Supporting
kickstart in CloudStack baremetal
Posted by Chip Childers <ch...@sungard.com>.
On Mar 1, 2013, at 8:43 PM, Frank Zhang <Fr...@citrix.com> wrote:
> I am going to revert it. Thanks
I see you did. Many thanks!
>
>> -----Original Message-----
>> From: Chip Childers [mailto:chip.childers@sungard.com]
>> Sent: Friday, March 01, 2013 5:41 PM
>> To: Frank Zhang
>> Cc: <cl...@incubator.apache.org>
>> Subject: Re: git commit: refs/heads/4.1 - CloudStack CLOUDSTACK-774
>> Supporting kickstart in CloudStack baremetal
>>
>> On Fri, Mar 01, 2013 at 04:53:31PM -0800, Frank Zhang wrote:
>>> No it's not
>>
>> So should it be reverted?
>
RE: git commit: refs/heads/4.1 - CloudStack CLOUDSTACK-774
Supporting kickstart in CloudStack baremetal
Posted by Frank Zhang <Fr...@citrix.com>.
I am going to revert it. Thanks
> -----Original Message-----
> From: Chip Childers [mailto:chip.childers@sungard.com]
> Sent: Friday, March 01, 2013 5:41 PM
> To: Frank Zhang
> Cc: <cl...@incubator.apache.org>
> Subject: Re: git commit: refs/heads/4.1 - CloudStack CLOUDSTACK-774
> Supporting kickstart in CloudStack baremetal
>
> On Fri, Mar 01, 2013 at 04:53:31PM -0800, Frank Zhang wrote:
> > No it's not
>
> So should it be reverted?
Re: git commit: refs/heads/4.1 - CloudStack CLOUDSTACK-774
Supporting kickstart in CloudStack baremetal
Posted by Chip Childers <ch...@sungard.com>.
On Fri, Mar 01, 2013 at 04:53:31PM -0800, Frank Zhang wrote:
> No it's not
So should it be reverted?
RE: git commit: refs/heads/4.1 - CloudStack CLOUDSTACK-774
Supporting kickstart in CloudStack baremetal
Posted by Frank Zhang <Fr...@citrix.com>.
No it's not
> -----Original Message-----
> From: Chip Childers [mailto:chip.childers@sungard.com]
> Sent: Friday, March 01, 2013 4:44 PM
> To: <cl...@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 <Fr...@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: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, <fr...@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 <Fr...@citrix.com>
> >>> Authored: Fri Mar 1 15:03:10 2013 -0800
> >>> Committer: Frank Zhang <Fr...@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())
> >
Re: git commit: refs/heads/4.1 - CloudStack CLOUDSTACK-774 Supporting
kickstart in CloudStack baremetal
Posted by Chip Childers <ch...@sungard.com>.
Is this a blocker bug fix?
On Mar 1, 2013, at 7:22 PM, Frank Zhang <Fr...@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: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, <fr...@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/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 <Fr...@citrix.com>
>>> Authored: Fri Mar 1 15:03:10 2013 -0800
>>> Committer: Frank Zhang <Fr...@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/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())
>
RE: git commit: refs/heads/4.1 - CloudStack CLOUDSTACK-774
Supporting kickstart in CloudStack baremetal
Posted by Frank Zhang <Fr...@citrix.com>.
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, <fr...@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/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 <Fr...@citrix.com>
> > Authored: Fri Mar 1 15:03:10 2013 -0800
> > Committer: Frank Zhang <Fr...@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/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())
> >
> >