puppetlabs/facter — pull request #387 by jeffmccune (2013-01-29 07:32:33+00:00)
Title: (#7559) Refactor the way ec2 facts are defined

Without this patch the EC2 facts use a number of methods to determine if
they're running on openstack, Amazon EC2, eucalyptus, and others. These
methods have proved to be lacking robustness.

This is a problem because Facter fails to define facts even when a
Metadata server is available.

This patch addresses the problem by changing the behavior of deciding
when to define the dynamic EC2 facts. The
Facter::Util::EC2.with_metadata_server method is used with a 50ms
timeout over three consecutive retries.

With this patch applied the EC2 metadata and userdata facts should be
defined whenever the node is has a virtual fact value of "xenu" and there
is a metadata data server available at http://169.254.169.254

This patch also removes the `userdata` and `metadata` methods that were
previous defined as instance methods on the base Object class.