Hey Tomoe,
> > - a launched instance cannot go outside the world and failed > to get the cirros image with floating ip. > For this to work, the floating ip range defined by FLOATING_RANGE have to be configured on your network. An easy solution for this is to set FLOATING_RANGE as some unused ips in your host network (like FLOATING_RANGE= 192.168.2.196/30). > - I had to go inside nova-compute session to enter password > for executing guestmount and fusermount with sudo. > Hmm, this doesn't happen for me. If it is reproducible, perhaps open a bug describing the repro steps? As for creating a bootable volume through an api. Is it that you'd want to do something like: > nova bootable-volume-create --instance_id=x # That would create a bootable volume based on an image Or: > nova bootable-volume-create --image_id=x # Create a bootable volume from an image Those are of course imaginary calls - just trying to get a feel for what you think would be most useful. A > > So, I made some changes with the patch below and got it working. > > midokura@midokura-iMac:~/git/devstack.forked/exercises$ diff -u > boot_from_volume_new-8fe133bebcd90fa94c7a1d12c00b3f2cca18a35c.sh > bfv.sh > --- boot_from_volume_new-8fe133bebcd90fa94c7a1d12c00b3f2cca18a35c.sh > 2012-02-11 > 05:49:08.000000000 +0900 > +++ bfv.sh 2012-02-14 14:30:44.233636001 +0900 > @@ -99,13 +99,13 @@ > fi > > # Add floating ip to our server > -nova add-floating-ip $VM_UUID $FLOATING_IP > +#nova add-floating-ip $VM_UUID $FLOATING_IP > > # Test we can ping our floating ip within ASSOCIATE_TIMEOUT seconds > -if ! timeout $ASSOCIATE_TIMEOUT sh -c "while ! ping -c1 -w1 > $FLOATING_IP; do sleep 1; done"; then > - echo "Couldn't ping server with floating ip" > - exit 1 > -fi > +#if ! timeout $ASSOCIATE_TIMEOUT sh -c "while ! ping -c1 -w1 > $FLOATING_IP; do sleep 1; done"; then > +# echo "Couldn't ping server with floating ip" > +# exit 1 > +#fi > > # Create our volume > nova volume-create --display_name=$VOL_NAME 1 > @@ -116,6 +116,9 @@ > exit 1 > fi > > +# get private ip > +IP=$(nova show $VM_UUID |grep priv | awk -F '|' '{print $3}'|sed -e 's/ > //') > + > # FIXME (anthony) - python-novaclient should accept a volume_id for > the attachment param > DEVICE=/dev/vdb > VOLUME_ID=`nova volume-list | grep $VOL_NAME | cut -d '|' -f 2 | tr -d ' > '` > @@ -131,7 +134,7 @@ > # To do this, ssh to the builder instance, mount volume, and build a > volume-backed image. > STAGING_DIR=/tmp/stage > CIRROS_DIR=/tmp/cirros > -ssh -o StrictHostKeyChecking=no -i $KEY_FILE cirros@$FLOATING_IP << EOF > +ssh -o StrictHostKeyChecking=no -i $KEY_FILE cirros@$IP << EOF > set -o errexit > set -o xtrace > sudo mkdir -p $STAGING_DIR > @@ -177,16 +180,16 @@ > sleep 1 > > # Add floating ip to our server > -nova add-floating-ip $VOL_VM_UUID $FLOATING_IP > +#nova add-floating-ip $VOL_VM_UUID $FLOATING_IP > > # Test we can ping our floating ip within ASSOCIATE_TIMEOUT seconds > -if ! timeout $ASSOCIATE_TIMEOUT sh -c "while ! ping -c1 -w1 > $FLOATING_IP; do sleep 1; done"; then > - echo "Couldn't ping volume-backed server with floating ip" > - exit 1 > -fi > +#if ! timeout $ASSOCIATE_TIMEOUT sh -c "while ! ping -c1 -w1 > $FLOATING_IP; do sleep 1; done"; then > +# echo "Couldn't ping volume-backed server with floating ip" > +# exit 1 > +#fi > > # Make sure our volume-backed instance launched > -ssh -o StrictHostKeyChecking=no -i $KEY_FILE cirros@$FLOATING_IP << EOF > +ssh -o StrictHostKeyChecking=no -i $KEY_FILE cirros@$IP << EOF > echo "success!" > EOF > > @@ -206,7 +209,7 @@ > nova delete $INSTANCE_NAME > > # De-allocate the floating ip > -nova floating-ip-delete $FLOATING_IP > +#nova floating-ip-delete $FLOATING_IP > > # Delete secgroup > nova secgroup-delete $SECGROUP > ---------------------------------------------- > > Hope this helps. > > Cheers, > Tomoe > > > On Sat, Feb 11, 2012 at 10:31 PM, Tomoe Sugihara <to...@midokura.com> > wrote: > > Hi Anthony, > > > > Thanks for following it up. > > > > On Sat, Feb 11, 2012 at 2:58 PM, Anthony Young > > <sleepsonthefl...@gmail.com> wrote: > >> On Fri, Feb 10, 2012 at 8:51 PM, Tomoe Sugihara <to...@midokura.com> > wrote: > >>> > >>> Hi folks, > >>> > >>> Could someone tell me what is the right way to do boot-from-volume? > >>> Especially, how to create boot-from-volume capable image and volume? > >>> My understanding is that, since openstack API requires imageRef, we > >>> need to pass in both image and volume ids. > >> > >> > >> I was actually playing with this today, and just put up a review that > adds a > >> devstack exercise to create and launch a bootable volume. It is true > that > >> --image is still required when booting from a volume - I have not > >> investigated yet if that is a bug or a consequence of how > boot-from-volume > >> is implemented as an extension (which still may fall into the bug > category). > >> > >> https://review.openstack.org/4044 > > > > Current servers API, which boot-from-volume inherits from, throws an > > exception when imageRef is missing: > > > https://github.com/openstack/nova/blob/master/nova/api/openstack/compute/servers.py#L646 > > > https://github.com/openstack/nova/blob/master/nova/api/openstack/compute/servers.py#L965 > > > >> > >>> > >>> I thought that create_image in EC2 API would be the one and tried, but > >>> it's totally broken now: > >>> https://bugs.launchpad.net/nova/+bug/923546 > >>> And, I didn't find equivalent code in OpenStack API. > >>> > >>> > >>> I'd appreciate any help on this and I'd be happy to help debug the > issue. > >> > >> > >> Hopefully the code above will give you some direction to get started. > My > >> experience thus far is that the end-to-end experience of using this > feature > >> needs some work, so I'll probably file some bugs and patches while I > muck > >> with it. So it would be great if you took a look and did the same:) > > > > That helps me understand the end-to-end workflow a lot :) > > In your script, you log in to a guest and copy a bootable image by cp > > command to a volume, but I'm wondering if there's a way to create > > bootable volume using only APIs. Otherwise it's a bit hard to manage > > from operator's or dashboard's point of view. > > > > I'll run your script next week and see how it goes. Thanks a lot! > > > > Tomoe > > > >> > >> Anthony > >> > >>> > >>> Cheers, > >>> Tomoe > >>> > >>> _______________________________________________ > >>> Mailing list: https://launchpad.net/~openstack > >>> Post to : openstack@lists.launchpad.net > >>> Unsubscribe : https://launchpad.net/~openstack > >>> More help : https://help.launchpad.net/ListHelp > >> > >> >
_______________________________________________ Mailing list: https://launchpad.net/~openstack Post to : openstack@lists.launchpad.net Unsubscribe : https://launchpad.net/~openstack More help : https://help.launchpad.net/ListHelp