Skip to content

Instantly share code, notes, and snippets.

@madAndroid
Created July 1, 2013 08:38
Show Gist options
  • Save madAndroid/5899292 to your computer and use it in GitHub Desktop.
Save madAndroid/5899292 to your computer and use it in GitHub Desktop.
diff --git a/scalefactory.com/modules/sf_nodeless/lib/facter/sf_nodeless.rb b/scalefactory.com/modules/sf_nodeless/lib/facter/sf_nodeless.rb
index dbbbe3b..45842de 100644
--- a/scalefactory.com/modules/sf_nodeless/lib/facter/sf_nodeless.rb
+++ b/scalefactory.com/modules/sf_nodeless/lib/facter/sf_nodeless.rb
@@ -40,7 +40,8 @@ if ec2_userdata
end
#################################################################################
-# Cloudstack fact finding
+# JSON http response fact finding
+# - used for Cloudstack, as well as generic http ENC, on port 8844
if Facter.value('is_virtual') == 'true'
@@ -48,6 +49,8 @@ if Facter.value('is_virtual') == 'true'
virtual_router = nil
+ ## Cloudstack user-data/meta-data is kept within the virtual_router,
+ ## it's the same server that assigns dhcp addresses:
Dir.glob("/var/lib/{dhclient,dhcp,dhcp3}/dhclient*.leases").each do |lease|
next unless File.size( lease )
File.open( lease ).each do |line|
@@ -59,7 +62,19 @@ if Facter.value('is_virtual') == 'true'
break unless virtual_router.nil?
end
- uri = URI.parse( "http://#{virtual_router}/latest/user-data" )
+ ## use cloudstack virtual_router, if found, otherwise fall back to
+ ## enc known hostname, at port 8844
+ if ! virtual_router.nil?
+ uri = URI.parse( "http://#{virtual_router}/latest/user-data" )
+ else
+ if File.exists?( '/usr/lib/sf_nodeless/sf_nodesless_url' )
+ url = File.open('/usr/lib/sf_nodeless/sf_nodesless_url', 'rb') { |f| f.read }
+ uri = URI.parse( url )
+ else
+ uri = URI.parse( "http://enc:8844/latest/user-data" )
+ end
+ end
+
http = Net::HTTP::new( uri.host, uri.port )
http.open_timeout = 3 # time out connects after 3s
request = Net::HTTP::Get.new( uri.request_uri )
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment