Advertisement
Guest User

Untitled

a guest
Apr 12th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.65 KB | None | 0 0
  1. #Create RC file
  2. create-rc() {
  3. [[ -f ~/admin-openrc.sh ]] && rm ~/admin-openrc.sh
  4. export NO_WRITE_RC=false
  5. #Clear Openstack variables
  6. for var in $(set -o posix; set|/bin/grep -oE '^OS_[^=]+');do unset ${var};done
  7. #Assuming Keystone API 3
  8. unset OS_TENANT_ID
  9. unset OS_TENANT_NAME
  10. export OS_INTERFACE=public
  11. export OS_IDENTITY_API_VERSION=3
  12. printf "\e[2GFetching IP for Keystone\n"
  13. [[ $(juju config keystone vip) ]] && export OS_AUTH_URL="http://$(juju config keystone vip):5000/v3" || export OS_AUTH_URL="http://$(juju run --unit keystone/0 'unit-get public-address'):5000/v3"
  14. export OS_PROJECT_NAME=$(juju 2>/dev/null config keystone admin-user)
  15. export OS_USER_DOMAIN_NAME="$(juju 2>/dev/null config keystone admin-user)_domain"
  16. printf "\e[2GFetching default admin-user name from Juju\n"
  17. export OS_USERNAME=$(juju 2>/dev/null config keystone admin-user)
  18. printf "\e[2GFetching password for ${OS_USERNAME} from Juju\n"
  19. export OS_PASSWORD=$(juju 2>/dev/null config keystone admin-password)
  20. printf "\e[2GFetching Openstack Region name from Juju\n"
  21. export OS_REGION_NAME=$(juju 2>/dev/null config keystone region)
  22. printf "\e[2GFetching Domain ID for ${OS_USERNAME}_domain from Juju\n"
  23. export OS_PROJECT_DOMAIN_ID=$(openstack domain list --os-project-domain-name ${OS_USER_DOMAIN_NAME} --os-username ${OS_USERNAME} --os-password=${OS_PASSWORD}|awk '/'${OS_USER_DOMAIN_NAME}'/{print $2}')
  24. printf "\e[2GFetching Project ID for ${OS_USERNAME} project from Juju\n"
  25. export OS_PROJECT_ID=$(openstack project list --long --os-project-domain-name ${OS_USER_DOMAIN_NAME} --os-username ${OS_USERNAME} --os-password=${OS_PASSWORD}|awk '/'${OS_PROJECT_DOMAIN_ID}'/&&/'${OS_USERNAME}'/{print $2}')
  26.  
  27. #Check to make sure we have populated variables
  28. printf "\e[2GValidating that all OS_ variables are present\n"
  29. for var in $(set -o posix; set|/bin/grep -oE '^OS_[^=]+');do
  30. if [[ -z $(eval "echo \$$var") ]];then
  31. export NO_WRITE_RC=true
  32. printf "\e[4GCannot determine value for $var\n"
  33. fi
  34. done
  35.  
  36. #Write the RC File
  37. if [[ ${NO_WRITE_RC} = false ]];then
  38. printf "\e[2GCreating Openstack RC file...\n"
  39. cat <<EOF|tee 1>/dev/null ~/admin-openrc.sh
  40. for var in \$(set -o posix; set|/bin/grep -oE '"'"'^OS_[^=]+'"'"');do unset ${var};done
  41. EOF
  42. { set|/bin/grep -oE '^OS_[^$]+'|sed 's/^.*$/export &/g;1s/^/#!\/usr\/bin\/env bash\n/;/HYPERVISORS/d'|tee -a 1>/dev/null ~/admin-openrc.sh; }
  43. [[ $? -eq 0 && -f ~/admin-openrc.sh ]] && { printf "\e[4GSourcing Openstack RC file...\n";source ~/admin-openrc.sh; }
  44. RC_FILE_SOURCED=true
  45. else
  46. printf "\e[2GCould not write the RC file. Please ensure you are both the user and on the system where Juju deployed Openstack from.\n\n"
  47. RC_FILE_SOURCED=false
  48. return 1
  49. fi
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement