Hi Jayy,

Sorry, I had misunderstood your initial message (I though NodeImage
would give me a node but it gives me an image! duh...). I see now
clearly what I have to do. I will make a test as soon as I solve my
other issue (unrelated to libcloud).

Thanks a lot for your help!
Marko

On Thu, Jun 26, 2014 at 12:59 PM, Jayy Vis <j...@pickle.io> wrote:
> You can launch as many instances as you want by specifying the count. And
> the your create_node snippet looks fine.
>
> Are you facing any problem?
>
> BTW, create_node prepares request to amazon RunInstances api using the
> arguments passed to it (image, size, ex_mincount, ex_maxcount). And the
> image object being passed to create_node is libcloud's NodeImage type.
>
>         image = kwargs["image"]
>         size = kwargs["size"]
>         params = {
>             'Action': 'RunInstances',
>             'ImageId': *image.id <http://image.id>*,
>             'MinCount': str(kwargs.get('ex_mincount', '1')),
>             'MaxCount': str(kwargs.get('ex_maxcount', '1')),
>             'InstanceType': size.id
>         }
>
>
> Best wishes,
> Jayy Vis | @jayyvis
> Co-founder, Pickle.io
>
>
> On Thu, Jun 26, 2014 at 3:42 PM, Marko Loparic <marko.lopa...@gmail.com>
> wrote:
>
>> Hello,
>>
>> Thanks a lot for all the answers! Each of them points to an
>> interesting solution for my case. Yes, I was using a t1.micro instance
>> indeed.
>>
>> Unfortunately I wasn't able to make tests yet (because of another
>> totally independent firewall issue).
>>
>> Do you know if I can launch several nodes at once using what Jayy Vis
>> proposed? I launch several machines at once and I suspect that
>> launching one by one would take a lot of time. I use
>>
>>     nodes = conn.create_node(name, image=image, size=size,
>> ex_keyname=EC2_KEYNAME,
>>         ex_mincount=count, ex_maxcount=count)
>>
>> where count is usually between 500 and 2000. From my understanding of
>> the code it seems that the create_node method for ec2
>> (BaseEC2NodeDriver.create_method) uses an amazon RunInstances request
>> and is not based on NodeImage.
>>
>> Thanks again,
>> Marko
>>
>> On Wed, Jun 25, 2014 at 9:24 PM, Tomaz Muraus <to...@apache.org> wrote:
>> > Yeah, what others have said.
>> >
>> > By default, calling list_images in the EC2 driver without any filters
>> > returns a huge XML response. If lxml is not available (this feature is
>> only
>> > available in 0.15.0), parsing this response takes a while and consumes a
>> > lot of memory.
>> >
>> > If you are not dynamically obtaining the image based on the name and you
>> > already know the id, I would recommend you to use the approach Jayy Vis
>> has
>> > suggested.
>> >
>> > On Wed, Jun 25, 2014 at 7:13 AM, Jayy Vis <j...@pickle.io> wrote:
>> >
>> >> create_node api of libcloud just uses image.id
>> >>
>> >> So you can simply create image object directly as follows.
>> >>
>> >> Driver = get_driver(Provider.EC2_US_EAST)
>> >> conn = Driver(EC2_ACCESS_ID, EC2_SECRET)
>> >>
>> >> from libcloud.compute.base import NodeImage
>> >>
>> >> ec2_ami_id='ami-123'
>> >>
>> >> image=NodeImage(driver=conn, id=ec2_ami_id, name=ec2_ami_id, extra=None)
>> >>
>> >>
>> >>
>> >> On Wed, Jun 25, 2014 at 3:36 AM, Lehman, Matthew J <
>> lehm...@battelle.org>
>> >> wrote:
>> >>
>> >> > Do you guys have lxml installed? With the dev release it will use lxml
>> >> for
>> >> > parsing if installed and that should help a bit.
>> >> >
>> >> >
>> >> >
>> >> > -----Original Message-----
>> >> > From: Joseph Hall [perlho...@gmail.com<mailto:perlho...@gmail.com>]
>> >> > Sent: Tuesday, June 24, 2014 05:52 PM Eastern Standard Time
>> >> > To: users@libcloud.apache.org
>> >> > Subject: Re: list_images crashes (for ec2)
>> >> >
>> >> >
>> >> > Where are you actually running this code from? I have found in recent
>> >> > months that, when running libcloud against EC2 on a micro instance,
>> >> > list_images() returns just too many images for the machine to handle,
>> >> > and eventually the OOM killer destroys the process.
>> >> >
>> >> > On Tue, Jun 24, 2014 at 3:33 PM, Marko Loparic <
>> marko.lopa...@gmail.com>
>> >> > wrote:
>> >> > > Hello,
>> >> > >
>> >> > > The following script crashes when running on Amazon instance.
>> >> > >
>> >> > > ================================
>> >> > > from libcloud.compute.types import Provider
>> >> > > from libcloud.compute.providers import get_driver
>> >> > >
>> >> > > EC2_ACCESS_ID = ...
>> >> > > EC2_SECRET = ...
>> >> > > Driver = get_driver(Provider.EC2_US_EAST)
>> >> > > conn = Driver(EC2_ACCESS_ID, EC2_SECRET)
>> >> > >
>> >> > > print "before"
>> >> > > conn.list_images()
>> >> > > print "after"
>> >> > > ================================
>> >> > >
>> >> > > The first print appears and "Killed" is displayed before the second
>> >> > print.
>> >> > >
>> >> > > I suspect it is an error in etree module (apparently the list of
>> >> > > available images is huge).
>> >> > >
>> >> > > I use list_images to get the python object of the desired image
>> >> > >
>> >> > >     image = [i for i in conn.list_images() if i.id == EC2_AMI][0]
>> >> > >
>> >> > > so that I can create a node with this image (create_node method)
>> >> > >
>> >> > > Do you know if there is a way to create a node without using
>> >> > > list_images or if there is another way to avoid this crash?
>> >> > >
>> >> > > I am using python 2.7.3 and libcloud 0.14.1.
>> >> > >
>> >> > > Thanks a lot in advance!
>> >> > > Marko
>> >> >
>> >> >
>> >> >
>> >> > --
>> >> > "In order to create, you have to have the willingness, the desire to
>> >> > be challenged, to be learning." -- Ferran Adria (speaking at Harvard,
>> >> > 2011)
>> >> >
>> >>
>>

Reply via email to