|
| 1 | +# lib/nova_plugins/hypervisor-hyper |
| 2 | +# Configure the Hyper hypervisor |
| 3 | + |
| 4 | +# Enable with: |
| 5 | +# |
| 6 | +# VIRT_DRIVER=hyper |
| 7 | + |
| 8 | +# Dependencies: |
| 9 | +# |
| 10 | +# - ``functions`` file |
| 11 | +# - ``nova`` and ``glance`` configurations |
| 12 | + |
| 13 | +# install_nova_hypervisor - install any external requirements |
| 14 | +# configure_nova_hypervisor - make configuration changes, including those to other services |
| 15 | +# start_nova_hypervisor - start any external services |
| 16 | +# stop_nova_hypervisor - stop any external services |
| 17 | +# cleanup_nova_hypervisor - remove transient data and cache |
| 18 | + |
| 19 | +# Save trace setting |
| 20 | +MY_XTRACE=$(set +o | grep xtrace) |
| 21 | +set +o xtrace |
| 22 | + |
| 23 | + |
| 24 | +# Defaults |
| 25 | +# -------- |
| 26 | + |
| 27 | +# Set up default repos |
| 28 | +NOVA_HYPER_REPO=${NOVA_HYPER_REPO:-${GIT_BASE}/tbronchain/nova-hyper.git} #todo: change |
| 29 | +NOVA_HYPER_BRANCH=${NOVA_HYPER_BRANCH:-develop} #todo: change |
| 30 | + |
| 31 | +# Set up default directories |
| 32 | +HYPER_DIR=$DEST/nova-hyper |
| 33 | + |
| 34 | + |
| 35 | +HYPER_UNIX_SOCKET=/var/run/hyper.sock |
| 36 | +HYPER_PID_FILE=/var/run/hyper.pid |
| 37 | +HYPER_REGISTRY_PORT=${HYPER_REGISTRY_PORT:-5042} |
| 38 | + |
| 39 | +DOCKER_IMAGE_NAME=${DOCKER_IMAGE_NAME:-${DEFAULT_IMAGE_NAME}} |
| 40 | +HYPER_REGISTRY_IMAGE=${HYPER_REGISTRY_IMAGE:-registry} |
| 41 | +HYPER_REGISTRY_IMAGE_NAME=registry |
| 42 | + |
| 43 | +#HYPER_APT_REPO=${HYPER_APT_REPO:-https://apt.dockerproject.org/repo} |
| 44 | + |
| 45 | + |
| 46 | +# Entry Points |
| 47 | +# ------------ |
| 48 | + |
| 49 | +# clean_nova_hypervisor - Clean up an installation |
| 50 | +function cleanup_nova_hypervisor { |
| 51 | + stop_service hyper |
| 52 | + |
| 53 | + # Clean out work area |
| 54 | + sudo rm -rf /var/lib/hyper |
| 55 | + |
| 56 | + # remove docker bits from nova |
| 57 | + rm $NOVA_DIR/nova/virt/hyper |
| 58 | + rm $NOVA_DIR/etc/nova/rootwrap.d/hyper.filters |
| 59 | +} |
| 60 | + |
| 61 | +# configure_nova_hypervisor - Set config files, create data dirs, etc |
| 62 | +function configure_nova_hypervisor { |
| 63 | + iniset $NOVA_CONF DEFAULT compute_driver novahyper.virt.hyper.driver.HyperDriver |
| 64 | + iniset $GLANCE_API_CONF DEFAULT container_formats ami,ari,aki,bare,ovf,docker |
| 65 | +} |
| 66 | + |
| 67 | +# is_docker_running - Return 0 (true) if Docker is running, otherwise 1 |
| 68 | +function is_docker_running { |
| 69 | + local hyper_pid |
| 70 | + if [ -f "$HYPER_PID_FILE" ]; then |
| 71 | + hyper_pid=$(cat "$HYPER_PID_FILE") |
| 72 | + fi |
| 73 | + if [[ -z "$hyper_pid" ]] || ! ps -p "$hyper_pid" | grep [h]yper; then |
| 74 | + return 1 |
| 75 | + fi |
| 76 | + return 0 |
| 77 | +} |
| 78 | + |
| 79 | +# install_nova_hypervisor() - Install external components |
| 80 | +function install_nova_hypervisor { |
| 81 | + hv_type=$(grep -Rni hyper $NOVA_DIR/nova/compute/hv_type.py | wc -l) |
| 82 | + if [ $hv_type -eq 0 ]; then |
| 83 | + patch $NOVA_DIR/nova/compute/hv_type.py -i $HYPER_DIR/nova/compute/hv_type.patch |
| 84 | + fi |
| 85 | + setup_develop $HYPER_DIR |
| 86 | + # TODO : move into configure_nova_hypervisor_rootwrap if |
| 87 | + # https://review.openstack.org/#/c/84839/ is merged |
| 88 | +} |
| 89 | + |
| 90 | +# start_nova_hypervisor - Start any required external services |
| 91 | +function start_nova_hypervisor { |
| 92 | + #todo |
| 93 | + # Make sure Hyper is installed |
| 94 | + #if ! ( is_package_installed docker || is_package_installed docker-io || is_package_installed docker-engine ) ; then |
| 95 | + # die $LINENO "Docker is not installed. Please run tools/docker/install_docker.sh" |
| 96 | + #fi |
| 97 | + #if ! (is_docker_running); then |
| 98 | + # die $LINENO "Docker not running" |
| 99 | + #fi |
| 100 | + |
| 101 | + # Gather some information |
| 102 | + hyper version |
| 103 | + hyper info |
| 104 | + |
| 105 | + ## push the rootwrap |
| 106 | + #sudo cp $HYPER_DIR/etc/nova/rootwrap.d/hyper.filters /etc/nova/rootwrap.d/hyper.filters |
| 107 | + |
| 108 | + echo "Checking default image for docker..." |
| 109 | + if ! (glance image-show "$DEFAULT_IMAGE_NAME"); then |
| 110 | + echo "Pulling $DOCKER_IMAGE_NAME..." |
| 111 | + hyper pull $DOCKER_IMAGE_NAME |
| 112 | + echo "Saving $DOCKER_IMAGE_NAME to glance..." |
| 113 | + TOKEN=$(openstack token issue -c id -f value) |
| 114 | + docker save $DOCKER_IMAGE_NAME | openstack --os-token $TOKEN --os-url $GLANCE_SERVICE_PROTOCOL://$GLANCE_HOSTPORT image create $DEFAULT_IMAGE_NAME --public --container-format docker --disk-format raw |
| 115 | + fi |
| 116 | +} |
| 117 | + |
| 118 | +# stop_nova_hypervisor - Stop any external services |
| 119 | +function stop_nova_hypervisor { |
| 120 | + echo "stop nova pods" |
| 121 | + # todo |
| 122 | + # Stop the docker registry container |
| 123 | + #docker stop $DOCKER_REGISTRY_IMAGE_NAME |
| 124 | + #docker rm $DOCKER_REGISTRY_IMAGE_NAME |
| 125 | +} |
| 126 | + |
| 127 | +# Restore xtrace |
| 128 | +$MY_XTRACE |
| 129 | + |
| 130 | +# Local variables: |
| 131 | +# mode: shell-script |
| 132 | +# End: |
0 commit comments