Advertisement
Guest User

123

a guest
May 4th, 2015
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.45 KB | None | 0 0
  1. #!/usr/bin/env ruby
  2. require 'hiera'
  3.  
  4. # <anything> : issue a token for each nova flavor list request
  5. # creds : use user/pass creds and do not issue a token
  6. args=ARGV[0]
  7. puts "Got args #{args}"
  8.  
  9. hiera = Hiera.new(:config => '/etc/puppet/hiera.yaml')
  10. pass = hiera.lookup('nova', [], {})['user_password']
  11. mip = hiera.lookup('internal_address', [], {})
  12. kurl = "http://#{mip}:5000/v2.0"
  13. creds_pass = "--os-auth-url=#{kurl} --os-tenant-name=services --os-username=nova --os-password=#{pass}"
  14. puts "Got auth endpoint URL #{kurl}"
  15.  
  16. request = `/usr/bin/keystone #{creds_pass} endpoint-get --service compute`
  17. nurl = /publicURL\s+\|\s+(\S+)/.match(request)[1]
  18. puts "Got compute endpoint URL #{nurl}"
  19.  
  20. (1..10).each do |i|
  21. puts "Iteration #{i}"
  22. `echo 'flush_all 2' | nc #{mip} 11211`
  23. puts "Flush memcached at #{mip}:11211"
  24.  
  25. if args != 'creds' then
  26. request = `/usr/bin/keystone #{creds_pass} token-get`
  27. token = /id\s+\|\s+(\S+)/.match(request)[1]
  28. puts "Got token #{token}"
  29. creds_token = "--os-token=#{token}"
  30. end
  31.  
  32. # Tokens don't work via nova CLI
  33. #flavors = `/usr/bin/nova #{creds_token} --os-endpoint=#{nurl} flavor-list`
  34. flavors = `curl -s -H "X-Auth-Token:#{token}" #{nurl}/flavors | python -m json.tool 2>&1` unless args == 'creds'
  35. flavors = `/usr/bin/nova #{creds_pass} flavor-list 2>&1` if args == 'creds'
  36.  
  37. exit 1 if flavors =~ /Unauthorized|No JSON/
  38. puts "Got flavors list\n#{flavors}"
  39. end
  40. puts "All done"
  41. exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement