Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env ruby
- require 'hiera'
- # <anything> : issue a token for each nova flavor list request
- # creds : use user/pass creds and do not issue a token
- args=ARGV[0]
- puts "Got args #{args}"
- hiera = Hiera.new(:config => '/etc/puppet/hiera.yaml')
- pass = hiera.lookup('nova', [], {})['user_password']
- mip = hiera.lookup('internal_address', [], {})
- kurl = "http://#{mip}:5000/v2.0"
- creds_pass = "--os-auth-url=#{kurl} --os-tenant-name=services --os-username=nova --os-password=#{pass}"
- puts "Got auth endpoint URL #{kurl}"
- request = `/usr/bin/keystone #{creds_pass} endpoint-get --service compute`
- nurl = /publicURL\s+\|\s+(\S+)/.match(request)[1]
- puts "Got compute endpoint URL #{nurl}"
- (1..10).each do |i|
- puts "Iteration #{i}"
- `echo 'flush_all 2' | nc #{mip} 11211`
- puts "Flush memcached at #{mip}:11211"
- if args != 'creds' then
- request = `/usr/bin/keystone #{creds_pass} token-get`
- token = /id\s+\|\s+(\S+)/.match(request)[1]
- puts "Got token #{token}"
- creds_token = "--os-token=#{token}"
- end
- # Tokens don't work via nova CLI
- #flavors = `/usr/bin/nova #{creds_token} --os-endpoint=#{nurl} flavor-list`
- flavors = `curl -s -H "X-Auth-Token:#{token}" #{nurl}/flavors | python -m json.tool 2>&1` unless args == 'creds'
- flavors = `/usr/bin/nova #{creds_pass} flavor-list 2>&1` if args == 'creds'
- exit 1 if flavors =~ /Unauthorized|No JSON/
- puts "Got flavors list\n#{flavors}"
- end
- puts "All done"
- exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement