Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- write-admin-file() {
- [[ -f ~/admin-openrc.sh ]] && rm ~/admin-openrc.sh
- export NO_WRITE_RC=false
- #Clear Openstack variables
- for var in $(set -o posix; set|/bin/grep -oE '^OS_[^=]+');do unset ${var};done
- #Assuming Keystone API 3
- unset OS_TENANT_ID
- unset OS_TENANT_NAME
- export OS_INTERFACE=public
- export OS_IDENTITY_API_VERSION=3
- printf "\e[2GFetching IP for Keystone\n"
- [[ $(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"
- export OS_PROJECT_NAME=$(juju 2>/dev/null config keystone admin-user)
- export OS_USER_DOMAIN_NAME="$(juju 2>/dev/null config keystone admin-user)_domain"
- printf "\e[2GFetching default admin-user name from Juju\n"
- export OS_USERNAME=$(juju 2>/dev/null config keystone admin-user)
- printf "\e[2GFetching password for ${OS_USERNAME} from Juju\n"
- export OS_PASSWORD=$(juju 2>/dev/null config keystone admin-password)
- printf "\e[2GFetching Openstack Region name from Juju\n"
- export OS_REGION_NAME=$(juju 2>/dev/null config keystone region)
- printf "\e[2GFetching Domain ID for ${OS_USERNAME}_domain from Juju\n"
- 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}')
- printf "\e[2GFetching Project ID for ${OS_USERNAME} project from Juju\n"
- 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}')
- #Check to make sure we have populated variables
- printf "\e[2GValidating that all OS_ variables are present\n"
- for var in $(set -o posix; set|/bin/grep -oE '^OS_[^=]+');do
- if [[ -z $(eval "echo \$$var") ]];then
- export NO_WRITE_RC=true
- printf "\e[4GCannot determine value for $var\n"
- fi
- done
- #Write the RC File
- if [[ ${NO_WRITE_RC} = false ]];then
- printf "\e[2GCreating Openstack RC file...\n"
- { set|/bin/grep -oE '^OS_[^$]+'|sed 's/^.*$/export &/g;1s/^/#!\/usr\/bin\/env bash\n/;/HYPERVISORS/d'|tee 1>/dev/null ~/admin-openrc.sh; }
- [[ $? -eq 0 && -f ~/admin-openrc.sh ]] && { printf "\e[4GSourcing Openstack RC file...\n";source ~/admin-openrc.sh; }
- RC_FILE_SOURCED=true
- else
- 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"
- RC_FILE_SOURCED=false
- return 1
- fi
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement