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/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 <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/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())
>
>

Reply via email to