1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238
|
#!/bin/sh
set -e
#set -x
ME=$(basename $0)
. /usr/bin/oci-cluster-upgrade-funcs
usage () {
echo "Usage: $0 --partial <CLUSTER_NAME> <FROM_OS_RELEASE> <TO_OS_RELEASE>"
exit 1
}
PARTIAL_UPGRADE=no
if [ "${1}" = "--partial" ] ; then
PARTIAL_UPGRADE=yes
shift
fi
if [ $# != 3 ] ; then
usage
fi
ALL_SERVICES_CTRL="aodh-api aodh-evaluator aodh-expirer aodh-listener aodh-notifier barbican-api barbican-keystone-listener barbican-worker ceilometer-agent-central ceilometer-agent-notification ceilometer-polling cinder-api cinder-backup cinder-scheduler cinder-volume cloudkitty-api cloudkitty-processor glance-api gnocchi-api gnocchi-metricd gnocchi-statsd heat-api-cfn heat-api heat-engine keystone magnum-api magnum-conductor neutron-api neutron-dhcp-agent neutron-l3-agent neutron-metadata-agent neutron-metering-agent neutron-openvswitch-agent neutron-rpc-server nova-api nova-api-metadata nova-compute nova-conductor nova-novncproxy nova-scheduler octavia-api octavia-health-manager octavia-housekeeping octavia-worker panko-api placement-api neutron-api neutron-rpc-server"
ALL_SERVICES_VOL="cinder-backup cinder-volume"
ALL_SERVICES_NET="neutron-dhcp-agent neutron-l3-agent neutron-metadata-agent neutron-metering-agent neutron-openvswitch-agent"
ALL_SERVICES_COMP="ceilometer-agent-compute cinder-backup cinder-volume neutron-dhcp-agent neutron-l3-agent neutron-metadata-agent neutron-metering-agent neutron-openvswitch-agent nova-compute"
ALL_SERVICES_MSG="gnocchi-api gnocchi-metricd gnocchi-statsd cloudkitty-api cloudkitty-processor"
CLUSTER_NAME=${1}
FROM_OS_RELEASE=${2}
TO_OS_RELEASE=${3}
CUR_REL=$(lsb_release -c -s)
FROM_DEB_RELEASE=${CUR_REL}
TO_DEB_RELEASE=${CUR_REL}
wrong_to_openstack_release () {
echo "Cannot upgrade from ${FROM_OS_RELEASE} to ${TO_OS_RELEASE}"
exit 1
}
case "${FROM_OS_RELEASE}" in
"victoria")
if [ "${TO_OS_RELEASE}" != "wallaby" ] ; then wrong_to_openstack_release ; fi
;;
"wallaby")
if [ "${TO_OS_RELEASE}" != "xena" ] ; then wrong_to_openstack_release ; fi
;;
"xena")
if [ "${TO_OS_RELEASE}" != "yoga" ] ; then wrong_to_openstack_release ; fi
;;
"yoga")
if [ "${TO_OS_RELEASE}" != "zed" ] ; then wrong_to_openstack_release ; fi
;;
"zed")
if [ "${TO_OS_RELEASE}" != "antelope" ] ; then wrong_to_openstack_release ; fi
;;
"antelope")
if [ "${TO_OS_RELEASE}" != "bobcat" ] && [ "${TO_OS_RELEASE}" != "caracal" ] ; then wrong_to_openstack_release ; fi
;;
"bobcat")
if [ "${TO_OS_RELEASE}" != "caracal" ] ; then wrong_to_openstack_release ; fi
;;
"caracal")
if [ "${TO_OS_RELEASE}" != "dalmatian" ] && [ "${TO_OS_RELEASE}" != "epoxy" ] ; then wrong_to_openstack_release ; fi
;;
"dalmatian")
if [ "${TO_OS_RELEASE}" != "epoxy" ] ; then wrong_to_openstack_release ; fi
;;
"epoxy")
if [ "${TO_OS_RELEASE}" != "flamingo" ] && [ "${TO_OS_RELEASE}" != "gazpacho" ] ; then wrong_to_openstack_release ; fi
;;
"flamingo")
if [ "${TO_OS_RELEASE}" != "gazpacho" ] ; then wrong_to_openstack_release ; fi
;;
"gazpacho")
echo "Upgrading from Gazpacho is currently not supported"
exit 1
;;
*)
echo "Upgrading from the OpenStack release ${FROM_OS_RELEASE} is currently not supported (or not recognized)."
exit 1
;;
esac
########################
### KEYSTONE UPGRADE ###
########################
stop_keystone_services () {
local HOST HOST_IP HOST_NAME
HOST=${1}
HOST_IP=$(echo ${HOST} | cut -d, -f1)
HOST_NAME=$(echo ${HOST} | cut -d, -f2)
green_echo "-> Stopping keystone on ${HOST_NAME}"
if [ "${FROM_OS_RELEASE}" = "rocky" ] ; then
# If we're with Train, Keystone is still running on Apache, so we disable it there and restart apache.
sshi root@${HOST_IP} "sed -i \"s/Listen ${HOST_IP}:5000//\" /etc/apache2/ports.conf"
sshi root@${HOST_IP} "sed -i \"s/Listen ${HOST_IP}:35357//\" /etc/apache2/ports.conf"
sshi root@${HOST_IP} "a2dissite 10-keystone_wsgi_admin.conf ; a2dissite 10-keystone_wsgi_main.conf"
sshi root@${HOST_IP} "systemctl restart apache2"
sshi root@${HOST_IP} "HOSTNAME=\$(hostname --fqdn) ; if [ -e /etc/keystone/ssl/private/\${HOSTNAME}.key ] ; then mv /etc/keystone/ssl/private/\${HOSTNAME}.key /etc/keystone/ssl/private/\${HOSTNAME}.pem ; fi"
fi
sshi root@${HOST_IP} "systemctl stop keystone || true ; systemctl disable keystone || true ; systemctl mask keystone || true"
}
upgrade_keystone () {
local HOST HOST_IP HOST_NAME
HOST=${1}
HOST_IP=$(echo ${HOST} | cut -d, -f1)
HOST_NAME=$(echo ${HOST} | cut -d, -f2)
green_echo "-> Upgrading keystone on ${HOST_NAME}"
sshi root@${HOST_IP} "DEBIAN_FRONTEND=noninteractive apt-get install -y -o Dpkg::Options::=--force-confold keystone"
}
start_keystone_services () {
local HOST HOST_IP HOST_NAME
HOST=${1}
HOST_IP=$(echo ${HOST} | cut -d, -f1)
HOST_NAME=$(echo ${HOST} | cut -d, -f2)
green_echo "-> Starting keystone on ${HOST_NAME}"
sshi root@${HOST_IP} "systemctl unmask keystone ; systemctl enable keystone ; systemctl start keystone"
}
drain_keystone_backend () {
local HOST HOST_IP HOST_NAME
HOST=${1}
HOST_IP=$(echo ${HOST} | cut -d, -f1)
HOST_NAME=$(echo ${HOST} | cut -d, -f2)
green_echo "-> Draining ${HOST_NAME} from keystonepubbe backend"
sshi root@${ONE_CTRL_IP} "hapc drain-server --backend keystonepubbe --server ${HOST_NAME} --verbose --wait"
}
enable_keystone_backend () {
local HOST HOST_IP HOST_NAME
HOST=${1}
HOST_IP=$(echo ${HOST} | cut -d, -f1)
HOST_NAME=$(echo ${HOST} | cut -d, -f2)
green_echo "-> Emabling Draining ${HOST_NAME} in keystonepubbe backend"
sshi root@${ONE_CTRL_IP} "hapc enable-server --backend keystonepubbe --server ${HOST_NAME} --verbose"
}
cluster_upgrade_keystone () {
green_echo "===> Upgrading Keystone"
# Upgrade frist controller
green_echo "-> Draining ${ONE_CTRL_HOST} keystone backend"
sshi root@${ONE_CTRL_IP} "hapc drain-server --backend keystonepubbe --server ${ONE_CTRL_HOST} --verbose --wait"
# This fails for keystone, so we wont stop it, drain is enough...
# green_echo "-> Stopping keystone on ${ONE_CTRL_HOST}"
# sshi root@${ONE_CTRL_IP} "systemctl stop keystone || true ; systemctl disable keystone || true ; systemctl mask keystone || true"
green_echo "-> Upgrading keystone on ${ONE_CTRL_HOST}"
sshi root@${ONE_CTRL_IP} "DEBIAN_FRONTEND=noninteractive apt-get install -y -o Dpkg::Options::=--force-confold keystone"
# This fails for keystone, so we wont stop it, drain is enough...
# green_echo "-> Starting keystone on ${ONE_CTRL_HOST}"
# sshi root@${ONE_CTRL_IP} "systemctl unmask keystone ; systemctl enable keystone ; systemctl start keystone"
sleep 2
# Do the db_sync
green_echo "===> Running keystone-manage db_sync"
sshi root@${ONE_CTRL_IP} "keystone-manage db_sync"
green_echo "===> Restart Keystone on ${ONE_CTRL_HOST}"
sshi root@${ONE_CTRL_IP} "systemctl restart keystone"
green_echo "-> Activating ${ONE_CTRL_HOST} keystone backend"
sshi root@${ONE_CTRL_IP} "hapc enable-server --backend keystonepubbe --server ${ONE_CTRL_HOST} --verbose"
# Upgrade all other controllers
green_echo "-> Draining all other Keystone backends"
iterate_on_hosts "${OTHER_CTRL}" drain_keystone_backend
# Same here.
# green_echo "-> Stopping Keystone on all other controllers"
# iterate_on_hosts "${OTHER_CTRL}" stop_keystone_services
green_echo "-> Upgrading Keystone on all controllers"
iterate_on_hosts "${OTHER_CTRL}" upgrade_keystone
# And therefore here.
# green_echo "-> Starting Keystone on all other controllers"
# iterate_on_hosts "${OTHER_CTRL}" start_keystone_services
sleep 2
green_echo "-> Activating all other controllers backend"
iterate_on_hosts "${OTHER_CTRL}" enable_keystone_backend
}
#######################
### NEUTRON UPGRADE ###
#######################
upgrade_ovs () {
local HOST HOST_IP HOST_NAME
HOST=${1}
HOST_IP=$(echo ${HOST} | cut -d, -f1)
HOST_NAME=$(echo ${HOST} | cut -d, -f2)
green_echo "-> Upgrading OVS on ${HOST_NAME}"
# Because we're rebooting just after this, let's install latest kernel at the same time...
if sshi root@${HOST_IP} "dpkg-query -W openvswitch-common" ; then
CUR_OVS_VERSION=$(sshi root@${HOST_IP} "dpkg-query -W openvswitch-common | awk '{print \$2}'" 2>/dev/null)
NEXT_OVS_VERSION=$(sshi root@${HOST_IP} "apt-cache policy openvswitch-common | grep Candidate: | awk '{print \$2}'" 2>/dev/null)
if dpkg --compare-versions ${NEXT_OVS_VERSION} gt ${CUR_OVS_VERSION} ; then
sshi root@${HOST_IP} "DEBIAN_FRONTEND=noninteractive apt-get install -y -o Dpkg::Options::=--force-confold openvswitch-common openvswitch-switch python3-openvswitch linux-image-amd64"
green_echo "-> Rebooting ${HOST_NAME} after OVS upgrade"
sshi root@${HOST_IP} "reboot" || true
sleep 5
wait_for_ssh ${HOST_IP}
green_echo "-> Waiting 10 seconds for network to settle on ${HOST_NAME} after OVS upgrade"
sleep 10
green_echo "-> Restarting neutron-openvswitch-agent on ${HOST_NAME}"
sshi root@${HOST_IP} "if [ -e /etc/init.d/neutron-openvswitch-agent ] ; then /etc/init.d/neutron-openvswitch-agent stop ; sleep 1 ; /etc/init.d/neutron-openvswitch-agent start ; fi"
green_echo "-> Waiting 20 seconds for OVS agent to settle on ${HOST_NAME}"
sleep 10
green_echo "-> Restarting neutron-l3-agent on ${HOST_NAME}"
sshi root@${HOST_IP} "if [ -e /etc/init.d/neutron-l3-agent ] ; then /etc/init.d/neutron-l3-agent stop ; sleep 1 ; /etc/init.d/neutron-l3-agent start ; fi"
fi
fi
}
stop_neutron_server () {
local HOST HOST_IP HOST_NAME
HOST=${1}
HOST_IP=$(echo ${HOST} | cut -d, -f1)
HOST_NAME=$(echo ${HOST} | cut -d, -f2)
green_echo "-> Stopping Neutron on ${HOST_NAME}"
sshi root@${HOST_IP} "systemctl stop neutron-api ; systemctl stop neutron-rpc-server ; systemctl disable neutron-api ; systemctl disable neutron-rpc-server ; systemctl mask neutron-api ; systemctl mask neutron-rpc-server"
}
start_neutron_server () {
local HOST HOST_IP HOST_NAME
HOST=${1}
HOST_IP=$(echo ${HOST} | cut -d, -f1)
HOST_NAME=$(echo ${HOST} | cut -d, -f2)
green_echo "-> Starting Neutron on ${HOST_NAME}"
sshi root@${HOST_IP} "systemctl unmask neutron-api ; systemctl unmask neutron-rpc-server ; systemctl enable neutron-api ; systemctl enable neutron-rpc-server ; systemctl start neutron-api ; systemctl start neutron-rpc-server"
}
upgrade_neutron_server () {
local HOST HOST_IP HOST_NAME
HOST=${1}
HOST_IP=$(echo ${HOST} | cut -d, -f1)
HOST_NAME=$(echo ${HOST} | cut -d, -f2)
green_echo "-> Upgrade Neutron on ${HOST_NAME}"
# Fix [nova]username is defined twice in neutron.conf
sshi root@${HOST_IP} "sed -i 's/^username = nova//' /etc/neutron/neutron.conf"
sshi root@${HOST_IP} "DEBIAN_FRONTEND=noninteractive apt-get install -y -o Dpkg::Options::=--force-confold neutron-common python3-neutron neutron-api"
green_echo "-> Upgrade python3-neutron-fwaas on ${HOST_NAME}"
sshi root@${HOST_IP} "if dpkg-query -W python3-neutron-fwaas 2>&1 ; then DEBIAN_FRONTEND=noninteractive apt-get install -y -o Dpkg::Options::=--force-confold neutron-common python3-neutron-fwaas || true ; fi"
green_echo "-> Upgrading python3-neutron-dynamic-routing if exists on ${HOST_NAME}"
sshi root@${HOST_IP} "if dpkg-query -W python3-neutron-dynamic-routing 2>/dev/null 1>/dev/null ; then DEBIAN_FRONTEND=noninteractive apt-get install -y -o Dpkg::Options::=--force-confold python3-neutron-dynamic-routing ; fi"
}
upgrade_network_node () {
local HOST HOST_IP HOST_NAME
HOST=${1}
HOST_IP=$(echo ${HOST} | cut -d, -f1)
HOST_NAME=$(echo ${HOST} | cut -d, -f2)
green_echo "===> Upgrading neutron on ${HOST_NAME}"
# Fix [nova]username is defined twice in neutron.conf
# sshi root@${HOST_IP} "sed -i 's/^username = nova//' /etc/neutron/neutron.conf"
rabbitmq_msg_num monitoring ${RMQ_MONITORING_PASS} ${ONE_CTRL_IP}
while [ "${RET}" -gt 10000 ] ; do
yellow_echo "-> RammitMQ number of messages ($RET) greater than 10000: waiting 60 seconds."
sleep 60
rabbitmq_msg_num monitoring ${RMQ_MONITORING_PASS} ${ONE_CTRL_IP}
done
yellow_echo "-> Upgrading python3-neutron."
sshi root@${HOST_IP} "DEBIAN_FRONTEND=noninteractive apt-get install -y -o Dpkg::Options::=--force-confold python3-neutron"
green_echo "-> Upgrading python3-neutron-dynamic-routing if exists on ${HOST_NAME}"
sshi root@${HOST_IP} "if dpkg-query -W python3-neutron-dynamic-routing 2>/dev/null 1>/dev/null ; then DEBIAN_FRONTEND=noninteractive apt-get install -y -o Dpkg::Options::=--force-confold python3-neutron-dynamic-routing ; fi"
yellow_echo "-> Waiting 30 seconds after upgrading a Neutron daemon."
sleep 30
}
upgrade_compute_neutron_agents () {
local HOST HOST_IP HOST_NAME
HOST=${1}
HOST_IP=$(echo ${HOST} | cut -d, -f1)
HOST_NAME=$(echo ${HOST} | cut -d, -f2)
green_echo "-> Upgrading Neutron on ${HOST_NAME}"
# Fix [nova]username is defined twice in neutron.conf
# sshi root@${HOST_IP} "sed -i 's/^username = nova//' /etc/neutron/neutron.conf"
rabbitmq_msg_num monitoring ${RMQ_MONITORING_PASS} ${ONE_CTRL_IP}
while [ "${RET}" -gt 10000 ] ; do
yellow_echo "-> RammitMQ number of messages ($RET) greater than 10000: waiting 60 seconds."
sleep 60
rabbitmq_msg_num monitoring ${RMQ_MONITORING_PASS} ${ONE_CTRL_IP}
done
yellow_echo "-> Upgrading python3-neutron."
sshi root@${HOST_IP} "DEBIAN_FRONTEND=noninteractive apt-get install -y -o Dpkg::Options::=--force-confold python3-neutron"
green_echo "-> Upgrading python3-neutron-dynamic-routing if exists on ${HOST_NAME}"
sshi root@${HOST_IP} "if dpkg-query -W python3-neutron-dynamic-routing 2>/dev/null 1>/dev/null ; then DEBIAN_FRONTEND=noninteractive apt-get install -y -o Dpkg::Options::=--force-confold neutron-common python3-neutron neutron-l3-agent neutron-metadata-agent neutron-metering-agent neutron-openvswitch-agent python3-neutron-dynamic-routing ; else DEBIAN_FRONTEND=noninteractive apt-get install -y -o Dpkg::Options::=--force-confold python3-neutron-dynamic-routing ; fi"
yellow_echo "-> Waiting 30 seconds after upgrading a Neutron daemon."
sleep 30
}
upgrade_network_agents_on_controller () {
local HOST HOST_IP HOST_NAME
HOST=${1}
HOST_IP=$(echo ${HOST} | cut -d, -f1)
HOST_NAME=$(echo ${HOST} | cut -d, -f2)
green_echo "-> Upgrading Neutron on ${HOST_NAME}"
# Fix [nova]username is defined twice in neutron.conf
sshi root@${HOST_IP} "sed -i 's/^username = nova//' /etc/neutron/neutron.conf"
sshi root@${HOST_IP} "DEBIAN_FRONTEND=noninteractive apt-get install -y -o Dpkg::Options::=--force-confold neutron-common python3-neutron neutron-dhcp-agent neutron-l3-agent neutron-metadata-agent neutron-metering-agent neutron-openvswitch-agent"
green_echo "-> Upgrading python3-neutron-dynamic-routing if exists on ${ONE_CTRL_HOST}"
sshi root@${HOST_IP} "if dpkg-query -W python3-neutron-dynamic-routing 2>/dev/null 1>/dev/null ; then DEBIAN_FRONTEND=noninteractive apt-get install -y -o Dpkg::Options::=--force-confold python3-neutron-dynamic-routing ; fi"
}
drain_neutron_host_backend () {
local HOST HOST_IP HOST_NAME
HOST=${1}
HOST_IP=$(echo ${HOST} | cut -d, -f1)
HOST_NAME=$(echo ${HOST} | cut -d, -f2)
green_echo "-> Draining ${HOST_NAME} Neutron API from possible backends"
sshi root@${ONE_CTRL_IP} "hapc drain-server --backend neutronbe --server ${HOST_NAME} --verbose --wait"
}
enable_neutron_host_backend () {
local HOST HOST_IP HOST_NAME
HOST=${1}
HOST_IP=$(echo ${HOST} | cut -d, -f1)
HOST_NAME=$(echo ${HOST} | cut -d, -f2)
green_echo "-> Enabling ${HOST_NAME} Neutron API as possible backends"
sshi root@${ONE_CTRL_IP} "hapc enable-server --backend neutronbe --server ${HOST_NAME} --verbose"
}
cluster_upgrade_neutron () {
green_echo "===> Upgrading neutron API and RPC servers on all controllers"
# Upgrading controller 1
green_echo "-> Draining ${ONE_CTRL_HOST} neutron-api backend"
sshi root@${ONE_CTRL_IP} "hapc drain-server --backend neutronbe --server ${ONE_CTRL_HOST} --verbose --wait"
green_echo "-> Stopping all neutron services on ${ONE_CTRL_HOST}"
sshi root@${ONE_CTRL_IP} "systemctl stop neutron-api ; systemctl stop neutron-rpc-server ; systemctl disable neutron-api ; systemctl disable neutron-rpc-server ; systemctl mask neutron-api ; systemctl mask neutron-rpc-server"
green_echo "-> Upgrading all neutron services on ${ONE_CTRL_HOST}"
sshi root@${ONE_CTRL_IP} "DEBIAN_FRONTEND=noninteractive apt-get install -y -o Dpkg::Options::=--force-confold neutron-common python3-neutron neutron-api"
green_echo "===> Upgrading neutron db"
sshi root@${ONE_CTRL_IP} "neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head"
green_echo "-> Upgrading python3-neutron-dynamic-routing if exists on ${ONE_CTRL_HOST}"
sshi root@${ONE_CTRL_IP} "if dpkg-query -W python3-neutron-dynamic-routing 2>/dev/null 1>/dev/null ; then DEBIAN_FRONTEND=noninteractive apt-get install -y -o Dpkg::Options::=--force-confold python3-neutron-dynamic-routing ; fi"
green_echo "-> Starting all neutron services on ${ONE_CTRL_HOST}"
sshi root@${ONE_CTRL_IP} "systemctl unmask neutron-api ; systemctl unmask neutron-rpc-server ; systemctl enable neutron-api ; systemctl enable neutron-rpc-server ; systemctl start neutron-api ; systemctl start neutron-rpc-server"
green_echo "-> Enabling ${ONE_CTRL_HOST} neutron-api backend"
sshi root@${ONE_CTRL_IP} "hapc enable-server --backend neutronbe --server ${ONE_CTRL_HOST} --verbose"
# Upgrading other controllers
green_echo "===> Upgrading neutron API and RPC servers on all other controllers"
iterate_on_hosts "${OTHER_CTRL}" drain_neutron_host_backend
iterate_on_hosts "${OTHER_CTRL}" stop_neutron_server
iterate_on_hosts "${OTHER_CTRL}" upgrade_neutron_server
iterate_on_hosts "${OTHER_CTRL}" start_neutron_server
iterate_on_hosts "${OTHER_CTRL}" enable_neutron_host_backend
if [ "${HAS_NET}" = "yes" ] ; then
green_echo "===> Upgrading Neutron agents on network nodes"
if [ "${PARTIAL_UPGRADE}" = "yes" ] ; then
yellow_echo "-> Partial upgrade: skipping network nodes neutron upgrade"
else
ITERATE_ON_HOST_MAX_PARALLEL=3
iterate_on_hosts "${ALL_NET}" upgrade_network_node
ITERATE_ON_HOST_MAX_PARALLEL=8
fi
else
green_echo "===> Upgrading Neutron agents on controller nodes"
if [ "${PARTIAL_UPGRADE}" = "yes" ] ; then
yellow_echo "-> Partial upgrade: skipping controller nodes neutron upgrade"
else
ITERATE_ON_HOST_MAX_PARALLEL=3
iterate_on_hosts "${ALL_CTRL}" upgrade_network_agents_on_controller
ITERATE_ON_HOST_MAX_PARALLEL=8
fi
fi
green_echo "===> Upgrading Neutron agents on compute nodes"
if [ "${PARTIAL_UPGRADE}" = "yes" ] ; then
yellow_echo "-> Partial upgrade: skipping compute nodes neutron upgrade"
else
ITERATE_ON_HOST_MAX_PARALLEL=3
iterate_on_hosts -p "${ALL_COMP}" upgrade_compute_neutron_agents
ITERATE_ON_HOST_MAX_PARALLEL=8
fi
}
############
### Heat ###
############
cluster_upgrade_heat () {
green_echo "===> Upgrading Heat"
drain_backend ${ONE_CTRL_IP},${ONE_CTRL_HOST} heatbe
drain_backend ${ONE_CTRL_IP},${ONE_CTRL_HOST} heatcfnbe
stop_service ${ONE_CTRL_IP},${ONE_CTRL_HOST} "heat-api heat-api-cfn heat-engine"
upgrade_package ${ONE_CTRL_IP},${ONE_CTRL_HOST} "heat-api heat-api-cfn heat-engine"
green_echo "===> Running heat-manage db_sync"
sshi root@${ONE_CTRL_IP} "su heat -s /bin/sh -c 'heat-manage db_sync'"
start_service ${ONE_CTRL_IP},${ONE_CTRL_HOST} "heat-api heat-api-cfn heat-engine"
enable_backend ${ONE_CTRL_IP},${ONE_CTRL_HOST} heatbe
enable_backend ${ONE_CTRL_IP},${ONE_CTRL_HOST} heatcfnbe
green_echo "===> Upgrading Heat on all other controllers"
iterate_on_hosts "${OTHER_CTRL}" drain_backend heatbe
iterate_on_hosts "${OTHER_CTRL}" drain_backend heatcfnbe
iterate_on_hosts "${OTHER_CTRL}" stop_service heat-api
iterate_on_hosts "${OTHER_CTRL}" stop_service heat-api-cfn
iterate_on_hosts "${OTHER_CTRL}" stop_service heat-engine
iterate_on_hosts "${OTHER_CTRL}" upgrade_package heat-api
iterate_on_hosts "${OTHER_CTRL}" start_service heat-api
iterate_on_hosts "${OTHER_CTRL}" start_service heat-api-cfn
iterate_on_hosts "${OTHER_CTRL}" start_service heat-engine
iterate_on_hosts "${OTHER_CTRL}" enable_backend heatbe
iterate_on_hosts "${OTHER_CTRL}" enable_backend heatcfnbe
}
#########################
### PLACEMENT UPGRADE ###
#########################
cluster_upgrade_placement () {
cluster_upgrade_project Placement placementbe placement-api placement-api "su placement -s /bin/sh -c 'placement-manage db sync'"
green_echo "===> Running placement-manage db online_data_migrations until completed"
sshi root@${ONE_CTRL_IP} "placement-manage db online_data_migrations; RET=\$? ; while [ \"\$RET\" != 0 ] ; do if [ \"\$RET\" == 1 ] ; then exit 1 ; else su -s /bin/sh -c 'placement-manage db online_data_migrations' cinder; RET=\$? ; fi ; done"
}
######################
### CINDER UPGRADE ###
######################
stop_cinder_volume_and_backup () {
local HOST HOST_IP HOST_NAME
HOST=${1}
HOST_IP=$(echo ${HOST} | cut -d, -f1)
HOST_NAME=$(echo ${HOST} | cut -d, -f2)
green_echo "-> Stopping Cinder backup and volume on ${HOST_NAME}"
for i in cinder-volume cinder-backup ; do
sshi root@${HOST_IP} "systemctl stop $i ; systemctl disable $i ; systemctl mask $i"
done
}
start_cinder_volume_and_backup () {
local HOST HOST_IP HOST_NAME
HOST=${1}
HOST_IP=$(echo ${HOST} | cut -d, -f1)
HOST_NAME=$(echo ${HOST} | cut -d, -f2)
green_echo "-> Starting Cinder backup and volume on ${HOST_NAME}"
for i in cinder-volume cinder-backup ; do
sshi root@${HOST_IP} "systemctl unmask $i ; systemctl enable $i ; systemctl start $i"
done
}
stop_apache_cinder_servers () {
local HOST HOST_IP HOST_NAME
HOST=${1}
HOST_IP=$(echo ${HOST} | cut -d, -f1)
HOST_NAME=$(echo ${HOST} | cut -d, -f2)
green_echo "-> Stopping Cinder API on apache on ${HOST_NAME}"
if [ "${FROM_OS_RELEASE}" = "rocky" ] ; then
# If we're with Train, Cinder is still running on Apache, so we disable it there and restart apache.
sshi root@${HOST_IP} "sed -i \"s/Listen ${HOST_IP}:8776//\" /etc/apache2/ports.conf"
sshi root@${HOST_IP} "a2dissite 10-cinder_wsgi.conf"
sshi root@${HOST_IP} "systemctl restart apache2"
fi
}
upgrade_cinder_controller () {
local HOST HOST_IP HOST_NAME
HOST=${1}
HOST_IP=$(echo ${HOST} | cut -d, -f1)
HOST_NAME=$(echo ${HOST} | cut -d, -f2)
green_echo "-> Upgrading Cinder on ${HOST_NAME}"
sshi root@${HOST_IP} "DEBIAN_FRONTEND=noninteractive apt-get install -y -o Dpkg::Options::=--force-confold python3-cinder cinder-scheduler cinder-common cinder-api"
}
start_cinder_volume_and_backup () {
local HOST HOST_IP HOST_NAME
HOST=${1}
HOST_IP=$(echo ${HOST} | cut -d, -f1)
HOST_NAME=$(echo ${HOST} | cut -d, -f2)
green_echo "-> Starting Cinder Volume and Backup on ${HOST_NAME}"
for i in cinder-volume cinder-backup ; do
sshi root@${HOST_IP} "if dpkg-query -W $i ; then systemctl unmask $i ; systemctl enable $i ; systemctl start $i ; fi"
done
}
upgrade_volume_services () {
local HOST HOST_IP HOST_NAME
HOST=${1}
HOST_IP=$(echo ${HOST} | cut -d, -f1)
HOST_NAME=$(echo ${HOST} | cut -d, -f2)
green_echo "-> Upgrading python3-cinder on ${HOST_NAME}"
sshi root@${HOST_IP} "DEBIAN_FRONTEND=noninteractive apt-get install -y -o Dpkg::Options::=--force-confold python3-cinder"
# sshi root@${HOST_IP} "oci-puppet || true"
}
cluster_upgrade_cinder () {
if [ "${FROM_OS_RELEASE}" = "rocky" ] ; then
green_echo "===> Disabling cinder-api on Apache"
iterate_on_hosts "${ALL_CTRL}" stop_apache_cinder_servers
fi
cluster_upgrade_project Cinder cinderbe "cinder-api cinder-scheduler" cinder-api "su -s /bin/sh -c 'cinder-manage db purge 0 && cinder-manage db sync' cinder"
green_echo "===> Upgrading cinder-volume and cinder-backup in all nodes of the cluster"
if [ "${HAS_VOL}" = "yes" ] ; then
green_echo "===> Stopping all cinder-volume services on volume nodes"
iterate_on_hosts -p "${ALL_VOL}" stop_cinder_volume_and_backup
green_echo "===> Upgrade cinder on volume nodes"
iterate_on_hosts -p "${ALL_VOL}" upgrade_volume_services
green_echo "===> Starting cinder services on volume nodes"
iterate_on_hosts -p "${ALL_VOL}" start_cinder_volume_and_backup
fi
if [ "${HAS_OSD}" = "yes" ] ; then
green_echo "===> Stopping all cinder-volume services on compute nodes"
iterate_on_hosts -p "${ALL_COMP}" stop_cinder_volume_and_backup
green_echo "===> Upgrade cinder on compute nodes"
iterate_on_hosts -p "${ALL_COMP}" upgrade_volume_services
green_echo "===> Starting cinder-volume services on compute nodes"
iterate_on_hosts -p "${ALL_COMP}" start_cinder_volume_and_backup
fi
green_echo "===> Running cinder-manage db online_data_migrations until completed"
sshi root@${ONE_CTRL_IP} "cinder-manage db online_data_migrations; RET=\$? ; while [ \"\$RET\" != 0 ] ; do if [ \"\$RET\" == 1 ] ; then exit 1 ; else su -s /bin/sh -c 'cinder-manage db online_data_migrations' cinder; RET=\$? ; fi ; done"
}
####################
### NOVA UPGRADE ###
####################
migrate_from_old_nova_stuff () {
local HOST HOST_IP HOST_NAME
HOST=${1}
HOST_IP=$(echo ${HOST} | cut -d, -f1)
HOST_NAME=$(echo ${HOST} | cut -d, -f2)
if [ "${FROM_OS_RELEASE}" = "rocky" ] ; then
# If we're with Train, Nova is still running on Apache, so we disable it there and restart apache.
green_echo "-> Removing nova-api from Apache on ${HOST_NAME}"
sshi root@${HOST_IP} "sed -i \"s/Listen ${HOST_IP}:8774//\" /etc/apache2/ports.conf"
sshi root@${HOST_IP} "a2dissite 10-nova_api_wsgi.conf"
sshi root@${HOST_IP} "systemctl restart apache2"
fi
if [ "${FROM_OS_RELEASE}" = "stein" ] ; then
green_echo "-> Purging nova-consoleauth and nova-placement-api on ${HOST_NAME}"
sshi root@${HOST_IP} "apt-get purge -y nova-consoleauth nova-placement-api"
fi
}
upgrade_compute (){
local HOST HOST_IP HOST_NAME
HOST=${1}
HOST_IP=$(echo ${HOST} | cut -d, -f1)
HOST_NAME=$(echo ${HOST} | cut -d, -f2)
green_echo "-> Upgrading ${HOST_NAME}"
sshi root@${HOST_IP} "DEBIAN_FRONTEND=noninteractive apt-get install -y -o Dpkg::Options::=--force-confold python3-nova"
# sshi root@${HOST_IP} "oci-puppet || true"
}
install_placement (){
local HOST HOST_IP HOST_NAME
HOST=${1}
HOST_IP=$(echo ${HOST} | cut -d, -f1)
HOST_NAME=$(echo ${HOST} | cut -d, -f2)
green_echo "-> Installing placement on ${HOST_NAME}"
sshi root@${HOST_IP} "DEBIAN_FRONTEND=noninteractive apt-get install -y -o Dpkg::Options::=--force-confold placement-api python3-osc-placement python3-placement placement-common"
# Get the placement connection from nova and set it for placement
sshi root@${HOST_IP} "if [ -d /etc/placement ] && ! [ -r /etc/placement/placement.conf ] && [ -r /usr/share/placement-common/placement.conf ] ; then cp /usr/share/placement-common/placement.conf /etc/placement ; chown placement:placement /etc/placement/placement.conf ; chmod 640 /etc/placement/placement.conf ; fi"
sshi root@${HOST_IP} ". /usr/share/openstack-pkg-tools/pkgos_func ; TMPFILE=\$(mktemp); cat /etc/nova/nova.conf | grep -v '^#' >\${TMPFILE} ; pkgos_inifile get \${TMPFILE} placement_database connection ; rm -f \${TMPFILE} ; pkgos_inifile set /etc/placement/placement.conf placement_database connection \${RET}"
}
cluster_upgrade_nova () {
iterate_on_hosts "${ALL_CTRL}" migrate_from_old_nova_stuff
# Todo: need to fix-up so that we have graceful upgrade of nova-api-metadata
# which means disabling backends in compute and/or network nodes.
cluster_upgrade_project Nova novabe "nova-api nova-api-metadata nova-conductor nova-novncproxy nova-scheduler" nova-api "su nova -s /bin/sh -c 'nova-manage db sync' && su nova -s /bin/sh -c 'nova-manage api_db sync'"
if [ "${FROM_OS_RELEASE}" = "rocky" ] ; then
iterate_on_hosts "${ALL_CTRL}" install_placement
sshi root@${ONE_CTRL_IP} "placement-manage db stamp b4ed3a175331"
sshi root@${ONE_CTRL_IP} "placement-manage db sync"
fi
green_echo "===> Nova upgrade of all computes"
iterate_on_hosts -p "${ALL_COMP}" upgrade_compute
green_echo "===> Running nova-manage db online_data_migrations until completed"
sshi root@${ONE_CTRL_IP} "nova-manage db online_data_migrations; RET=\$? ; while [ \"\$RET\" != 0 ] ; do if [ \"\$RET\" == 1 ] ; then exit 1 ; else nova-manage db online_data_migrations; RET=\$? ; fi ; done"
}
#################
### Designate ###
#################
fix_designate_log_rights (){
local HOST HOST_IP HOST_NAME
HOST=${1}
HOST_IP=$(echo ${HOST} | cut -d, -f1)
HOST_NAME=$(echo ${HOST} | cut -d, -f2)
green_echo "-> Fixing designate-manage.log ownership in ${HOST_NAME}"
# Without this, running "designate-manage database sync" as designate user during the puppet run will fail.
sshi root@${HOST_IP} "chown designate:designate /var/log/designate/designate-manage.log || true"
}
cluster_upgrade_designate () {
iterate_on_hosts "${ALL_CTRL}" fix_designate_log_rights
cluster_upgrade_project Designate designatebe "designate-api designate-central designate-mdns designate-producer designate-sink designate-worker" designate-api "su designate -s /bin/sh -c 'cd /tmp && designate-manage database sync'"
}
############
### AODH ###
############
cluster_upgrade_aodh () {
cluster_upgrade_project Aodh aodhbe "aodh-api aodh-notifier aodh-listener aodh-evaluator" aodh-api "su aodh -s /bin/sh -c 'aodh-dbsync'"
}
###############
### Octavia ###
###############
cluster_upgrade_octavia () {
cluster_upgrade_project Octavia octaviabe "octavia-api octavia-worker octavia-health-manager octavia-housekeeping" octavia-api "su octavia -s /bin/sh -c 'octavia-db-manage upgrade head'"
}
##############
### Glance ###
##############
cluster_upgrade_glance () {
cluster_upgrade_project Glance glancebe glance-api glance-api "su glance -s /bin/sh -c 'glance-manage db_sync'"
}
################
### Barbican ###
################
cluster_upgrade_barbican () {
cluster_upgrade_project Barbican barbicanbe "barbican-api barbican-worker" barbican-api "su barbican -s /bin/sh -c 'barbican-db-manage upgrade'"
}
###############
### Gnocchi ###
###############
controller_upgrade_gnocchi_if_exists () {
local HOST HOST_IP HOST_NAME
HOST=${1}
HOST_IP=$(echo ${HOST} | cut -d, -f1)
HOST_NAME=$(echo ${HOST} | cut -d, -f2)
green_echo "-> Upgrading python3-gnocchi on ${HOST_NAME} if exists"
sshi root@${HOST_IP} "if dpkg-query -W python3-gnocchi 2>/dev/null 1>/dev/null ; then DEBIAN_FRONTEND=noninteractive apt-get install -y -o Dpkg::Options::=--force-confold python3-gnocchi ; fi"
}
cluster_upgrade_gnocchi () {
green_echo "===> Upgrading Gnocchi"
# If we have MSG nodes, all is on them, otherwise, all on the controllers
if [ -n "${ALL_MSG}" ] ; then
green_echo "===> Upgrading Gnocchi on ${ONE_MSG_HOST}"
drain_backend ${ONE_MSG_IP},${ONE_MSG_HOST} gnocchibe
stop_service ${ONE_MSG_IP},${ONE_MSG_HOST} "gnocchi-api gnocchi-metricd gnocchi-statsd"
upgrade_package ${ONE_MSG_IP},${ONE_MSG_HOST} gnocchi-api
start_service ${ONE_MSG_IP},${ONE_MSG_HOST} "gnocchi-api gnocchi-metricd gnocchi-statsd"
enable_backend ${ONE_MSG_IP},${ONE_MSG_HOST} gnocchibe
green_echo "===> Upgrading Gnocchi on all other messaging nodes"
iterate_on_hosts "${OTHER_MSG}" drain_backend gnocchibe
for SERVICE in gnocchi-api gnocchi-metricd gnocchi-statsd ; do
iterate_on_hosts "${OTHER_MSG}" stop_service ${SERVICE}
done
iterate_on_hosts "${OTHER_MSG}" upgrade_package gnocchi-api
for SERVICE in gnocchi-api gnocchi-metricd gnocchi-statsd ; do
iterate_on_hosts "${OTHER_MSG}" start_service ${SERVICE}
done
iterate_on_hosts "${OTHER_MSG}" enable_backend gnocchibe
iterate_on_hosts "${ALL_CTRL}" controller_upgrade_gnocchi_if_exists
green_echo "===> Running gnocchi-upgrade"
sshi root@${ONE_MSG_IP} "su gnocchi -s /bin/sh -c 'gnocchi-upgrade'"
else
green_echo "===> Upgrading Gnocchi on ${ONE_CTRL_HOST}"
drain_backend ${ONE_CTRL_IP},${ONE_CTRL_HOST} gnocchibe
stop_service ${ONE_CTRL_IP},${ONE_CTRL_HOST} "gnocchi-api gnocchi-metricd gnocchi-statsd"
upgrade_package ${ONE_CTRL_IP},${ONE_CTRL_HOST} gnocchi-api
start_service ${ONE_CTRL_IP},${ONE_CTRL_HOST} "gnocchi-api gnocchi-metricd gnocchi-statsd"
enable_backend ${ONE_CTRL_IP},${ONE_CTRL_HOST} gnocchibe
green_echo "===> Upgrading Gnocchi on all other controller nodes"
iterate_on_hosts "${OTHER_CTRL}" drain_backend gnocchibe
for SERVICE in gnocchi-api gnocchi-metricd gnocchi-statsd ; do
iterate_on_hosts "${OTHER_CTRL}" stop_service ${SERVICE}
done
iterate_on_hosts "${OTHER_CTRL}" upgrade_package gnocchi-api
for SERVICE in gnocchi-api gnocchi-metricd gnocchi-statsd ; do
iterate_on_hosts "${OTHER_CTRL}" start_service ${SERVICE}
done
iterate_on_hosts "${OTHER_CTRL}" enable_backend gnocchibe
green_echo "===> Running gnocchi-upgrade"
sshi root@${ONE_CTRL_IP} "su gnocchi -s /bin/sh -c 'gnocchi-upgrade'"
fi
}
##################
### Ceilometer ###
##################
cluster_upgrade_ceilometer () {
green_echo "===> Upgrading Ceilometer"
# Controller: ceilometer-agent-notification ceilometer-polling
green_echo "-> Upgrading all controllers"
iterate_on_hosts "${ALL_CTRL}" upgrade_package "ceilometer-agent-notification ceilometer-polling"
# Compute: ceilometer-polling
green_echo "-> Upgrading ceilometer-polling on all compute nodes"
iterate_on_hosts -p "${ALL_COMP}" upgrade_package "ceilometer-polling"
}
##################
### Cloudkitty ###
##################
upgrade_python3_cloudkitty_on_ctrl () {
local HOST HOST_IP HOST_NAME
HOST=${1}
HOST_IP=$(echo ${HOST} | cut -d, -f1)
HOST_NAME=$(echo ${HOST} | cut -d, -f2)
green_echo "-> Upgrading python3-cloudkitty on controller ${HOST_NAME} if exists"
sshi root@${HOST_IP} "if dpkg-query -W python3-cloudkitty 2>/dev/null 1>/dev/null ; then DEBIAN_FRONTEND=noninteractive apt-get install -y -o Dpkg::Options::=--force-confold python3-cloudkitty ; fi"
}
cluster_upgrade_cloudkitty () {
green_echo "===> Upgrading Cloudkitty"
# Messaging: cloudkitty-api cloudkitty-processor
# If we have MSG nodes, all is on them, otherwise, all on the controllers
if [ -n "${ALL_MSG}" ] ; then
green_echo "===> Upgrading Cloudkitty on ${ONE_MSG_HOST}"
drain_backend ${ONE_MSG_IP},${ONE_MSG_HOST} cloudkittybe
stop_service ${ONE_MSG_IP},${ONE_MSG_HOST} "cloudkitty-api cloudkitty-processor"
upgrade_package ${ONE_MSG_IP},${ONE_MSG_HOST} cloudkitty-api
green_echo "===> Running cloudkitty-dbsync upgrade"
sshi root@${ONE_MSG_IP} "su cloudkitty -s /bin/sh -c 'cloudkitty-dbsync upgrade'"
start_service ${ONE_MSG_IP},${ONE_MSG_HOST} "cloudkitty-api cloudkitty-processor"
enable_backend ${ONE_MSG_IP},${ONE_MSG_HOST} cloudkittybe
green_echo "===> Upgrading Cloudkitty on all other messaging nodes"
iterate_on_hosts "${OTHER_MSG}" drain_backend cloudkittybe
for SERVICE in cloudkitty-api cloudkitty-processor ; do
iterate_on_hosts "${OTHER_MSG}" stop_service ${SERVICE}
done
iterate_on_hosts "${OTHER_MSG}" upgrade_package cloudkitty-api
for SERVICE in cloudkitty-api cloudkitty-processor ; do
iterate_on_hosts "${OTHER_MSG}" start_service ${SERVICE}
done
iterate_on_hosts "${OTHER_MSG}" enable_backend cloudkittybe
iterate_on_hosts "${ALL_CTRL}" upgrade_python3_cloudkitty_on_ctrl
else
green_echo "===> Upgrading Cloudkitty on ${ONE_CTRL_HOST}"
drain_backend ${ONE_CTRL_IP},${ONE_CTRL_HOST} cloudkittybe
stop_service ${ONE_CTRL_IP},${ONE_CTRL_HOST} "cloudkitty-api cloudkitty-processor"
upgrade_package ${ONE_CTRL_IP},${ONE_CTRL_HOST} cloudkitty-api
green_echo "===> Running cloudkitty-dbsync upgrade"
sshi root@${ONE_CTRL_IP} "su cloudkitty -s /bin/sh -c 'cloudkitty-dbsync upgrade'"
start_service ${ONE_CTRL_IP},${ONE_CTRL_HOST} "cloudkitty-api cloudkitty-processor"
enable_backend ${ONE_CTRL_IP},${ONE_CTRL_HOST} cloudkittybe
green_echo "===> Upgrading Cloudkitty on all other controller nodes"
iterate_on_hosts "${OTHER_CTRL}" drain_backend cloudkittybe
for SERVICE in cloudkitty-api cloudkitty-processor ; do
iterate_on_hosts "${OTHER_CTRL}" stop_service ${SERVICE}
done
iterate_on_hosts "${OTHER_CTRL}" upgrade_package cloudkitty-api
for SERVICE in cloudkitty-api cloudkitty-processor ; do
iterate_on_hosts "${OTHER_CTRL}" start_service ${SERVICE}
done
iterate_on_hosts "${OTHER_CTRL}" enable_backend cloudkittybe
fi
}
#############
### Swift ###
#############
upgrade_python3_swift () {
local HOST HOST_IP HOST_NAME
HOST=${1}
HOST_IP=$(echo ${HOST} | cut -d, -f1)
HOST_NAME=$(echo ${HOST} | cut -d, -f2)
green_echo "-> Upgrading ${HOST_NAME}"
sshi root@${HOST_IP} "DEBIAN_FRONTEND=noninteractive apt-get install -y -o Dpkg::Options::=--force-confold python3-swift"
}
upgrade_swift_proxy () {
local HOST HOST_IP HOST_NAME
HOST=${1}
HOST_IP=$(echo ${HOST} | cut -d, -f1)
HOST_NAME=$(echo ${HOST} | cut -d, -f2)
green_echo "-> Draining ${HOST_NAME}"
sshi root@${HOST_IP} "hapc drain-server --backend swiftbe --server ${HOST_NAME} --verbose --wait"
green_echo "-> Upgrading ${HOST_NAME}"
sshi root@${HOST_IP} "DEBIAN_FRONTEND=noninteractive apt-get install -y -o Dpkg::Options::=--force-confold python3-swift"
green_echo "-> Enabling ${HOST_NAME}"
sshi root@${HOST_IP} "hapc enable-server --backend swiftbe --server ${HOST_NAME} --verbose"
}
cluster_upgrade_swift () {
green_echo "===> Upgrading Swift"
iterate_on_hosts -p "${ALL_SWIFTSTR}" upgrade_python3_swift
iterate_on_hosts -p "${ALL_SWIFTPRX}" upgrade_swift_proxy
}
#######################
### HORIZON REMOVAL ###
#######################
upgrade_horizon () {
local HOST HOST_IP HOST_NAME
HOST=${1}
HOST_IP=$(echo ${HOST} | cut -d, -f1)
HOST_NAME=$(echo ${HOST} | cut -d, -f2)
green_echo "-> Upgrading horizon on ${HOST_NAME}"
HORIZON_DEPENDS="openstack-dashboard openstack-dashboard-apache python3-django-horizon python3-cloudkitty-dashboard python3-designate-dashboard python3-heat-dashboard python3-octavia-dashboard python3-magnum-ui python3-manila-ui python3-xstatic python3-xstatic-angular python3-xstatic-angular-bootstrap python3-xstatic-angular-fileupload python3-xstatic-angular-gettext python3-xstatic-angular-lrdragndrop python3-xstatic-angular-schema-form python3-xstatic-angular-ui-router python3-xstatic-angular-uuid python3-xstatic-angular-vis python3-xstatic-bootstrap-datepicker python3-xstatic-bootstrap-scss python3-xstatic-bootswatch python3-xstatic-d3 python3-xstatic-filesaver python3-xstatic-font-awesome python3-xstatic-hogan python3-xstatic-jasmine python3-xstatic-jquery python3-xstatic-jquery-migrate python3-xstatic-jquery-ui python3-xstatic-jquery.quicksearch python3-xstatic-jquery.tablesorter python3-xstatic-js-yaml python3-xstatic-jsencrypt python3-xstatic-json2yaml python3-xstatic-magic-search python3-xstatic-mdi python3-xstatic-objectpath python3-xstatic-rickshaw python3-xstatic-roboto-fontface python3-xstatic-smart-table python3-xstatic-spin python3-xstatic-term.js python3-xstatic-tv4"
upgrade_package_list_on_host ${HOST} "${HORIZON_DEPENDS}"
}
cluster_upgrade_horizon () {
green_echo "===> Upgrading horizon"
iterate_on_hosts "${ALL_CTRL}" upgrade_horizon
}
############################
### Dependencies upgrade ###
############################
ctrl_upgrade_depends () {
local HOST HOST_IP HOST_NAME
HOST=${1}
HOST_IP=$(echo ${HOST} | cut -d, -f1)
HOST_NAME=$(echo ${HOST} | cut -d, -f2)
green_echo "-> Installing depends on ${HOST_NAME}"
case "${TO_OS_RELEASE}" in
"wallaby")
CTRL_DEPENDS="openstack-pkg-tools os-brick-common python3-aodhclient python3-automaton python3-barbicanclient python3-blazarclient python3-castellan python3-cinderclient python3-cliff python3-cloudkittyclient python3-cmd2 python3-designateclient python3-docker python3-dogpile.cache python3-eventlet python3-glance-store python3-glanceclient python3-gnocchiclient python3-heatclient python3-influxdb python3-ironicclient python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-magnumclient python3-manilaclient python3-mistralclient python3-monascaclient python3-msgpack python3-netaddr python3-neutronclient python3-novaclient python3-oauth2client python3-octaviaclient python3-openstackclient python3-openstacksdk python3-os-brick python3-os-ken python3-os-traits python3-os-vif python3-os-win python3-osc-lib python3-osc-placement python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.messaging python3-oslo.middleware python3-oslo.policy python3-oslo.privsep python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-oslo.versionedobjects python3-oslo.vmware python3-ovsdbapp python3-pbr python3-pymemcache python3-pymysql python3-pyroute2 python3-rtslib-fb python3-saharaclient python3-senlinclient python3-stevedore python3-swiftclient python3-taskflow python3-tenacity python3-tooz python3-troveclient python3-vitrageclient python3-voluptuous python3-zaqarclient python3-zunclient"
;;
"xena")
CTRL_DEPENDS="alembic libjs-sphinxdoc novnc openstack-pkg-tools os-brick-common python3-alembic python3-aodhclient python3-automaton python3-barbicanclient python3-blazarclient python3-calmjs python3-castellan python3-cinderclient python3-cliff python3-cloudkittyclient python3-croniter python3-ddt python3-debtcollector python3-designateclient python3-eventlet python3-falcon python3-flask python3-flask-restful python3-futurist python3-glance-store python3-glanceclient python3-greenlet python3-heatclient python3-idna python3-ironicclient python3-itsdangerous python3-jinja2 python3-jsonpatch python3-jsonschema python3-jwcrypto python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-ldappool python3-magnumclient python3-manilaclient python3-markupsafe python3-migrate python3-mistralclient python3-monascaclient python3-monotonic python3-neutronclient python3-novaclient python3-novnc python3-octavia-lib python3-octaviaclient python3-openstackclient python3-openstacksdk python3-os-brick python3-os-ken python3-os-resource-classes python3-os-traits python3-os-vif python3-os-win python3-osc-lib python3-osc-placement python3-oslo.cache python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.i18n python3-oslo.log python3-oslo.messaging python3-oslo.middleware python3-oslo.policy python3-oslo.privsep python3-oslo.reports python3-oslo.rootwrap python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-oslo.versionedobjects python3-oslo.vmware python3-osprofiler python3-ovsdbapp python3-pbr python3-pecan python3-pypowervm python3-pyroute2 python3-pyroute2.ethtool python3-pyroute2.ipdb python3-pyroute2.ipset python3-pyroute2.ndb python3-pyroute2.nftables python3-pyroute2.nslink python3-pyroute2.protocols python3-pysaml2 python3-q-text-as-data python3-rfc3986 python3-saharaclient python3-senlinclient python3-sphinx python3-sqlalchemy python3-sqlalchemy-utils python3-stevedore python3-swiftclient python3-taskflow python3-testresources python3-testtools python3-tooz python3-troveclient python3-uhashring python3-vitrageclient python3-websockify python3-werkzeug python3-wrapt python3-wsme python3-yappi python3-yaql python3-zaqarclient python3-zunclient sphinx-common spice-html5 websockify"
;;
"yoga")
CTRL_DEPENDS="alembic os-brick-common python3-alembic python3-amqp python3-aodhclient python3-automaton python3-barbicanclient python3-binary-memcached python3-blazarclient python3-boto3 python3-botocore python3-cachetools python3-castellan python3-cffi python3-cffi-backend python3-cinderclient python3-click python3-cliff python3-cloudkittyclient python3-cmd2 python3-croniter python3-cryptography python3-ddt python3-debtcollector python3-designateclient python3-django python3-django-appconf python3-django-compressor python3-django-debreach python3-django-pyscss python3-dogpile.cache python3-elementpath python3-enmerkar python3-etcd3gw python3-eventlet python3-fasteners python3-glance-store python3-glanceclient python3-gnocchiclient python3-greenlet python3-heatclient python3-idna python3-imagesize python3-importlib-metadata python3-ironicclient python3-iso8601 python3-jinja2 python3-json-pointer python3-jwt python3-kazoo python3-keyring python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-kombu python3-lxml python3-magnumclient python3-manilaclient python3-mistralclient python3-monasca-statsd python3-monascaclient python3-monotonic python3-msgpack python3-neutronclient python3-novaclient python3-oauth2client python3-oauthlib python3-octaviaclient python3-openstackclient python3-openstacksdk python3-os-brick python3-os-client-config python3-os-ken python3-os-traits python3-os-vif python3-os-win python3-osc-lib python3-osc-placement python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.limit python3-oslo.log python3-oslo.messaging python3-oslo.metrics python3-oslo.middleware python3-oslo.policy python3-oslo.privsep python3-oslo.reports python3-oslo.rootwrap python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-oslo.versionedobjects python3-oslo.vmware python3-ovsdbapp python3-paramiko python3-pbr python3-pecan python3-pkg-resources python3-psutil python3-pure-sasl python3-pyparsing python3-pypowervm python3-pyroute2 python3-pysaml2 python3-pytimeparse python3-rcssmin python3-responses python3-rjsmin python3-rtslib-fb python3-saharaclient python3-semantic-version python3-senlinclient python3-setuptools python3-simplejson python3-sqlalchemy-utils python3-stevedore python3-swiftclient python3-taskflow python3-tooz python3-troveclient python3-ujson python3-uritemplate python3-vitrageclient python3-voluptuous python3-wcwidth python3-websocket python3-wrapt python3-yaml python3-zake python3-zaqarclient python3-zunclient"
;;
"zed")
CTRL_DEPENDS="alembic novnc python3-alembic python3-aodhclient python3-automaton python3-barbicanclient python3-blazarclient python3-castellan python3-cinderclient python3-cliff python3-cloudkittyclient python3-cursive python3-defusedxml python3-designateclient python3-enmerkar python3-etcd3gw python3-eventlet python3-falcon python3-fixtures python3-flask python3-futurist python3-glance-store python3-glanceclient python3-heatclient python3-ironicclient python3-json-pointer python3-jsonschema python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-magnumclient python3-manilaclient python3-mistralclient python3-monasca-statsd python3-monascaclient python3-msgpack python3-munch python3-mypy python3-neutronclient python3-novaclient python3-novnc python3-oauth2client python3-octavia-lib python3-octaviaclient python3-openstackclient python3-openstacksdk python3-os-brick python3-os-ken python3-os-traits python3-os-vif python3-os-win python3-osc-lib python3-osc-placement python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.i18n python3-oslo.limit python3-oslo.log python3-oslo.messaging python3-oslo.metrics python3-oslo.middleware python3-oslo.policy python3-oslo.privsep python3-oslo.reports python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-oslo.versionedobjects python3-oslo.vmware python3-osprofiler python3-ovsdbapp python3-pbr python3-pymemcache python3-pyscss python3-q-text-as-data python3-rtslib-fb python3-saharaclient python3-senlinclient python3-sqlalchemy python3-stevedore python3-swiftclient python3-taskflow python3-testresources python3-testtools python3-tooz python3-troveclient python3-uhashring python3-vitrageclient python3-warlock python3-websockify python3-webtest python3-werkzeug python3-wrapt python3-wsme python3-yappi python3-zaqarclient python3-zunclient websockify"
;;
"antelope")
CTRL_DEPENDS="novnc os-brick-common pycadf-common python3-aodhclient python3-automaton python3-barbicanclient python3-blazarclient python3-calmjs python3-calmjs.parse python3-calmjs.types python3-castellan python3-cinderclient python3-cliff python3-cloudkittyclient python3-cursive python3-debtcollector python3-designateclient python3-edgegrid python3-enmerkar python3-etcd3gw python3-fixtures python3-futurist python3-glance-store python3-glanceclient python3-gnocchiclient python3-heatclient python3-infinity python3-ironicclient python3-jsonschema python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-magnumclient python3-manilaclient python3-mistralclient python3-monasca-statsd python3-monascaclient python3-msgpack python3-neutron-lib python3-neutronclient python3-novaclient python3-novnc python3-oauth2client python3-octavia-lib python3-octaviaclient python3-openstackclient python3-openstacksdk python3-os-brick python3-os-client-config python3-os-ken python3-os-resource-classes python3-os-service-types python3-os-traits python3-os-vif python3-os-win python3-osc-lib python3-osc-placement python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.i18n python3-oslo.limit python3-oslo.log python3-oslo.messaging python3-oslo.metrics python3-oslo.middleware python3-oslo.policy python3-oslo.privsep python3-oslo.reports python3-oslo.rootwrap python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-oslo.versionedobjects python3-oslo.vmware python3-osprofiler python3-ovsdbapp python3-pbr python3-pecan python3-pure-sasl python3-pycadf python3-pymemcache python3-pyroute2 python3-pysaml2 python3-pytimeparse python3-q-text-as-data python3-rcssmin python3-rfc3986 python3-saharaclient python3-senlinclient python3-sqlalchemy-utils python3-stevedore python3-swiftclient python3-taskflow python3-testscenarios python3-testtools python3-tooz python3-troveclient python3-uhashring python3-uritemplate python3-vitrageclient python3-warlock python3-wrapt python3-wsme python3-yappi python3-yaql python3-zake python3-zaqarclient python3-zunclient"
;;
"bobcat")
CTRL_DEPENDS="glance-store-common os-brick-common pycadf-common python3-aodhclient python3-automaton python3-barbicanclient python3-binary-memcached python3-blazarclient python3-castellan python3-cinderclient python3-cliff python3-cloudkittyclient python3-designateclient python3-django-horizon python3-edgegrid python3-etcd3gw python3-eventlet python3-flask python3-glance-store python3-glanceclient python3-heatclient python3-ironicclient python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-magnumclient python3-manilaclient python3-mistralclient python3-monasca-statsd python3-monascaclient python3-mypy python3-neutron-lib python3-neutronclient python3-novaclient python3-octavia-lib python3-octaviaclient python3-openstackclient python3-openstacksdk python3-os-brick python3-os-ken python3-os-traits python3-os-vif python3-osc-lib python3-osc-placement python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.i18n python3-oslo.limit python3-oslo.log python3-oslo.messaging python3-oslo.metrics python3-oslo.middleware python3-oslo.policy python3-oslo.privsep python3-oslo.reports python3-oslo.rootwrap python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-oslo.versionedobjects python3-oslo.vmware python3-ovsdbapp python3-pbr python3-pecan python3-psycopg2 python3-pure-sasl python3-pycadf python3-pymemcache python3-pyroute2 python3-pysaml2 python3-requests python3-rfc3986 python3-saharaclient python3-semantic-version python3-senlinclient python3-sqlalchemy-utils python3-stevedore python3-swiftclient python3-taskflow python3-testresources python3-testtools python3-tooz python3-troveclient python3-typepy python3-uhashring python3-urllib3 python3-vitrageclient python3-wrapt python3-yappi python3-zaqarclient python3-zunclient"
;;
"caracal")
CTRL_DEPENDS="glance-store-common openstack-pkg-tools os-brick-common python-pastedeploy-tpl python3-amqp python3-aodhclient python3-attr python3-barbicanclient python3-binary-memcached python3-blazarclient python3-boto3 python3-botocore python3-castellan python3-chardet python3-cinderclient python3-cliff python3-cloudkittyclient python3-cursive python3-debtcollector python3-designateclient python3-django python3-django-appconf python3-django-compressor python3-django-pyscss python3-dogpile.cache python3-etcd3gw python3-eventlet python3-fixtures python3-futurist python3-glance-store python3-glanceclient python3-gnocchiclient python3-greenlet python3-heatclient python3-ironicclient python3-json-pointer python3-keyring python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-ldap python3-lxml python3-magnumclient python3-manilaclient python3-memcache python3-mistralclient python3-monascaclient python3-munch python3-mypy python3-netaddr python3-networkx python3-neutron-lib python3-neutronclient python3-novaclient python3-octavia-lib python3-octaviaclient python3-openstackclient python3-openstacksdk python3-os-brick python3-os-ken python3-os-vif python3-os-win python3-osc-lib python3-osc-placement python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.i18n python3-oslo.limit python3-oslo.log python3-oslo.messaging python3-oslo.metrics python3-oslo.middleware python3-oslo.policy python3-oslo.privsep python3-oslo.reports python3-oslo.rootwrap python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-oslo.versionedobjects python3-oslo.vmware python3-ovsdbapp python3-packaging python3-pastedeploy python3-pastedeploy-tpl python3-pbr python3-pecan python3-pkg-resources python3-psutil python3-pyasn1 python3-pyasn1-modules python3-pydot python3-pygments python3-pymemcache python3-pymysql python3-pysaml2 python3-q-text-as-data python3-rtslib-fb python3-setuptools python3-sqlalchemy python3-sqlalchemy-utils python3-stevedore python3-swiftclient python3-taskflow python3-testresources python3-testtools python3-tooz python3-troveclient python3-typing-extensions python3-urllib3 python3-vitrageclient python3-warlock python3-websockify python3-wsme python3-zake python3-zaqarclient python3-zunclient websockify"
;;
"dalmatian")
CTRL_DEPENDS="glance-store-common os-brick-common python3-aodhclient python3-barbicanclient python3-blazarclient python3-calmjs python3-calmjs.parse python3-calmjs.types python3-castellan python3-cinderclient python3-cliff python3-cloudkittyclient python3-croniter python3-ddt python3-designateclient python3-django-debreach python3-dogpile.cache python3-eventlet python3-freezerclient python3-glance-store python3-glanceclient python3-gnocchiclient python3-heatclient python3-ironicclient python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-lxml python3-magnumclient python3-manilaclient python3-mistralclient python3-more-itertools python3-neutron-lib python3-neutron-vpnaas-dashboard python3-neutronclient python3-novaclient python3-novnc python3-observabilityclient python3-octavia-lib python3-octaviaclient python3-openstackclient python3-openstacksdk python3-os-brick python3-os-ken python3-os-service-types python3-os-traits python3-os-vif python3-os-win python3-osc-lib python3-osc-placement python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.i18n python3-oslo.limit python3-oslo.log python3-oslo.messaging python3-oslo.metrics python3-oslo.middleware python3-oslo.policy python3-oslo.privsep python3-oslo.reports python3-oslo.rootwrap python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-oslo.versionedobjects python3-oslo.vmware python3-osprofiler python3-ovsdbapp python3-paramiko python3-paste python3-pbr python3-pecan python3-platformdirs python3-pyparsing python3-pysaml2 python3-rcssmin python3-repoze.who python3-senlinclient python3-simplejson python3-sqlalchemy python3-sqlalchemy-utils python3-stevedore python3-swiftclient python3-taskflow python3-testtools python3-tooz python3-troveclient python3-vitrageclient python3-voluptuous python3-watcherclient python3-werkzeug python3-wsme python3-xstatic python3-xstatic-magic-search python3-xstatic-mdi python3-zaqarclient python3-zunclient"
;;
"epoxy")
CTRL_DEPENDS="os-brick-common pycadf-common python3-aodhclient python3-barbicanclient python3-blazarclient python3-blinker python3-castellan python3-cinderclient python3-cliff python3-cloudkittyclient python3-debtcollector python3-designateclient python3-flask python3-futurist python3-glance-store python3-glanceclient python3-gnocchiclient python3-heatclient python3-httplib2 python3-ironicclient python3-iso8601 python3-itsdangerous python3-jaraco.functools python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-magnumclient python3-manilaclient python3-mistralclient python3-netaddr python3-neutron-dynamic-routing python3-neutron-lib python3-neutronclient python3-novaclient python3-novnc python3-observabilityclient python3-octavia-lib python3-octaviaclient python3-openstackclient python3-openstacksdk python3-os-brick python3-os-ken python3-os-traits python3-os-vif python3-osc-lib python3-osc-placement python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.i18n python3-oslo.limit python3-oslo.log python3-oslo.messaging python3-oslo.metrics python3-oslo.middleware python3-oslo.policy python3-oslo.privsep python3-oslo.reports python3-oslo.rootwrap python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-oslo.versionedobjects python3-oslo.vmware python3-osprofiler python3-ovsdbapp python3-packaging python3-pbr python3-pkg-resources python3-prometheus-client python3-psutil python3-pycadf python3-requests python3-setuptools python3-stevedore python3-swiftclient python3-taskflow python3-testscenarios python3-testtools python3-troveclient python3-typing-extensions python3-urllib3 python3-vitrageclient python3-werkzeug python3-yaml python3-zaqarclient python3-zunclient"
;;
"flamingo")
CTRL_DEPENDS="glance-store-common os-brick-common python3-alembic alembic openstack-pkg-tools python3-aodhclient python3-barbicanclient python3-binary-memcached python3-blazarclient python3-castellan python3-cinderclient python3-cliff python3-cloudkittyclient python3-designateclient python3-django-appconf python3-eventlet python3-fixtures python3-futurist python3-glance-store python3-glanceclient python3-gnocchiclient python3-google-auth python3-heatclient python3-ironicclient python3-jsonschema python3-kazoo python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-magnumclient python3-mako python3-manilaclient python3-markupsafe python3-mistralclient python3-msgpack python3-networkx python3-neutron-lib python3-neutronclient python3-novaclient python3-observabilityclient python3-octavia-lib python3-octaviaclient python3-openstackclient python3-openstacksdk python3-os-brick python3-os-client-config python3-os-ken python3-os-service-types python3-os-traits python3-os-vif python3-osc-lib python3-osc-placement python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.i18n python3-oslo.limit python3-oslo.log python3-oslo.messaging python3-oslo.metrics python3-oslo.middleware python3-oslo.policy python3-oslo.privsep python3-oslo.reports python3-oslo.rootwrap python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-oslo.versionedobjects python3-oslo.vmware python3-osprofiler python3-ovsdbapp python3-pbr python3-pecan python3-pyroute2 python3-retrying python3-rjsmin python3-rtslib-fb python3-semantic-version python3-sqlalchemy-utils python3-stevedore python3-swiftclient python3-taskflow python3-testscenarios python3-tooz python3-troveclient python3-uritemplate python3-vitrageclient python3-voluptuous python3-warlock python3-websockify python3-wrapt python3-wsme python3-yappi python3-yaql python3-zaqarclient python3-zunclient websockify"
;;
*)
CTRL_DEPENDS="openstack-pkg-tools alembic novnc os-brick-common python3-alembic python3-amqp python3-aodhclient python3-automaton python3-barbicanclient python3-binary-memcached python3-blazarclient python3-boto3 python3-botocore python3-cachetools python3-calmjs python3-castellan python3-cffi python3-cffi-backend python3-cinderclient python3-click python3-cliff python3-cloudkittyclient python3-cmd2 python3-croniter python3-cryptography python3-cursive python3-ddt python3-debtcollector python3-defusedxml python3-designateclient python3-django python3-django-appconf python3-django-compressor python3-django-debreach python3-django-pyscss python3-docker python3-dogpile.cache python3-elementpath python3-enmerkar python3-etcd3gw python3-eventlet python3-falcon python3-fasteners python3-fixtures python3-flask python3-flask-restful python3-futurist python3-glanceclient python3-gnocchiclient python3-greenlet python3-heatclient python3-idna python3-imagesize python3-importlib-metadata python3-influxdb python3-ironicclient python3-iso8601 python3-itsdangerous python3-jinja2 python3-json-pointer python3-jsonpatch python3-jsonschema python3-jwcrypto python3-jwt python3-kazoo python3-keyring python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-kombu python3-ldappool python3-lxml python3-magnumclient python3-manilaclient python3-markupsafe python3-migrate python3-mistralclient python3-monasca-statsd python3-monascaclient python3-monotonic python3-msgpack python3-munch python3-mypy python3-netaddr python3-neutronclient python3-novaclient python3-novnc python3-oauth2client python3-oauthlib python3-octaviaclient python3-openstackclient python3-openstacksdk python3-os-brick python3-os-ken python3-os-resource-classes python3-os-traits python3-os-vif python3-os-win python3-osc-lib python3-osc-placement python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.i18n python3-oslo.log python3-oslo.messaging python3-oslo.middleware python3-oslo.policy python3-oslo.privsep python3-oslo.reports python3-oslo.rootwrap python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-oslo.versionedobjects python3-oslo.vmware python3-osprofiler python3-ovsdbapp python3-paramiko python3-pbr python3-pecan python3-pkg-resources python3-psutil python3-pure-sasl python3-pymemcache python3-pymysql python3-pyparsing python3-pyroute2 python3-pysaml2 python3-pyscss python3-pytimeparse python3-q-text-as-data python3-rcssmin python3-responses python3-rfc3986 python3-rjsmin python3-rtslib-fb python3-saharaclient python3-semantic-version python3-senlinclient python3-setuptools python3-simplejson python3-sphinx python3-sqlalchemy python3-sqlalchemy-utils python3-stevedore python3-swiftclient python3-taskflow python3-tenacity python3-testresources python3-testtools python3-tooz python3-troveclient python3-uhashring python3-ujson python3-uritemplate python3-vitrageclient python3-voluptuous python3-warlock python3-wcwidth python3-websocket python3-websockify python3-webtest python3-werkzeug python3-wrapt python3-wsme python3-yaml python3-yappi python3-yaql python3-zake python3-zaqarclient python3-zunclient sphinx-common spice-html5 websockify"
;;
esac
upgrade_package_list_on_host ${HOST} "${CTRL_DEPENDS}"
}
msg_upgrade_depends () {
local HOST HOST_IP HOST_NAME
HOST=${1}
HOST_IP=$(echo ${HOST} | cut -d, -f1)
HOST_NAME=$(echo ${HOST} | cut -d, -f2)
green_echo "-> Installing depends on ${HOST_NAME}"
case "${TO_OS_RELEASE}" in
"wallaby")
MSG_DEPENDS="python3-cinderclient python3-cliff python3-cloudkittyclient python3-cmd2 python3-dogpile.cache python3-eventlet python3-glanceclient python3-gnocchiclient python3-influxdb python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-monascaclient python3-msgpack python3-netaddr python3-neutronclient python3-novaclient python3-openstackclient python3-openstacksdk python3-osc-lib python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.messaging python3-oslo.middleware python3-oslo.policy python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-pbr python3-pymemcache python3-pymysql python3-stevedore python3-swiftclient python3-tenacity python3-tooz python3-voluptuous"
;;
"xena")
MSG_DEPENDS="alembic libjs-sphinxdoc python3-alembic python3-cinderclient python3-cliff python3-cloudkittyclient python3-debtcollector python3-eventlet python3-flask python3-flask-restful python3-futurist python3-glanceclient python3-greenlet python3-idna python3-itsdangerous python3-jinja2 python3-jsonpatch python3-jsonschema python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-markupsafe python3-migrate python3-monascaclient python3-monotonic python3-neutronclient python3-novaclient python3-openstackclient python3-openstacksdk python3-osc-lib python3-oslo.cache python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.i18n python3-oslo.log python3-oslo.messaging python3-oslo.middleware python3-oslo.policy python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-pbr python3-pecan python3-q-text-as-data python3-rfc3986 python3-sqlalchemy python3-sqlalchemy-utils python3-stevedore python3-swiftclient python3-testresources python3-testtools python3-tooz python3-uhashring python3-werkzeug python3-wrapt python3-wsme python3-yappi"
;;
"yoga")
MSG_DEPENDS="alembic python3-alembic python3-amqp python3-binary-memcached python3-boto3 python3-botocore python3-cachetools python3-cffi python3-cffi-backend python3-cinderclient python3-click python3-cliff python3-cloudkittyclient python3-cmd2 python3-cryptography python3-debtcollector python3-dogpile.cache python3-etcd3gw python3-eventlet python3-fasteners python3-glanceclient python3-gnocchiclient python3-greenlet python3-idna python3-importlib-metadata python3-iso8601 python3-jinja2 python3-json-pointer python3-jwt python3-kazoo python3-keyring python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-kombu python3-lxml python3-monascaclient python3-monotonic python3-msgpack python3-neutronclient python3-novaclient python3-oauthlib python3-openstackclient python3-openstacksdk python3-os-client-config python3-osc-lib python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.log python3-oslo.messaging python3-oslo.metrics python3-oslo.middleware python3-oslo.policy python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-pbr python3-pecan python3-pkg-resources python3-pure-sasl python3-pyparsing python3-pytimeparse python3-setuptools python3-simplejson python3-sqlalchemy-utils python3-stevedore python3-swiftclient python3-tooz python3-ujson python3-voluptuous python3-wcwidth python3-wrapt python3-yaml python3-zake"
;;
"zed")
MSG_DEPENDS="alembic python3-alembic python3-cinderclient python3-cliff python3-cloudkittyclient python3-etcd3gw python3-eventlet python3-fixtures python3-flask python3-futurist python3-glanceclient python3-json-pointer python3-jsonschema python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-monascaclient python3-msgpack python3-munch python3-neutronclient python3-novaclient python3-openstackclient python3-openstacksdk python3-osc-lib python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.i18n python3-oslo.log python3-oslo.messaging python3-oslo.metrics python3-oslo.middleware python3-oslo.policy python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-pbr python3-pymemcache python3-q-text-as-data python3-sqlalchemy python3-stevedore python3-swiftclient python3-testresources python3-testtools python3-tooz python3-uhashring python3-warlock python3-webtest python3-werkzeug python3-wrapt python3-wsme python3-yappi"
;;
"antelope")
MSG_DEPENDS="pycadf-common python3-cinderclient python3-cliff python3-cloudkittyclient python3-debtcollector python3-etcd3gw python3-fixtures python3-futurist python3-glanceclient python3-gnocchiclient python3-infinity python3-jsonschema python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-monascaclient python3-msgpack python3-neutronclient python3-novaclient python3-openstackclient python3-openstacksdk python3-os-client-config python3-os-service-types python3-osc-lib python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.i18n python3-oslo.log python3-oslo.messaging python3-oslo.metrics python3-oslo.middleware python3-oslo.policy python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-pbr python3-pecan python3-pure-sasl python3-pycadf python3-pymemcache python3-pytimeparse python3-q-text-as-data python3-rfc3986 python3-sqlalchemy-utils python3-stevedore python3-swiftclient python3-testscenarios python3-testtools python3-tooz python3-uhashring python3-warlock python3-wrapt python3-wsme python3-yappi python3-zake"
;;
"bobcat")
MSG_DEPENDS="pycadf-common python3-binary-memcached python3-cinderclient python3-cliff python3-cloudkittyclient python3-etcd3gw python3-eventlet python3-flask python3-glanceclient python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-monascaclient python3-neutronclient python3-novaclient python3-openstackclient python3-openstacksdk python3-osc-lib python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.i18n python3-oslo.log python3-oslo.messaging python3-oslo.metrics python3-oslo.middleware python3-oslo.policy python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-pbr python3-pecan python3-psycopg2 python3-pure-sasl python3-pycadf python3-pymemcache python3-requests python3-rfc3986 python3-sqlalchemy-utils python3-stevedore python3-swiftclient python3-testresources python3-testtools python3-tooz python3-typepy python3-uhashring python3-urllib3 python3-wrapt python3-yappi"
;;
"caracal")
MSG_DEPENDS="python-pastedeploy-tpl python3-amqp python3-attr python3-binary-memcached python3-boto3 python3-botocore python3-chardet python3-cinderclient python3-cliff python3-cloudkittyclient python3-debtcollector python3-dogpile.cache python3-etcd3gw python3-eventlet python3-fixtures python3-futurist python3-glanceclient python3-gnocchiclient python3-greenlet python3-json-pointer python3-keyring python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-lxml python3-memcache python3-monascaclient python3-munch python3-netaddr python3-neutronclient python3-novaclient python3-openstackclient python3-openstacksdk python3-osc-lib python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.i18n python3-oslo.log python3-oslo.messaging python3-oslo.metrics python3-oslo.middleware python3-oslo.policy python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-packaging python3-pastedeploy python3-pastedeploy-tpl python3-pbr python3-pecan python3-pkg-resources python3-pymemcache python3-pymysql python3-q-text-as-data python3-setuptools python3-sqlalchemy python3-sqlalchemy-utils python3-stevedore python3-swiftclient python3-testresources python3-testtools python3-tooz python3-urllib3 python3-warlock python3-wsme python3-zake"
;;
"dalmatian")
MSG_DEPENDS="python3-cinderclient python3-cliff python3-cloudkittyclient python3-dogpile.cache python3-eventlet python3-glanceclient python3-gnocchiclient python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-lxml python3-more-itertools python3-neutronclient python3-novaclient python3-openstackclient python3-openstacksdk python3-os-service-types python3-osc-lib python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.i18n python3-oslo.log python3-oslo.messaging python3-oslo.metrics python3-oslo.middleware python3-oslo.policy python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-paste python3-pbr python3-pecan python3-platformdirs python3-pyparsing python3-simplejson python3-sqlalchemy python3-sqlalchemy-utils python3-stevedore python3-swiftclient python3-testtools python3-tooz python3-voluptuous python3-werkzeug python3-wsme"
;;
"epoxy")
MSG_DEPENDS="pycadf-common python3-blinker python3-cinderclient python3-cliff python3-cloudkitty python3-cloudkittyclient python3-debtcollector python3-flask python3-futurist python3-glanceclient python3-gnocchiclient python3-iso8601 python3-itsdangerous python3-jaraco.functools python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-netaddr python3-neutronclient python3-novaclient python3-openstackclient python3-openstacksdk python3-osc-lib python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.i18n python3-oslo.log python3-oslo.messaging python3-oslo.metrics python3-oslo.middleware python3-oslo.policy python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-packaging python3-pbr python3-pkg-resources python3-prometheus-client python3-pycadf python3-requests python3-setuptools python3-stevedore python3-swiftclient python3-testscenarios python3-testtools python3-typing-extensions python3-urllib3 python3-werkzeug python3-yaml"
;;
"flamingo")
MSG_DEPENDS="alembic python3-alembic python3-binary-memcached python3-cinderclient python3-cliff python3-cloudkittyclient python3-eventlet python3-fixtures python3-futurist python3-glanceclient python3-gnocchiclient python3-jsonschema python3-kazoo python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-mako python3-markupsafe python3-msgpack python3-neutronclient python3-openstackclient python3-openstacksdk python3-os-client-config python3-os-service-types python3-osc-lib python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.i18n python3-oslo.log python3-oslo.messaging python3-oslo.metrics python3-oslo.middleware python3-oslo.policy python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-pbr python3-pecan python3-sqlalchemy-utils python3-stevedore python3-swiftclient python3-testscenarios python3-tooz python3-voluptuous python3-warlock python3-wrapt python3-wsme python3-yappi"
;;
*)
MSG_DEPENDS="alembic python3-alembic python3-amqp python3-binary-memcached python3-boto3 python3-botocore python3-cachetools python3-cffi python3-cffi-backend python3-cinderclient python3-click python3-cliff python3-cloudkittyclient python3-cmd2 python3-cryptography python3-debtcollector python3-dogpile.cache python3-etcd3gw python3-eventlet python3-fasteners python3-fixtures python3-flask python3-flask-restful python3-futurist python3-glanceclient python3-gnocchiclient python3-greenlet python3-idna python3-importlib-metadata python3-influxdb python3-iso8601 python3-itsdangerous python3-jinja2 python3-json-pointer python3-jsonpatch python3-jsonschema python3-jwt python3-kazoo python3-keyring python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-kombu python3-lxml python3-markupsafe python3-migrate python3-monascaclient python3-monotonic python3-msgpack python3-munch python3-netaddr python3-neutronclient python3-novaclient python3-oauthlib python3-openstackclient python3-openstacksdk python3-os-client-config python3-osc-lib python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.i18n python3-oslo.log python3-oslo.messaging python3-oslo.middleware python3-oslo.policy python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-pbr python3-pecan python3-pkg-resources python3-pure-sasl python3-pymemcache python3-pymysql python3-pyparsing python3-pytimeparse python3-q-text-as-data python3-rfc3986 python3-setuptools python3-simplejson python3-sqlalchemy python3-sqlalchemy-utils python3-stevedore python3-swiftclient python3-tenacity python3-testresources python3-testtools python3-tooz python3-uhashring python3-ujson python3-voluptuous python3-warlock python3-wcwidth python3-webtest python3-werkzeug python3-wrapt python3-wsme python3-yaml python3-yappi python3-zake"
;;
esac
upgrade_package_list_on_host ${HOST} "${MSG_DEPENDS}"
}
comp_upgrade_depends () {
local HOST HOST_IP HOST_NAME
HOST=${1}
HOST_IP=$(echo ${HOST} | cut -d, -f1)
HOST_NAME=$(echo ${HOST} | cut -d, -f2)
green_echo "-> Installing depends on ${HOST_NAME}"
case "${TO_OS_RELEASE}" in
"wallaby")
COMP_DEPENDS="os-brick-common python3-automaton python3-barbicanclient python3-castellan python3-cinderclient python3-cliff python3-cmd2 python3-designateclient python3-dogpile.cache python3-eventlet python3-glanceclient python3-gnocchiclient python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-monascaclient python3-msgpack python3-netaddr python3-neutronclient python3-novaclient python3-oauth2client python3-openstackclient python3-openstacksdk python3-os-brick python3-os-ken python3-os-traits python3-os-vif python3-os-win python3-osc-lib python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.messaging python3-oslo.middleware python3-oslo.policy python3-oslo.privsep python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-oslo.versionedobjects python3-oslo.vmware python3-ovsdbapp python3-pbr python3-pymemcache python3-pymysql python3-pyroute2 python3-rtslib-fb python3-stevedore python3-swiftclient python3-taskflow python3-tenacity python3-tooz python3-voluptuous python3-zaqarclient python3-colorama python3-pyroute2.core python3-pyroute2.ethtool python3-pyroute2.ipdb python3-pyroute2.ipset python3-pyroute2.ndb python3-pyroute2.nftables python3-pyroute2.nslink python3-pyroute2.protocols"
;;
"xena")
COMP_DEPENDS="alembic libjs-sphinxdoc os-brick-common python3-alembic python3-automaton python3-barbicanclient python3-castellan python3-cinderclient python3-cliff python3-ddt python3-debtcollector python3-designateclient python3-eventlet python3-futurist python3-glanceclient python3-greenlet python3-idna python3-jinja2 python3-jsonpatch python3-jsonschema python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-markupsafe python3-migrate python3-monascaclient python3-monotonic python3-neutronclient python3-novaclient python3-openstackclient python3-openstacksdk python3-os-brick python3-os-ken python3-os-resource-classes python3-os-traits python3-os-vif python3-os-win python3-osc-lib python3-oslo.cache python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.i18n python3-oslo.log python3-oslo.messaging python3-oslo.middleware python3-oslo.policy python3-oslo.privsep python3-oslo.reports python3-oslo.rootwrap python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-oslo.versionedobjects python3-oslo.vmware python3-osprofiler python3-ovsdbapp python3-pbr python3-pecan python3-pypowervm python3-pyroute2 python3-pyroute2.ethtool python3-pyroute2.ipdb python3-pyroute2.ipset python3-pyroute2.ndb python3-pyroute2.nftables python3-pyroute2.nslink python3-pyroute2.protocols python3-q-text-as-data python3-rfc3986 python3-sqlalchemy python3-stevedore python3-swiftclient python3-taskflow python3-testresources python3-testtools python3-tooz python3-uhashring python3-websockify python3-werkzeug python3-wrapt python3-yappi python3-zaqarclient"
;;
"yoga")
COMP_DEPENDS="alembic os-brick-common python3-alembic python3-amqp python3-automaton python3-barbicanclient python3-binary-memcached python3-boto3 python3-botocore python3-cachetools python3-castellan python3-cffi python3-cffi-backend python3-cinderclient python3-cliff python3-cmd2 python3-cryptography python3-ddt python3-debtcollector python3-designateclient python3-dogpile.cache python3-etcd3gw python3-eventlet python3-fasteners python3-glanceclient python3-gnocchiclient python3-greenlet python3-idna python3-importlib-metadata python3-iso8601 python3-jinja2 python3-json-pointer python3-jwt python3-kazoo python3-keyring python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-kombu python3-lxml python3-monascaclient python3-monotonic python3-msgpack python3-neutronclient python3-novaclient python3-oauth2client python3-oauthlib python3-openstackclient python3-openstacksdk python3-os-brick python3-os-client-config python3-os-ken python3-os-traits python3-os-vif python3-os-win python3-osc-lib python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.log python3-oslo.messaging python3-oslo.metrics python3-oslo.middleware python3-oslo.policy python3-oslo.privsep python3-oslo.reports python3-oslo.rootwrap python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-oslo.versionedobjects python3-oslo.vmware python3-ovsdbapp python3-paramiko python3-pbr python3-pecan python3-pkg-resources python3-psutil python3-pure-sasl python3-pyparsing python3-pypowervm python3-pyroute2 python3-pytimeparse python3-rtslib-fb python3-setuptools python3-simplejson python3-stevedore python3-swiftclient python3-taskflow python3-tooz python3-ujson python3-uritemplate python3-voluptuous python3-wcwidth python3-wrapt python3-yaml python3-zake python3-zaqarclient"
;;
"zed")
COMP_DEPENDS="alembic os-brick-common python3-alembic python3-automaton python3-barbicanclient python3-castellan python3-ceilometer python3-cinderclient python3-cliff python3-cursive python3-designateclient python3-etcd3gw python3-eventlet python3-fixtures python3-futurist python3-glanceclient python3-json-pointer python3-jsonschema python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-monascaclient python3-msgpack python3-munch python3-mypy python3-neutronclient python3-novaclient python3-oauth2client python3-openstackclient python3-openstacksdk python3-os-brick python3-os-ken python3-os-traits python3-os-vif python3-os-win python3-osc-lib python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.i18n python3-oslo.limit python3-oslo.log python3-oslo.messaging python3-oslo.metrics python3-oslo.middleware python3-oslo.policy python3-oslo.privsep python3-oslo.reports python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-oslo.versionedobjects python3-oslo.vmware python3-osprofiler python3-ovsdbapp python3-pbr python3-pymemcache python3-q-text-as-data python3-rtslib-fb python3-sqlalchemy python3-stevedore python3-swiftclient python3-taskflow python3-testresources python3-testtools python3-tooz python3-uhashring python3-warlock python3-websockify python3-webtest python3-werkzeug python3-wrapt python3-yappi python3-zaqarclient"
;;
"antelope")
COMP_DEPENDS="os-brick-common pycadf-common python3-automaton python3-barbicanclient python3-castellan python3-cinderclient python3-cliff python3-cursive python3-debtcollector python3-designateclient python3-etcd3gw python3-fixtures python3-futurist python3-glanceclient python3-gnocchiclient python3-jsonschema python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-monascaclient python3-msgpack python3-neutron-lib python3-neutronclient python3-novaclient python3-oauth2client python3-openstackclient python3-openstacksdk python3-os-brick python3-os-client-config python3-os-ken python3-os-resource-classes python3-os-service-types python3-os-traits python3-os-vif python3-os-win python3-osc-lib python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.i18n python3-oslo.limit python3-oslo.log python3-oslo.messaging python3-oslo.metrics python3-oslo.middleware python3-oslo.policy python3-oslo.privsep python3-oslo.reports python3-oslo.rootwrap python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-oslo.versionedobjects python3-oslo.vmware python3-osprofiler python3-ovsdbapp python3-pbr python3-pecan python3-pure-sasl python3-pycadf python3-pymemcache python3-pyroute2 python3-pytimeparse python3-q-text-as-data python3-rfc3986 python3-stevedore python3-swiftclient python3-taskflow python3-testscenarios python3-testtools python3-tooz python3-uhashring python3-uritemplatepython3-warlock python3-wrapt python3-yappi python3-zake python3-zaqarclient"
;;
"bobcat")
COMP_DEPENDS="os-brick-common pycadf-common python3-automaton python3-barbicanclient python3-binary-memcached python3-castellan python3-cinderclient python3-cliff python3-designateclient python3-etcd3gw python3-eventlet python3-glanceclient python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-monascaclient python3-mypy python3-neutron-lib python3-neutronclient python3-novaclient python3-openstackclient python3-openstacksdk python3-os-brick python3-os-ken python3-os-traits python3-os-vif python3-osc-lib python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.i18n python3-oslo.limit python3-oslo.log python3-oslo.messaging python3-oslo.metrics python3-oslo.middleware python3-oslo.policy python3-oslo.privsep python3-oslo.reports python3-oslo.rootwrap python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-oslo.versionedobjects python3-oslo.vmware python3-ovsdbapp python3-pbr python3-pecan python3-psycopg2 python3-pure-sasl python3-pycadf python3-pymemcache python3-pyroute2 python3-requests python3-rfc3986 python3-stevedore python3-swiftclient python3-taskflow python3-testresources python3-testtools python3-tooz python3-uhashring python3-urllib3 python3-wrapt python3-yappi python3-zaqarclient"
;;
"caracal")
COMP_DEPENDS="os-brick-common python-pastedeploy-tpl python3-amqp python3-attr python3-barbicanclient python3-binary-memcached python3-boto3 python3-botocore python3-castellan python3-chardet python3-cinderclient python3-cliff python3-cursive python3-debtcollector python3-designateclient python3-dogpile.cache python3-etcd3gw python3-eventlet python3-fixtures python3-futurist python3-glanceclient python3-gnocchiclient python3-greenlet python3-json-pointer python3-keyring python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-libvirt python3-lxml python3-memcache python3-monascaclient python3-munch python3-mypy python3-netaddr python3-networking-l2gw python3-networkx python3-neutron-lib python3-neutronclient python3-novaclient python3-openstackclient python3-openstacksdk python3-os-brick python3-os-ken python3-os-vif python3-os-win python3-osc-lib python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.i18n python3-oslo.limit python3-oslo.log python3-oslo.messaging python3-oslo.metrics python3-oslo.middleware python3-oslo.policy python3-oslo.privsep python3-oslo.reports python3-oslo.rootwrap python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-oslo.versionedobjects python3-oslo.vmware python3-ovsdbapp python3-packaging python3-pastedeploy python3-pastedeploy-tpl python3-pbr python3-pecan python3-pkg-resources python3-psutil python3-pyasn1 python3-pyasn1-modules python3-pydot python3-pymemcache python3-pymysql python3-q-text-as-data python3-rtslib-fb python3-setuptools python3-sqlalchemy python3-stevedore python3-swiftclient python3-taskflow python3-testresources python3-testtools python3-tooz python3-typing-extensions python3-urllib3 python3-warlock python3-websockify python3-zake python3-zaqarclient"
;;
"dalmatian")
COMP_DEPENDS="ceilometer-instance-poller os-brick-common python3-barbicanclient python3-castellan python3-cinderclient python3-cliff python3-ddt python3-designateclient python3-dogpile.cache python3-eventlet python3-glanceclient python3-gnocchiclient python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-lxml python3-more-itertools python3-neutron-dynamic-routing python3-neutron-lib python3-neutronclient python3-novaclient python3-openstackclient python3-openstacksdk python3-os-brick python3-os-ken python3-os-service-types python3-os-traits python3-os-vif python3-os-win python3-osc-lib python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.i18n python3-oslo.limit python3-oslo.log python3-oslo.messaging python3-oslo.metrics python3-oslo.middleware python3-oslo.policy python3-oslo.privsep python3-oslo.reports python3-oslo.rootwrap python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-oslo.versionedobjects python3-oslo.vmware python3-osprofiler python3-ovsdbapp python3-paramiko python3-paste python3-pbr python3-pecan python3-platformdirs python3-pyparsing python3-simplejson python3-sqlalchemy python3-stevedore python3-swiftclient python3-taskflow python3-testtools python3-tooz python3-uritemplate python3-voluptuous python3-werkzeug python3-zaqarclient"
;;
"epoxy")
COMP_DEPENDS="os-brick-common pycadf-common python3-barbicanclient python3-blinker python3-castellan python3-cinderclient python3-cliff python3-debtcollector python3-designateclient python3-futurist python3-glanceclient python3-gnocchiclient python3-httplib2 python3-iso8601 python3-jaraco.functools python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-netaddr python3-neutron-dynamic-routing python3-neutron-lib python3-neutronclient python3-novaclient python3-openstackclient python3-openstacksdk python3-os-brick python3-os-ken python3-os-traits python3-os-vif python3-osc-lib python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.i18n python3-oslo.limit python3-oslo.log python3-oslo.messaging python3-oslo.metrics python3-oslo.middleware python3-oslo.policy python3-oslo.privsep python3-oslo.reports python3-oslo.rootwrap python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-oslo.versionedobjects python3-oslo.vmware python3-osprofiler python3-ovsdbapp python3-packaging python3-pbr python3-pkg-resources python3-prometheus-client python3-psutil python3-pycadf python3-requests python3-setuptools python3-stevedore python3-swiftclient python3-taskflow python3-testscenarios python3-testtools python3-typing-extensions python3-urllib3 python3-werkzeug python3-yaml python3-zaqarclient"
;;
"flamingo")
COMP_DEPENDS="alembic os-brick-common python3-alembic python3-barbicanclient python3-binary-memcached python3-castellan python3-ceilometer python3-cinderclient python3-cliff python3-designateclient python3-eventlet python3-fixtures python3-futurist python3-glanceclient python3-gnocchiclient python3-google-auth python3-jsonschema python3-kazoo python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-mako python3-markupsafe python3-msgpack python3-networkx python3-neutron-lib python3-neutronclient python3-novaclient python3-openstackclient python3-openstacksdk python3-os-brick python3-os-client-config python3-os-ken python3-os-service-types python3-os-traits python3-os-vif python3-osc-lib python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.i18n python3-oslo.limit python3-oslo.log python3-oslo.messaging python3-oslo.metrics python3-oslo.middleware python3-oslo.policy python3-oslo.privsep python3-oslo.reports python3-oslo.rootwrap python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-oslo.versionedobjects python3-oslo.vmware python3-osprofiler python3-ovsdbapp python3-pbr python3-pecan python3-pyroute2 python3-retrying python3-rtslib-fb python3-stevedore python3-swiftclient python3-taskflow python3-testscenarios python3-tooz python3-uritemplate python3-voluptuous python3-warlock python3-websockify python3-wrapt python3-yappi python3-zaqarclient"
;;
*)
COMP_DEPENDS="alembic os-brick-common python3-alembic python3-amqp python3-automaton python3-barbicanclient python3-binary-memcached python3-cachetools python3-castellan python3-cffi python3-cffi-backend python3-cinderclient python3-cliff python3-cmd2 python3-cryptography python3-cursive python3-ddt python3-debtcollector python3-designateclient python3-dogpile.cache python3-etcd3gw python3-eventlet python3-fasteners python3-fixtures python3-futurist python3-glanceclient python3-gnocchiclient python3-greenlet python3-idna python3-importlib-metadata python3-iso8601 python3-jinja2 python3-json-pointer python3-jsonpatch python3-jsonschema python3-jwt python3-kazoo python3-keyring python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-kombu python3-lxml python3-markupsafe python3-migrate python3-monascaclient python3-monotonic python3-msgpack python3-munch python3-mypy python3-netaddr python3-neutronclient python3-novaclient python3-oauth2client python3-oauthlib python3-openstackclient python3-openstacksdk python3-os-brick python3-os-client-config python3-os-ken python3-os-resource-classes python3-os-traits python3-os-vif python3-os-win python3-osc-lib python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.i18n python3-oslo.log python3-oslo.messaging python3-oslo.middleware python3-oslo.policy python3-oslo.privsep python3-oslo.reports python3-oslo.rootwrap python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-oslo.versionedobjects python3-oslo.vmware python3-osprofiler python3-ovsdbapp python3-paramiko python3-pbr python3-pecan python3-pkg-resources python3-psutil python3-pure-sasl python3-pymemcache python3-pymysql python3-pyparsing python3-pyroute2 python3-pytimeparse python3-rfc3986 python3-rtslib-fb python3-setuptools python3-simplejson python3-sqlalchemy python3-stevedore python3-swiftclient python3-taskflow python3-tenacity python3-testresources python3-testtools python3-tooz python3-uhashring python3-ujson python3-uritemplate python3-voluptuous python3-warlock python3-wcwidth python3-websockify python3-webtest python3-werkzeug python3-wrapt python3-yaml python3-yappi python3-zake"
;;
esac
upgrade_package_list_on_host ${HOST} "${COMP_DEPENDS}"
}
net_upgrade_depends () {
local HOST HOST_IP HOST_NAME
HOST=${1}
HOST_IP=$(echo ${HOST} | cut -d, -f1)
HOST_NAME=$(echo ${HOST} | cut -d, -f2)
green_echo "-> Installing depends on ${HOST_NAME}"
case "${TO_OS_RELEASE}" in
"wallaby")
NET_DEPENDS="python3-cinderclient python3-cliff python3-cmd2 python3-designateclient python3-dogpile.cache python3-eventlet python3-glanceclient python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-msgpack python3-netaddr python3-neutron-lib python3-neutronclient python3-novaclient python3-openstackclient python3-openstacksdk python3-os-ken python3-os-traits python3-os-vif python3-osc-lib python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.messaging python3-oslo.middleware python3-oslo.policy python3-oslo.privsep python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-oslo.versionedobjects python3-ovsdbapp python3-pbr python3-pymemcache python3-pymysql python3-pyroute2 python3-stevedore python3-tenacity python3-tooz python3-voluptuous python3-colorama python3-pyroute2.core python3-pyroute2.ethtool python3-pyroute2.ipdb python3-pyroute2.ipset python3-pyroute2.ndb python3-pyroute2.nftables python3-pyroute2.nslink python3-pyroute2.protocols"
;;
"xena")
NET_DEPENDS="alembic libjs-sphinxdoc python3-alembic python3-cinderclient python3-cliff python3-debtcollector python3-designateclient python3-eventlet python3-futurist python3-glanceclient python3-greenlet python3-idna python3-jinja2 python3-jsonpatch python3-jsonschema python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-markupsafe python3-migrate python3-monotonic python3-neutronclient python3-novaclient python3-openstackclient python3-openstacksdk python3-os-ken python3-os-traits python3-os-vif python3-osc-lib python3-oslo.cache python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.i18n python3-oslo.log python3-oslo.messaging python3-oslo.middleware python3-oslo.policy python3-oslo.privsep python3-oslo.reports python3-oslo.rootwrap python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-oslo.versionedobjects python3-osprofiler python3-ovsdbapp python3-pbr python3-pecan python3-pyroute2 python3-pyroute2.ethtool python3-pyroute2.ipdb python3-pyroute2.ipset python3-pyroute2.ndb python3-pyroute2.nftables python3-pyroute2.nslink python3-pyroute2.protocols python3-q-text-as-data python3-rfc3986 python3-sqlalchemy python3-stevedore python3-testresources python3-testtools python3-tooz python3-uhashring python3-wrapt python3-yappi"
;;
"yoga")
NET_DEPENDS="alembic python3-alembic python3-amqp python3-binary-memcached python3-cachetools python3-cffi python3-cffi-backend python3-cinderclient python3-cliff python3-cmd2 python3-cryptography python3-debtcollector python3-designateclient python3-dogpile.cache python3-etcd3gw python3-eventlet python3-fasteners python3-glanceclient python3-greenlet python3-idna python3-importlib-metadata python3-iso8601 python3-jinja2 python3-json-pointer python3-jwt python3-kazoo python3-keyring python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-kombu python3-lxml python3-monotonic python3-msgpack python3-neutronclient python3-novaclient python3-oauthlib python3-openstackclient python3-openstacksdk python3-os-client-config python3-os-ken python3-os-traits python3-os-vif python3-osc-lib python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.log python3-oslo.messaging python3-oslo.metrics python3-oslo.middleware python3-oslo.policy python3-oslo.privsep python3-oslo.reports python3-oslo.rootwrap python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-oslo.versionedobjects python3-ovsdbapp python3-paramiko python3-pbr python3-pecan python3-pkg-resources python3-psutil python3-pure-sasl python3-pyparsing python3-pyroute2 python3-pytimeparse python3-setuptools python3-simplejson python3-stevedore python3-tooz python3-voluptuous python3-wcwidth python3-wrapt python3-yaml python3-zake"
;;
"zed")
NET_DEPENDS="alembic python3-alembic python3-cinderclient python3-cliff python3-designateclient python3-etcd3gw python3-eventlet python3-fixtures python3-futurist python3-glanceclient python3-json-pointer python3-jsonschema python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-msgpack python3-munch python3-neutronclient python3-novaclient python3-openstackclient python3-openstacksdk python3-os-ken python3-os-traits python3-os-vif python3-osc-lib python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.i18n python3-oslo.log python3-oslo.messaging python3-oslo.metrics python3-oslo.middleware python3-oslo.policy python3-oslo.privsep python3-oslo.reports python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-oslo.versionedobjects python3-osprofiler python3-ovsdbapp python3-pbr python3-pymemcache python3-q-text-as-data python3-sqlalchemy python3-stevedore python3-testresources python3-testtools python3-tooz python3-uhashring python3-warlock python3-webtest python3-wrapt python3-yappi"
;;
"antelope")
NET_DEPENDS="pycadf-common python3-cinderclient python3-cliff python3-debtcollector python3-designateclient python3-etcd3gw python3-fixtures python3-futurist python3-glanceclient python3-jsonschema python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-msgpack python3-neutron-lib python3-neutronclient python3-novaclient python3-openstackclient python3-openstacksdk python3-os-client-config python3-os-ken python3-os-resource-classes python3-os-service-types python3-os-traits python3-os-vif python3-osc-lib python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.i18n python3-oslo.log python3-oslo.messaging python3-oslo.metrics python3-oslo.middleware python3-oslo.policy python3-oslo.privsep python3-oslo.reports python3-oslo.rootwrap python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-oslo.versionedobjects python3-osprofiler python3-ovsdbapp python3-pbr python3-pecan python3-pure-sasl python3-pycadf python3-pymemcache python3-pyroute2 python3-pytimeparse python3-q-text-as-data python3-rfc3986 python3-stevedore python3-testscenarios python3-testtools python3-tooz python3-uhashring python3-warlock python3-wrapt python3-yappi python3-zake"
;;
"bobcat")
NET_DEPENDS="pycadf-common python3-binary-memcached python3-cinderclient python3-cliff python3-designateclient python3-etcd3gw python3-eventlet python3-glanceclient python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-neutron-lib python3-neutronclient python3-novaclient python3-openstackclient python3-openstacksdk python3-os-ken python3-os-traits python3-os-vif python3-osc-lib python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.i18n python3-oslo.log python3-oslo.messaging python3-oslo.metrics python3-oslo.middleware python3-oslo.policy python3-oslo.privsep python3-oslo.reports python3-oslo.rootwrap python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-oslo.versionedobjects python3-ovsdbapp python3-pbr python3-pecan python3-psycopg2 python3-pure-sasl python3-pycadf python3-pymemcache python3-pyroute2 python3-requests python3-rfc3986 python3-stevedore python3-testresources python3-testtools python3-tooz python3-uhashring python3-urllib3 python3-wrapt python3-yappi"
;;
"caracal")
NET_DEPENDS="python-pastedeploy-tpl python3-amqp python3-attr python3-binary-memcached python3-chardet python3-cinderclient python3-cliff python3-debtcollector python3-designateclient python3-dogpile.cache python3-etcd3gw python3-eventlet python3-fixtures python3-futurist python3-glanceclient python3-greenlet python3-json-pointer python3-keyring python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-lxml python3-memcache python3-munch python3-netaddr python3-neutron-lib python3-neutronclient python3-novaclient python3-openstackclient python3-openstacksdk python3-os-ken python3-os-vif python3-osc-lib python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.i18n python3-oslo.log python3-oslo.messaging python3-oslo.metrics python3-oslo.middleware python3-oslo.policy python3-oslo.privsep python3-oslo.reports python3-oslo.rootwrap python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-oslo.versionedobjects python3-ovsdbapp python3-packaging python3-pastedeploy python3-pastedeploy-tpl python3-pbr python3-pecan python3-pkg-resources python3-psutil python3-pymemcache python3-pymysql python3-q-text-as-data python3-setuptools python3-sqlalchemy python3-stevedore python3-testresources python3-testtools python3-tooz python3-urllib3 python3-warlock python3-zake"
;;
"dalmatian")
NET_DEPENDS="neutron-dynamic-routing-common python3-cinderclient python3-cliff python3-designateclient python3-dogpile.cache python3-eventlet python3-glanceclient python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-lxml python3-more-itertools python3-neutron-lib python3-neutronclient python3-novaclient python3-openstackclient python3-openstacksdk python3-os-ken python3-os-service-types python3-os-traits python3-os-vif python3-osc-lib python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.i18n python3-oslo.log python3-oslo.messaging python3-oslo.metrics python3-oslo.middleware python3-oslo.policy python3-oslo.privsep python3-oslo.reports python3-oslo.rootwrap python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-oslo.versionedobjects python3-osprofiler python3-ovsdbapp python3-paramiko python3-paste python3-pbr python3-pecan python3-platformdirs python3-pyparsing python3-simplejson python3-sqlalchemy python3-stevedore python3-testtools python3-tooz python3-voluptuous"
;;
"epoxy")
NET_DEPENDS="pycadf-common python3-blinker python3-cinderclient python3-cliff python3-debtcollector python3-designateclient python3-futurist python3-glanceclient python3-httplib2 python3-iso8601 python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-netaddr python3-neutron-lib python3-neutronclient python3-novaclient python3-openstackclient python3-openstacksdk python3-os-ken python3-os-traits python3-os-vif python3-osc-lib python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.i18n python3-oslo.log python3-oslo.messaging python3-oslo.metrics python3-oslo.middleware python3-oslo.policy python3-oslo.privsep python3-oslo.reports python3-oslo.rootwrap python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-oslo.versionedobjects python3-osprofiler python3-ovsdbapp python3-packaging python3-pbr python3-pkg-resources python3-prometheus-client python3-psutil python3-pycadf python3-requests python3-setuptools python3-stevedore python3-testscenarios python3-testtools python3-typing-extensions python3-urllib3 python3-yaml"
;;
"flamingo")
NET_DEPENDS="alembic python3-alembic python3-binary-memcached python3-cinderclient python3-cliff python3-designateclient python3-eventlet python3-fixtures python3-futurist python3-glanceclient python3-jsonschema python3-kazoo python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-mako python3-markupsafe python3-msgpack python3-neutron-lib python3-neutronclient python3-novaclient python3-openstackclient python3-openstacksdk python3-os-client-config python3-os-ken python3-os-service-types python3-os-traits python3-os-vif python3-osc-lib python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.i18n python3-oslo.log python3-oslo.messaging python3-oslo.metrics python3-oslo.middleware python3-oslo.policy python3-oslo.privsep python3-oslo.reports python3-oslo.rootwrap python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-oslo.versionedobjects python3-osprofiler python3-ovsdbapp python3-pbr python3-pecan python3-pyroute2 python3-stevedore python3-testscenarios python3-tooz python3-voluptuous python3-warlock python3-wrapt python3-yappi"
;;
*)
NET_DEPENDS="alembic libjs-sphinxdoc python3-alembic python3-amqp python3-binary-memcached python3-cachetools python3-cffi python3-cffi-backend python3-cinderclient python3-cliff python3-cmd2 python3-cryptography python3-debtcollector python3-designateclient python3-dogpile.cache python3-etcd3gw python3-eventlet python3-fasteners python3-fixtures python3-futurist python3-glanceclient python3-greenlet python3-idna python3-importlib-metadata python3-iso8601 python3-jinja2 python3-json-pointer python3-jsonpatch python3-jsonschema python3-jwt python3-kazoo python3-keyring python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-kombu python3-lxml python3-markupsafe python3-migrate python3-monotonic python3-msgpack python3-munch python3-netaddr python3-neutronclient python3-novaclient python3-oauthlib python3-openstackclient python3-openstacksdk python3-os-client-config python3-os-ken python3-os-traits python3-os-vif python3-osc-lib python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.i18n python3-oslo.log python3-oslo.messaging python3-oslo.middleware python3-oslo.policy python3-oslo.privsep python3-oslo.reports python3-oslo.rootwrap python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-oslo.versionedobjects python3-osprofiler python3-ovsdbapp python3-paramiko python3-pbr python3-pecan python3-pkg-resources python3-psutil python3-pure-sasl python3-pymemcache python3-pymysql python3-pyparsing python3-pyroute2 python3-pytimeparse python3-rfc3986 python3-setuptools python3-simplejson python3-sqlalchemy python3-stevedore python3-tenacity python3-testresources python3-testtools python3-tooz python3-uhashring python3-voluptuous python3-warlock python3-wcwidth python3-webtest python3-wrapt python3-yaml python3-yappi python3-zake"
;;
esac
upgrade_package_list_on_host ${HOST} "${NET_DEPENDS}"
}
swift_upgrade_depends () {
local HOST HOST_IP HOST_NAME
HOST=${1}
HOST_IP=$(echo ${HOST} | cut -d, -f1)
HOST_NAME=$(echo ${HOST} | cut -d, -f2)
green_echo "-> Installing depends on ${HOST_NAME}"
case "${TO_OS_RELEASE}" in
"wallaby")
SWIFT_DEPENDS="openstack-pkg-tools python3-barbicanclient python3-castellan python3-ceilometermiddleware python3-cliff python3-cmd2 python3-dogpile.cache python3-eventlet python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-msgpack python3-netaddr python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.messaging python3-oslo.middleware python3-oslo.serialization python3-oslo.service python3-oslo.utils python3-pbr python3-pymemcache python3-stevedore python3-swiftclient python3-tenacity python3-attr python3-colorama"
;;
"xena")
SWIFT_DEPENDS="libjs-sphinxdoc openstack-pkg-tools python3-barbicanclient python3-castellan python3-ceilometermiddleware python3-cliff python3-debtcollector python3-eventlet python3-futurist python3-greenlet python3-idna python3-jinja2 python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-markupsafe python3-monotonic python3-oslo.cache python3-oslo.config python3-oslo.context python3-oslo.i18n python3-oslo.log python3-oslo.messaging python3-oslo.middleware python3-oslo.serialization python3-oslo.service python3-oslo.utils python3-pbr python3-pyeclib python3-q-text-as-data python3-rfc3986 python3-sqlalchemy python3-stevedore python3-swiftclient python3-testtools python3-uhashring python3-wrapt python3-yappi"
;;
"yoga")
SWIFT_DEPENDS="python3-amqp python3-barbicanclient python3-binary-memcached python3-cachetools python3-castellan python3-ceilometermiddleware python3-cffi-backend python3-cliff python3-cmd2 python3-cryptography python3-debtcollector python3-dogpile.cache python3-eventlet python3-fasteners python3-greenlet python3-idna python3-importlib-metadata python3-iso8601 python3-jinja2 python3-jwt python3-keyring python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-kombu python3-lxml python3-monotonic python3-msgpack python3-oauthlib python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.log python3-oslo.messaging python3-oslo.metrics python3-oslo.middleware python3-oslo.serialization python3-oslo.service python3-oslo.utils python3-pbr python3-pkg-resources python3-pyparsing python3-pytimeparse python3-setuptools python3-stevedore python3-swiftclient python3-wcwidth python3-wrapt python3-yaml"
;;
"zed")
SWIFT_DEPENDS="python3-barbicanclient python3-castellan python3-ceilometermiddleware python3-cliff python3-eventlet python3-fixtures python3-futurist python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-msgpack python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.i18n python3-oslo.log python3-oslo.messaging python3-oslo.metrics python3-oslo.middleware python3-oslo.serialization python3-oslo.service python3-oslo.utils python3-pbr python3-pyeclib python3-pymemcache python3-q-text-as-data python3-sqlalchemy python3-stevedore python3-swiftclient python3-testtools python3-uhashring python3-wrapt python3-yappi"
;;
"antelope")
SWIFT_DEPENDS="pycadf-common python3-barbicanclient python3-castellan python3-ceilometermiddleware python3-cliff python3-debtcollector python3-fixtures python3-futurist python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-msgpack python3-os-service-types python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.i18n python3-oslo.log python3-oslo.messaging python3-oslo.metrics python3-oslo.middleware python3-oslo.serialization python3-oslo.service python3-oslo.utils python3-pbr python3-pycadf python3-pyeclib python3-pymemcache python3-pytimeparse python3-q-text-as-data python3-rfc3986 python3-stevedore python3-swiftclient python3-testtools python3-uhashring python3-wrapt python3-yappi"
;;
"bobcat")
SWIFT_DEPENDS="pycadf-common python3-barbicanclient python3-binary-memcached python3-castellan python3-ceilometermiddleware python3-cliff python3-eventlet python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.i18n python3-oslo.log python3-oslo.messaging python3-oslo.metrics python3-oslo.middleware python3-oslo.serialization python3-oslo.service python3-oslo.utils python3-pbr python3-pycadf python3-pymemcache python3-requests python3-rfc3986 python3-stevedore python3-swiftclient python3-testtools python3-uhashring python3-urllib3 python3-wrapt python3-yappi"
;;
"caracal")
SWIFT_DEPENDS="liberasurecode1 openstack-pkg-tools python-pastedeploy-tpl python3-amqp python3-attr python3-barbicanclient python3-binary-memcached python3-castellan python3-ceilometermiddleware python3-chardet python3-cliff python3-debtcollector python3-dogpile.cache python3-eventlet python3-fixtures python3-futurist python3-greenlet python3-keyring python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-lxml python3-memcache python3-netaddr python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.i18n python3-oslo.log python3-oslo.messaging python3-oslo.metrics python3-oslo.middleware python3-oslo.serialization python3-oslo.service python3-oslo.utils python3-packaging python3-pastedeploy python3-pastedeploy-tpl python3-pbr python3-pkg-resources python3-pyeclib python3-pymemcache python3-q-text-as-data python3-setuptools python3-sqlalchemy python3-stevedore python3-swiftclient python3-testtools python3-urllib3"
;;
"dalmatian")
SWIFT_DEPENDS="python3-barbicanclient python3-castellan python3-ceilometermiddleware python3-cliff python3-dogpile.cache python3-eventlet python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-lxml python3-more-itertools python3-os-service-types python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.i18n python3-oslo.log python3-oslo.messaging python3-oslo.metrics python3-oslo.middleware python3-oslo.serialization python3-oslo.service python3-oslo.utils python3-paste python3-pbr python3-pyparsing python3-sqlalchemy python3-stevedore python3-swiftclient python3-testtools"
;;
"epoxy")
SWIFT_DEPENDS="python3-debtcollector python3-iso8601 python3-netaddr python3-oslo.config python3-oslo.context python3-oslo.i18n python3-oslo.log python3-oslo.serialization python3-oslo.utils python3-packaging python3-pbr python3-pkg-resources python3-requests python3-setuptools python3-stevedore python3-swiftclient python3-typing-extensions python3-urllib3 python3-yaml"
;;
"flamingo")
SWIFT_DEPENDS="openstack-pkg-tools python3-barbicanclient python3-binary-memcached python3-castellan python3-cliff python3-eventlet python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-mako python3-markupsafe python3-msgpack python3-os-service-types python3-oslo.cache python3-oslo.config python3-oslo.context python3-oslo.i18n python3-oslo.log python3-oslo.serialization python3-oslo.utils python3-pbr python3-stevedore python3-swiftclient python3-wrapt"
;;
*)
SWIFT_DEPENDS="python3-amqp python3-barbicanclient python3-binary-memcached python3-cachetools python3-castellan python3-ceilometermiddleware python3-cffi-backend python3-cliff python3-cmd2 python3-cryptography python3-debtcollector python3-dogpile.cache python3-eventlet python3-fasteners python3-fixtures python3-futurist python3-greenlet python3-idna python3-importlib-metadata python3-iso8601 python3-jinja2 python3-jwt python3-keyring python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-kombu python3-lxml python3-markupsafe python3-monotonic python3-msgpack python3-netaddr python3-oauthlib python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.i18n python3-oslo.log python3-oslo.messaging python3-oslo.middleware python3-oslo.serialization python3-oslo.service python3-oslo.utils python3-pbr python3-pkg-resources python3-pyeclib python3-pymemcache python3-pyparsing python3-pytimeparse python3-rfc3986 python3-setuptools python3-sqlalchemy python3-stevedore python3-swiftclient python3-tenacity python3-testtools python3-uhashring python3-wcwidth python3-wrapt python3-yaml python3-yappi"
;;
esac
upgrade_package_list_on_host ${HOST} "${SWIFT_DEPENDS}"
}
vol_upgrade_depends () {
local HOST HOST_IP HOST_NAME
HOST=${1}
HOST_IP=$(echo ${HOST} | cut -d, -f1)
HOST_NAME=$(echo ${HOST} | cut -d, -f2)
green_echo "-> Installing depends on ${HOST_NAME}"
case "${TO_OS_RELEASE}" in
"wallaby")
VOL_DEPENDS="os-brick-common python3-automaton python3-barbicanclient python3-castellan python3-cinderclient python3-cliff python3-cmd2 python3-dogpile.cache python3-eventlet python3-glanceclient python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-msgpack python3-netaddr python3-neutronclient python3-novaclient python3-oauth2client python3-openstackclient python3-openstacksdk python3-os-brick python3-os-win python3-osc-lib python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.messaging python3-oslo.middleware python3-oslo.policy python3-oslo.privsep python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-oslo.versionedobjects python3-oslo.vmware python3-pbr python3-pymemcache python3-pymysql python3-rtslib-fb python3-stevedore python3-swiftclient python3-taskflow python3-tenacity python3-tooz python3-voluptuous python3-colorama"
;;
"xena")
VOL_DEPENDS="alembic libjs-sphinxdoc os-brick-common python3-alembic python3-automaton python3-barbicanclient python3-castellan python3-cinderclient python3-cliff python3-ddt python3-debtcollector python3-eventlet python3-futurist python3-glanceclient python3-greenlet python3-idna python3-jinja2 python3-jsonpatch python3-jsonschema python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-markupsafe python3-migrate python3-monotonic python3-neutronclient python3-novaclient python3-openstackclient python3-openstacksdk python3-os-brick python3-os-win python3-osc-lib python3-oslo.cache python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.i18n python3-oslo.log python3-oslo.messaging python3-oslo.middleware python3-oslo.policy python3-oslo.privsep python3-oslo.reports python3-oslo.rootwrap python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-oslo.versionedobjects python3-oslo.vmware python3-osprofiler python3-pbr python3-pecan python3-q-text-as-data python3-rfc3986 python3-sqlalchemy python3-stevedore python3-swiftclient python3-taskflow python3-testresources python3-testtools python3-tooz python3-uhashring python3-werkzeug python3-wrapt python3-yappi"
;;
"yoga")
VOL_DEPENDS="alembic os-brick-common python3-alembic python3-amqp python3-automaton python3-barbicanclient python3-binary-memcached python3-boto3 python3-botocore python3-cachetools python3-castellan python3-cffi python3-cffi-backend python3-cinderclient python3-cliff python3-cmd2 python3-cryptography python3-ddt python3-debtcollector python3-dogpile.cache python3-etcd3gw python3-eventlet python3-fasteners python3-glanceclient python3-greenlet python3-idna python3-importlib-metadata python3-iso8601 python3-jinja2 python3-json-pointer python3-jwt python3-kazoo python3-keyring python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-kombu python3-lxml python3-monotonic python3-msgpack python3-neutronclient python3-novaclient python3-oauth2client python3-oauthlib python3-openstackclient python3-openstacksdk python3-os-brick python3-os-client-config python3-os-win python3-osc-lib python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.log python3-oslo.messaging python3-oslo.metrics python3-oslo.middleware python3-oslo.policy python3-oslo.privsep python3-oslo.reports python3-oslo.rootwrap python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-oslo.versionedobjects python3-oslo.vmware python3-paramiko python3-pbr python3-pecan python3-pkg-resources python3-psutil python3-pure-sasl python3-pyparsing python3-pytimeparse python3-rtslib-fb python3-setuptools python3-simplejson python3-stevedore python3-swiftclient python3-taskflow python3-tooz python3-uritemplate python3-voluptuous python3-wcwidth python3-wrapt python3-yaml python3-zake"
;;
"zed")
VOL_DEPENDS="alembic os-brick-common python3-alembic python3-automaton python3-barbicanclient python3-castellan python3-cinderclient python3-cliff python3-cursive python3-etcd3gw python3-eventlet python3-fixtures python3-futurist python3-glanceclient python3-json-pointer python3-jsonschema python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-msgpack python3-munch python3-neutronclient python3-novaclient python3-oauth2client python3-openstackclient python3-openstacksdk python3-os-brick python3-os-win python3-osc-lib python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.i18n python3-oslo.log python3-oslo.messaging python3-oslo.metrics python3-oslo.middleware python3-oslo.policy python3-oslo.privsep python3-oslo.reports python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-oslo.versionedobjects python3-oslo.vmware python3-osprofiler python3-pbr python3-pymemcache python3-q-text-as-data python3-rtslib-fb python3-sqlalchemy python3-stevedore python3-swiftclient python3-taskflow python3-testresources python3-testtools python3-tooz python3-uhashring python3-warlock python3-webtest python3-werkzeug python3-wrapt python3-yappi"
;;
"antelope")
VOL_DEPENDS="os-brick-common pycadf-common python3-automaton python3-barbicanclient python3-castellan python3-cinderclient python3-cliff python3-cursive python3-debtcollector python3-etcd3gw python3-fixtures python3-futurist python3-glanceclient python3-jsonschema python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-msgpack python3-neutronclient python3-novaclient python3-oauth2client python3-openstackclient python3-openstacksdk python3-os-brick python3-os-client-config python3-os-service-types python3-os-win python3-osc-lib python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.i18n python3-oslo.log python3-oslo.messaging python3-oslo.metrics python3-oslo.middleware python3-oslo.policy python3-oslo.privsep python3-oslo.reports python3-oslo.rootwrap python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-oslo.versionedobjects python3-oslo.vmware python3-osprofiler python3-pbr python3-pecan python3-pure-sasl python3-pycadf python3-pymemcache python3-pytimeparse python3-q-text-as-data python3-rfc3986 python3-stevedore python3-swiftclient python3-taskflow python3-testscenarios python3-testtools python3-tooz python3-uhashring python3-uritemplate python3-warlock python3-wrapt python3-yappi python3-zake"
;;
"bobcat")
VOL_DEPENDS="os-brick-common pycadf-common python3-automaton python3-barbicanclient python3-binary-memcached python3-castellan python3-cinderclient python3-cliff python3-etcd3gw python3-eventlet python3-glanceclient python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-neutronclient python3-novaclient python3-openstackclient python3-openstacksdk python3-os-brick python3-osc-lib python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.i18n python3-oslo.log python3-oslo.messaging python3-oslo.metrics python3-oslo.middleware python3-oslo.policy python3-oslo.privsep python3-oslo.reports python3-oslo.rootwrap python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-oslo.versionedobjects python3-oslo.vmware python3-pbr python3-pecan python3-psycopg2 python3-pure-sasl python3-pycadf python3-pymemcache python3-requests python3-rfc3986 python3-stevedore python3-swiftclient python3-taskflow python3-testresources python3-testtools python3-tooz python3-uhashring python3-urllib3 python3-wrapt python3-yappi"
;;
"dalmatian")
VOL_DEPENDS="os-brick-common python3-attr python3-barbicanclient python3-boto3 python3-botocore python3-castellan python3-chardet python3-cinderclient python3-cliff python3-ddt python3-dogpile.cache python3-eventlet python3-glanceclient python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-lxml python3-memcache python3-more-itertools python3-networkx python3-neutronclient python3-novaclient python3-openstackclient python3-openstacksdk python3-os-brick python3-os-service-types python3-os-win python3-osc-lib python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.i18n python3-oslo.log python3-oslo.messaging python3-oslo.metrics python3-oslo.middleware python3-oslo.policy python3-oslo.privsep python3-oslo.reports python3-oslo.rootwrap python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-oslo.versionedobjects python3-oslo.vmware python3-osprofiler python3-packaging python3-paramiko python3-paste python3-pastedeploy python3-pastedeploy-tpl python3-pbr python3-pecan python3-platformdirs python3-pyasn1 python3-pyasn1-modules python3-pydot python3-pyparsing python3-simplejson python3-sqlalchemy python3-stevedore python3-swiftclient python3-taskflow python3-testtools python3-tooz python3-urllib3 python3-voluptuous python3-werkzeug"
;;
"epoxy")
VOL_DEPENDS="os-brick-common pycadf-common python3-barbicanclient python3-blinker python3-castellan python3-cinderclient python3-cliff python3-debtcollector python3-futurist python3-glanceclient python3-httplib2 python3-iso8601 python3-jaraco.functools python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-netaddr python3-neutronclient python3-novaclient python3-openstackclient python3-openstacksdk python3-os-brick python3-osc-lib python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.i18n python3-oslo.log python3-oslo.messaging python3-oslo.metrics python3-oslo.middleware python3-oslo.policy python3-oslo.privsep python3-oslo.reports python3-oslo.rootwrap python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-oslo.versionedobjects python3-oslo.vmware python3-osprofiler python3-packaging python3-pbr python3-pkg-resources python3-prometheus-client python3-psutil python3-pycadf python3-requests python3-setuptools python3-stevedore python3-swiftclient python3-taskflow python3-testscenarios python3-testtools python3-typing-extensions python3-urllib3 python3-werkzeug python3-yaml"
;;
"flamingo")
VOL_DEPENDS="alembic os-brick-common python3-alembic python3-barbicanclient python3-binary-memcached python3-castellan python3-cinderclient python3-cliff python3-eventlet python3-fixtures python3-futurist python3-glanceclient python3-google-auth python3-jsonschema python3-kazoo python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-mako python3-markupsafe python3-msgpack python3-networkx python3-neutronclient python3-novaclient python3-openstackclient python3-openstacksdk python3-os-brick python3-os-client-config python3-os-service-types python3-osc-lib python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.i18n python3-oslo.log python3-oslo.messaging python3-oslo.metrics python3-oslo.middleware python3-oslo.policy python3-oslo.privsep python3-oslo.reports python3-oslo.rootwrap python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-oslo.versionedobjects python3-oslo.vmware python3-osprofiler python3-pbr python3-pecan python3-retrying python3-rtslib-fb python3-stevedore python3-swiftclient python3-taskflow python3-testscenarios python3-tooz python3-uritemplate python3-voluptuous python3-warlock python3-wrapt python3-yappi"
;;
*)
VOL_DEPENDS="alembic os-brick-common python3-alembic python3-amqp python3-automaton python3-barbicanclient python3-binary-memcached python3-cachetools python3-castellan python3-cffi python3-cffi-backend python3-cinderclient python3-cliff python3-cmd2 python3-cryptography python3-cursive python3-ddt python3-debtcollector python3-dogpile.cache python3-etcd3gw python3-eventlet python3-fasteners python3-fixtures python3-futurist python3-glanceclient python3-greenlet python3-idna python3-importlib-metadata python3-iso8601 python3-jinja2 python3-json-pointer python3-jsonpatch python3-jsonschema python3-jwt python3-kazoo python3-keyring python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-kombu python3-lxml python3-markupsafe python3-migrate python3-monotonic python3-msgpack python3-munch python3-netaddr python3-neutronclient python3-novaclient python3-oauth2client python3-oauthlib python3-openstackclient python3-openstacksdk python3-os-brick python3-os-client-config python3-os-win python3-osc-lib python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.i18n python3-oslo.log python3-oslo.messaging python3-oslo.middleware python3-oslo.policy python3-oslo.privsep python3-oslo.reports python3-oslo.rootwrap python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-oslo.versionedobjects python3-oslo.vmware python3-osprofiler python3-paramiko python3-pbr python3-pecan python3-pkg-resources python3-psutil python3-pure-sasl python3-pymemcache python3-pymysql python3-pyparsing python3-pytimeparse python3-q-text-as-data python3-rfc3986 python3-rtslib-fb python3-setuptools python3-simplejson python3-sqlalchemy python3-stevedore python3-swiftclient python3-taskflow python3-tenacity python3-testresources python3-testtools python3-tooz python3-uhashring python3-uritemplate python3-voluptuous python3-warlock python3-wcwidth python3-webtest python3-werkzeug python3-wrapt python3-yaml python3-yappi python3-zake"
;;
esac
upgrade_package_list_on_host ${HOST} "${VOL_DEPENDS}"
}
tempest_upgrade_depends () {
local HOST HOST_IP HOST_NAME
HOST=${1}
HOST_IP=$(echo ${HOST} | cut -d, -f1)
HOST_NAME=$(echo ${HOST} | cut -d, -f2)
green_echo "-> Installing depends on ${HOST_NAME}"
case "${TO_OS_RELEASE}" in
"wallaby")
TEMPEST_DEPENDS="barbican-tempest-plugin cinder-tempest-plugin heat-tempest-plugin keystone-tempest-plugin neutron-tempest-plugin octavia-tempest-plugin python3-barbicanclient python3-cinderclient python3-cliff python3-cmd2 python3-dogpile.cache python3-eventlet python3-glanceclient python3-gnocchiclient python3-heatclient python3-keystoneauth1 python3-keystoneclient python3-msgpack python3-netaddr python3-neutron-lib python3-neutronclient python3-novaclient python3-openstackclient python3-openstacksdk python3-os-ken python3-os-traits python3-osc-lib python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.messaging python3-oslo.middleware python3-oslo.policy python3-oslo.serialization python3-oslo.service python3-oslo.utils python3-oslo.versionedobjects python3-pbr python3-pymysql python3-stestr python3-stevedore python3-swiftclient python3-tempest python3-tenacity python3-voluptuous python3-zaqarclient telemetry-tempest-plugin tempest"
;;
"xena")
TEMPEST_DEPENDS="alembic barbican-tempest-plugin cinder-tempest-plugin heat-tempest-plugin keystone-tempest-plugin libjs-sphinxdoc neutron-tempest-plugin octavia-tempest-plugin python3-alembic python3-barbicanclient python3-cinderclient python3-cliff python3-ddt python3-debtcollector python3-eventlet python3-futurist python3-glanceclient python3-greenlet python3-heatclient python3-idna python3-jinja2 python3-jsonpatch python3-jsonschema python3-keystoneauth1 python3-keystoneclient python3-markupsafe python3-migrate python3-monotonic python3-neutron-lib python3-neutronclient python3-novaclient python3-openstackclient python3-openstacksdk python3-os-collect-config python3-os-ken python3-os-testr python3-os-traits python3-osc-lib python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.i18n python3-oslo.log python3-oslo.messaging python3-oslo.middleware python3-oslo.policy python3-oslo.serialization python3-oslo.service python3-oslo.utils python3-oslo.versionedobjects python3-oslotest python3-osprofiler python3-pbr python3-pecan python3-q-text-as-data python3-rally python3-rfc3986 python3-sqlalchemy python3-stestr python3-stevedore python3-swiftclient python3-tempest python3-testresources python3-testtools python3-wrapt python3-yappi python3-zaqarclient rally telemetry-tempest-plugin tempest"
;;
"yoga")
TEMPEST_DEPENDS="alembic barbican-tempest-plugin cinder-tempest-plugin heat-tempest-plugin keystone-tempest-plugin neutron-tempest-plugin octavia-tempest-plugin python3-alembic python3-amqp python3-barbicanclient python3-cachetools python3-cffi-backend python3-cinderclient python3-cliff python3-cmd2 python3-cryptography python3-ddt python3-debtcollector python3-dogpile.cache python3-eventlet python3-fasteners python3-filelock python3-gabbi python3-glanceclient python3-gnocchiclient python3-greenlet python3-heatclient python3-idna python3-importlib-metadata python3-iso8601 python3-jinja2 python3-json-pointer python3-jwt python3-keyring python3-keystoneauth1 python3-keystoneclient python3-kombu python3-lxml python3-monotonic python3-msgpack python3-neutron-lib python3-neutronclient python3-novaclient python3-oauthlib python3-openstackclient python3-openstacksdk python3-os-client-config python3-os-ken python3-os-traits python3-osc-lib python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.log python3-oslo.messaging python3-oslo.metrics python3-oslo.middleware python3-oslo.policy python3-oslo.serialization python3-oslo.service python3-oslo.utils python3-oslo.versionedobjects python3-paramiko python3-pbr python3-pecan python3-pkg-resources python3-pyparsing python3-pytest python3-pytimeparse python3-rally python3-setuptools python3-simplejson python3-stevedore python3-swiftclient python3-tempest python3-ujson python3-voluptuous python3-wcwidth python3-wrapt python3-wsgi-intercept python3-yaml python3-zaqarclient telemetry-tempest-plugin tempest"
;;
"zed")
TEMPEST_DEPENDS="alembic barbican-tempest-plugin cinder-tempest-plugin heat-tempest-plugin keystone-tempest-plugin neutron-tempest-plugin octavia-tempest-plugin python3-alembic python3-barbicanclient python3-cinderclient python3-cliff python3-eventlet python3-fixtures python3-futurist python3-glanceclient python3-heatclient python3-json-pointer python3-jsonschema python3-keystoneauth1 python3-keystoneclient python3-msgpack python3-munch python3-neutron-lib python3-neutronclient python3-novaclient python3-openstackclient python3-openstacksdk python3-os-ken python3-os-traits python3-osc-lib python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.i18n python3-oslo.log python3-oslo.messaging python3-oslo.metrics python3-oslo.middleware python3-oslo.policy python3-oslo.serialization python3-oslo.service python3-oslo.utils python3-oslo.versionedobjects python3-oslotest python3-osprofiler python3-pbr python3-pytest python3-q-text-as-data python3-sqlalchemy python3-stevedore python3-swiftclient python3-tempest python3-testresources python3-testtools python3-warlock python3-webtest python3-wrapt python3-yappi python3-zaqarclient telemetry-tempest-plugin tempest"
;;
"antelope")
TEMPEST_DEPENDS="barbican-tempest-plugin cinder-tempest-plugin heat-tempest-plugin horizon-tempest-plugin keystone-tempest-plugin neutron-tempest-plugin octavia-tempest-plugin python3-barbicanclient python3-cinderclient python3-cliff python3-debtcollector python3-fixtures python3-futurist python3-glanceclient python3-gnocchiclient python3-heatclient python3-jsonschema python3-keystoneauth1 python3-keystoneclient python3-msgpack python3-neutron-lib python3-neutronclient python3-novaclient python3-openstackclient python3-openstacksdk python3-os-client-config python3-os-ken python3-os-service-types python3-os-testr python3-os-traits python3-osc-lib python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.i18n python3-oslo.log python3-oslo.messaging python3-oslo.metrics python3-oslo.middleware python3-oslo.policy python3-oslo.serialization python3-oslo.service python3-oslo.utils python3-oslo.versionedobjects python3-oslotest python3-osprofiler python3-pbr python3-pecan python3-pytimeparse python3-q-text-as-data python3-rally python3-rfc3986 python3-stestr python3-stevedore python3-swiftclient python3-tempest python3-testscenarios python3-testtools python3-warlock python3-wrapt python3-wsgi-intercept python3-yappi python3-zaqarclient rally telemetry-tempest-plugin tempest"
;;
"bobcat")
TEMPEST_DEPENDS="barbican-tempest-plugin cinder-tempest-plugin heat-tempest-plugin keystone-tempest-plugin libsubunit-perl neutron-tempest-plugin octavia-tempest-plugin python3-barbicanclient python3-cinderclient python3-cliff python3-eventlet python3-glanceclient python3-heatclient python3-keystoneauth1 python3-keystoneclient python3-neutron-lib python3-neutronclient python3-novaclient python3-openstackclient python3-openstacksdk python3-os-collect-config python3-os-ken python3-os-testr python3-os-traits python3-osc-lib python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.i18n python3-oslo.log python3-oslo.messaging python3-oslo.metrics python3-oslo.middleware python3-oslo.policy python3-oslo.serialization python3-oslo.service python3-oslo.utils python3-oslo.versionedobjects python3-oslotest python3-pbr python3-pecan python3-psycopg2 python3-rally python3-requests python3-rfc3986 python3-stestr python3-stevedore python3-subunit python3-swiftclient python3-tempest python3-testresources python3-testtools python3-urllib3 python3-wrapt python3-wsgi-intercept python3-yappi python3-zaqarclient rally subunit telemetry-tempest-plugin tempest"
;;
"dalmatian")
TEMPEST_DEPENDS="barbican-tempest-plugin cinder-tempest-plugin glance-tempest-plugin heat-tempest-plugin keystone-tempest-plugin neutron-tempest-plugin octavia-tempest-plugin python3-attr python3-barbicanclient python3-chardet python3-cinderclient python3-cliff python3-ddt python3-dogpile.cache python3-eventlet python3-fixtures python3-futurist python3-gabbi python3-glanceclient python3-gnocchiclient python3-heatclient python3-keystoneauth1 python3-keystoneclient python3-lxml python3-more-itertools python3-munch python3-netaddr python3-neutron-lib python3-neutronclient python3-novaclient python3-openstackclient python3-openstacksdk python3-os-collect-config python3-os-ken python3-os-service-types python3-os-testr python3-os-traits python3-osc-lib python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.i18n python3-oslo.log python3-oslo.messaging python3-oslo.metrics python3-oslo.middleware python3-oslo.policy python3-oslo.serialization python3-oslo.service python3-oslo.utils python3-oslo.versionedobjects python3-oslotest python3-osprofiler python3-packaging python3-paramiko python3-paste python3-pastedeploy python3-pastedeploy-tpl python3-pbr python3-pecan python3-platformdirs python3-pluggy python3-pygments python3-pymysql python3-pyparsing python3-q-text-as-data python3-simplejson python3-sqlalchemy python3-stestr python3-stevedore python3-swiftclient python3-tempest python3-testresources python3-testtools python3-urllib3 python3-voluptuous python3-warlock python3-zaqarclient telemetry-tempest-plugin tempest"
;;
"epoxy")
TEMPEST_DEPENDS="barbican-tempest-plugin cinder-tempest-plugin designate-tempest-plugin glance-tempest-plugin heat-tempest-plugin keystone-tempest-plugin neutron-tempest-plugin octavia-tempest-plugin openstack-cluster-installer-common openstack-cluster-installer-utils python3-barbicanclient python3-blinker python3-cinderclient python3-cliff python3-debtcollector python3-futurist python3-glanceclient python3-gnocchiclient python3-heatclient python3-httplib2 python3-iso8601 python3-keystoneauth1 python3-keystoneclient python3-netaddr python3-neutron-lib python3-neutronclient python3-novaclient python3-openstackclient python3-openstacksdk python3-os-ken python3-os-traits python3-osc-lib python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.i18n python3-oslo.log python3-oslo.messaging python3-oslo.metrics python3-oslo.middleware python3-oslo.policy python3-oslo.serialization python3-oslo.service python3-oslo.utils python3-oslo.versionedobjects python3-osprofiler python3-packaging python3-pbr python3-pkg-resources python3-prometheus-client python3-requests python3-setuptools python3-setuptools-whl python3-stevedore python3-swiftclient python3-tempest python3-testscenarios python3-testtools python3-typing-extensions python3-urllib3 python3-yaml python3-zaqarclient telemetry-tempest-plugin tempest"
;;
"flamingo")
TEMPEST_DEPENDS="alembic barbican-tempest-plugin cinder-tempest-plugin designate-tempest-plugin glance-tempest-plugin heat-tempest-plugin keystone-tempest-plugin neutron-tempest-plugin octavia-tempest-plugin python3-alembic python3-barbicanclient python3-cinderclient python3-cliff python3-eventlet python3-fixtures python3-futurist python3-glanceclient python3-gnocchiclient python3-heatclient python3-jsonschema python3-keystoneauth1 python3-keystoneclient python3-mako python3-markupsafe python3-msgpack python3-neutron-lib python3-neutronclient python3-novaclient python3-openstackclient python3-openstacksdk python3-os-client-config python3-os-collect-config python3-os-ken python3-os-service-types python3-os-testr python3-os-traits python3-osc-lib python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.i18n python3-oslo.log python3-oslo.messaging python3-oslo.metrics python3-oslo.middleware python3-oslo.policy python3-oslo.serialization python3-oslo.service python3-oslo.utils python3-oslo.versionedobjects python3-oslotest python3-osprofiler python3-pbr python3-pecan python3-rally python3-stestr python3-stevedore python3-subunit python3-swiftclient python3-tempest python3-testscenarios python3-voluptuous python3-warlock python3-wrapt python3-wsgi-intercept python3-yappi python3-zaqarclient rally subunit telemetry-tempest-plugin tempest"
;;
*)
TEMPEST_DEPENDS="alembic barbican-tempest-plugin cinder-tempest-plugin heat-tempest-plugin keystone-tempest-plugin neutron-tempest-plugin octavia-tempest-plugin python3-alembic python3-amqp python3-barbicanclient python3-cachetools python3-cffi-backend python3-cinderclient python3-cliff python3-cmd2 python3-cryptography python3-ddt python3-debtcollector python3-dogpile.cache python3-eventlet python3-fasteners python3-filelock python3-gabbi python3-glanceclient python3-gnocchiclient python3-greenlet python3-heatclient python3-idna python3-importlib-metadata python3-iso8601 python3-jinja2 python3-json-pointer python3-jwt python3-keyring python3-keystoneauth1 python3-keystoneclient python3-kombu python3-lxml python3-monotonic python3-msgpack python3-neutron-lib python3-neutronclient python3-novaclient python3-oauthlib python3-openstackclient python3-openstacksdk python3-os-client-config python3-os-ken python3-os-traits python3-osc-lib python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.log python3-oslo.messaging python3-oslo.metrics python3-oslo.middleware python3-oslo.policy python3-oslo.serialization python3-oslo.service python3-oslo.utils python3-oslo.versionedobjects python3-paramiko python3-pbr python3-pecan python3-pkg-resources python3-pyparsing python3-pytest python3-pytimeparse python3-rally python3-setuptools python3-simplejson python3-stevedore python3-swiftclient python3-tempest python3-ujson python3-voluptuous python3-wcwidth python3-wrapt python3-wsgi-intercept python3-yaml python3-zaqarclient telemetry-tempest-plugin tempest"
;;
esac
upgrade_package_list_on_host ${HOST} "${TEMPEST_DEPENDS}"
}
cluster_upgrade_depends () {
green_echo "===> Upgrading dependencies on the controllers"
iterate_on_hosts "${ALL_CTRL}" ctrl_upgrade_depends
green_echo "===> Upgrading dependencies on the messaging nodes"
iterate_on_hosts "${ALL_MSG}" msg_upgrade_depends
green_echo "===> Upgrading dependencies on the network nodes"
iterate_on_hosts "${ALL_NET}" net_upgrade_depends
green_echo "===> Upgrading dependencies on the compute nodes"
iterate_on_hosts -p "${ALL_COMP}" comp_upgrade_depends
green_echo "===> Upgrading dependencies on the swift nodes"
iterate_on_hosts -p "${ALL_SWIFTPRX}" swift_upgrade_depends
iterate_on_hosts -p "${ALL_SWIFTSTR}" swift_upgrade_depends
green_echo "===> Upgrading dependencies on the volume nodes"
iterate_on_hosts -p "${ALL_VOL}" vol_upgrade_depends
green_echo "===> Upgrading dependencies on the tempest nodes"
iterate_on_hosts -p "${ALL_TEMPEST}" tempest_upgrade_depends
}
cluster_upgrade_check_vip_location () {
WHERE_IS_API_VIP=$(sshi root@${ONE_CTRL_IP} "crm resource locate openstack-api-vip | sed -e 's/resource openstack-api-vip is running on: //' | awk '{print \$1}'")
if [ "${WHERE_IS_API_VIP}" != "${ONE_CTRL_HOST}" ] ; then
red_echo "Error: API VIP not located on controller 1."
echo "Move it with: crm resource move openstack-api-vip ${ONE_CTRL_HOST}"
echo "and retry upgrade."
exit 1
fi
}
#######################
### START OF SCRIPT ###
#######################
fetch_cluster_info
display_cluster_info
#green_echo "===> Check where the VIPs are hosted"
#cluster_upgrade_check_vip_location
green_echo "===> Checking that all nodes respond to ping"
oci_check_all_nodes_alive
green_echo "===> Disabling puppet everywhere but on Ceph nodes"
iterate_on_hosts -p "${ALL_NODES_BUT_CEPH}" disable_puppet
green_echo "===> Switching OpenStack release name in APT configuration of OCI"
switch_oci_to_release ${FROM_DEB_RELEASE} ${FROM_OS_RELEASE} ${TO_DEB_RELEASE} ${TO_OS_RELEASE}
green_echo "===> Switch the sources.list everywhere to ${TO_DEB_RELEASE}-${TO_OS_RELEASE}"
iterate_on_hosts -p "${ALL_NODES}" switch_to_release ${FROM_DEB_RELEASE} ${FROM_OS_RELEASE} ${TO_DEB_RELEASE} ${TO_OS_RELEASE}
cluster_upgrade_depends
if [ "${USE_EXTERNAL_KEYSTONE}" != "yes" ] ; then
cluster_upgrade_keystone
fi
if [ "${HAS_BARBICAN}" = "yes" ] ; then
cluster_upgrade_barbican
fi
if [ "${HAS_HEAT}" = "yes" ] ; then
cluster_upgrade_heat
fi
if [ "${HAS_DESIGNATE}" = "yes" ] ; then
cluster_upgrade_designate
fi
cluster_upgrade_swift
cluster_upgrade_horizon
if [ -n "${ALL_COMP}" ] ; then
cluster_upgrade_glance
if [ "${HAS_OCTAVIA}" ] ; then
cluster_upgrade_octavia
fi
if [ "${HAS_TELEMETRY}" = "yes" ] ; then
cluster_upgrade_gnocchi
cluster_upgrade_ceilometer
cluster_upgrade_cloudkitty
cluster_upgrade_aodh
fi
if [ "${FROM_OS_RELEASE}" != "rocky" ] ; then
# As per https://docs.openstack.org/nova/latest/admin/upgrades.html
# we must upgrade placement before nova.
cluster_upgrade_placement
fi
if [ "${HAS_VOL}" = "yes" ] || [ "${HAS_OSD}" = "yes" ] ; then
cluster_upgrade_cinder
fi
cluster_upgrade_nova
cluster_upgrade_neutron
fi
cluster_upgrade_finilize
cluster_check_status
|