magnum-ui 15.0.0__tar.gz → 16.0.0.0rc1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (242) hide show
  1. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/AUTHORS +1 -0
  2. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/ChangeLog +12 -0
  3. magnum_ui-16.0.0.0rc1/PKG-INFO +98 -0
  4. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/api/magnum.py +5 -0
  5. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/api/rest/magnum.py +20 -8
  6. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/clusters/create/create.service.js +4 -1
  7. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/clusters/resize/resize.service.js +12 -7
  8. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/clusters/resize/resize.service.spec.js +17 -4
  9. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/clusters/workflow/cluster-template.controller.js +7 -4
  10. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/clusters/workflow/cluster-template.controller.spec.js +12 -5
  11. magnum_ui-16.0.0.0rc1/magnum_ui/static/dashboard/container-infra/clusters/workflow/network.help.html +13 -0
  12. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/clusters/workflow/workflow.service.js +56 -16
  13. magnum_ui-16.0.0.0rc1/magnum_ui.egg-info/PKG-INFO +98 -0
  14. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui.egg-info/SOURCES.txt +2 -0
  15. magnum_ui-16.0.0.0rc1/magnum_ui.egg-info/pbr.json +1 -0
  16. magnum_ui-16.0.0.0rc1/releasenotes/notes/lb_floating_ip-ca6039444f88a968.yaml +8 -0
  17. magnum_ui-16.0.0.0rc1/releasenotes/source/2023.1.rst +8 -0
  18. magnum-ui-15.0.0/releasenotes/source/2023.1.rst → magnum_ui-16.0.0.0rc1/releasenotes/source/2024.2.rst +2 -2
  19. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/releasenotes/source/index.rst +1 -0
  20. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/releasenotes/source/yoga.rst +1 -1
  21. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/releasenotes/source/zed.rst +1 -1
  22. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/test-requirements.txt +1 -1
  23. magnum-ui-15.0.0/PKG-INFO +0 -95
  24. magnum-ui-15.0.0/magnum_ui/static/dashboard/container-infra/clusters/workflow/network.help.html +0 -4
  25. magnum-ui-15.0.0/magnum_ui.egg-info/PKG-INFO +0 -95
  26. magnum-ui-15.0.0/magnum_ui.egg-info/pbr.json +0 -1
  27. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/.eslintrc +0 -0
  28. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/.zuul.yaml +0 -0
  29. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/CONTRIBUTING.rst +0 -0
  30. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/LICENSE +0 -0
  31. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/README.rst +0 -0
  32. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/babel-django.cfg +0 -0
  33. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/babel-djangojs.cfg +0 -0
  34. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/bindep.txt +0 -0
  35. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/devstack/plugin.sh +0 -0
  36. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/devstack/settings +0 -0
  37. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/doc/Makefile +0 -0
  38. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/doc/requirements.txt +0 -0
  39. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/doc/source/conf.py +0 -0
  40. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/doc/source/configuration/index.rst +0 -0
  41. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/doc/source/contributor/api.rst +0 -0
  42. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/doc/source/contributor/index.rst +0 -0
  43. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/doc/source/index.rst +0 -0
  44. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/doc/source/install/index.rst +0 -0
  45. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/__init__.py +0 -0
  46. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/api/__init__.py +0 -0
  47. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/api/heat.py +0 -0
  48. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/api/rest/__init__.py +0 -0
  49. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/content/__init__.py +0 -0
  50. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/content/cluster_templates/__init__.py +0 -0
  51. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/content/cluster_templates/panel.py +0 -0
  52. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/content/cluster_templates/tests.py +0 -0
  53. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/content/cluster_templates/urls.py +0 -0
  54. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/content/clusters/__init__.py +0 -0
  55. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/content/clusters/panel.py +0 -0
  56. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/content/clusters/tests.py +0 -0
  57. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/content/clusters/urls.py +0 -0
  58. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/content/container_infra/__init__.py +0 -0
  59. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/content/container_infra/quotas/__init__.py +0 -0
  60. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/content/container_infra/quotas/panel.py +0 -0
  61. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/content/container_infra/quotas/urls.py +0 -0
  62. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/enabled/_1370_project_container_infra_panel_group.py +0 -0
  63. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/enabled/_1371_project_container_infra_clusters_panel.py +0 -0
  64. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/enabled/_1372_project_container_infra_cluster_templates_panel.py +0 -0
  65. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/enabled/_2370_admin_container_infra_panel_group.py +0 -0
  66. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/enabled/_2371_admin_container_infra_quotas_panel.py +0 -0
  67. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/enabled/__init__.py +0 -0
  68. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/karma.conf.js +0 -0
  69. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/locale/cs/LC_MESSAGES/django.po +0 -0
  70. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/locale/cs/LC_MESSAGES/djangojs.po +0 -0
  71. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/locale/de/LC_MESSAGES/django.po +0 -0
  72. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/locale/de/LC_MESSAGES/djangojs.po +0 -0
  73. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/locale/en_AU/LC_MESSAGES/djangojs.po +0 -0
  74. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/locale/en_GB/LC_MESSAGES/django.po +0 -0
  75. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/locale/en_GB/LC_MESSAGES/djangojs.po +0 -0
  76. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/locale/fr/LC_MESSAGES/django.po +0 -0
  77. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/locale/fr/LC_MESSAGES/djangojs.po +0 -0
  78. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/locale/id/LC_MESSAGES/django.po +0 -0
  79. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/locale/id/LC_MESSAGES/djangojs.po +0 -0
  80. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/locale/ja/LC_MESSAGES/django.po +0 -0
  81. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/locale/ja/LC_MESSAGES/djangojs.po +0 -0
  82. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/locale/ko_KR/LC_MESSAGES/django.po +0 -0
  83. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/locale/ko_KR/LC_MESSAGES/djangojs.po +0 -0
  84. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/locale/pt_BR/LC_MESSAGES/django.po +0 -0
  85. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/locale/pt_BR/LC_MESSAGES/djangojs.po +0 -0
  86. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/locale/ru/LC_MESSAGES/django.po +0 -0
  87. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/locale/ru/LC_MESSAGES/djangojs.po +0 -0
  88. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/locale/tr_TR/LC_MESSAGES/django.po +0 -0
  89. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/locale/tr_TR/LC_MESSAGES/djangojs.po +0 -0
  90. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/cluster-templates/actions.module.js +0 -0
  91. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/cluster-templates/actions.module.spec.js +0 -0
  92. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/cluster-templates/cluster-templates.module.js +0 -0
  93. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/cluster-templates/cluster-templates.module.spec.js +0 -0
  94. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/cluster-templates/cluster-templates.service.js +0 -0
  95. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/cluster-templates/cluster-templates.service.spec.js +0 -0
  96. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/cluster-templates/create/create.service.js +0 -0
  97. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/cluster-templates/create/create.service.spec.js +0 -0
  98. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/cluster-templates/delete/delete.service.js +0 -0
  99. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/cluster-templates/delete/delete.service.spec.js +0 -0
  100. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/cluster-templates/details/details.module.js +0 -0
  101. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/cluster-templates/details/drawer.controller.js +0 -0
  102. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/cluster-templates/details/drawer.controller.spec.js +0 -0
  103. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/cluster-templates/details/drawer.html +0 -0
  104. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/cluster-templates/details/overview.controller.js +0 -0
  105. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/cluster-templates/details/overview.controller.spec.js +0 -0
  106. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/cluster-templates/details/overview.html +0 -0
  107. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/cluster-templates/panel.html +0 -0
  108. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/cluster-templates/update/update.service.js +0 -0
  109. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/cluster-templates/update/update.service.spec.js +0 -0
  110. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/cluster-templates/workflow/info.help.html +0 -0
  111. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/cluster-templates/workflow/labels.help.html +0 -0
  112. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/cluster-templates/workflow/network.help.html +0 -0
  113. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/cluster-templates/workflow/spec.help.html +0 -0
  114. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/cluster-templates/workflow/workflow.service.js +0 -0
  115. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/cluster-templates/workflow/workflow.service.spec.js +0 -0
  116. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/clusters/actions.module.js +0 -0
  117. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/clusters/actions.module.spec.js +0 -0
  118. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/clusters/cluster-stats.controller.js +0 -0
  119. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/clusters/cluster-stats.controller.spec.js +0 -0
  120. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/clusters/clusters.module.js +0 -0
  121. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/clusters/clusters.module.spec.js +0 -0
  122. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/clusters/clusters.scss +0 -0
  123. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/clusters/clusters.service.js +0 -0
  124. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/clusters/clusters.service.spec.js +0 -0
  125. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/clusters/clusters.utils.js +0 -0
  126. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/clusters/clusters.utils.spec.js +0 -0
  127. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/clusters/config/config.service.js +0 -0
  128. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/clusters/config/config.service.spec.js +0 -0
  129. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/clusters/create/create.service.spec.js +0 -0
  130. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/clusters/delete/delete.service.js +0 -0
  131. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/clusters/delete/delete.service.spec.js +0 -0
  132. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/clusters/details/details.module.js +0 -0
  133. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/clusters/details/drawer.controller.js +0 -0
  134. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/clusters/details/drawer.controller.spec.js +0 -0
  135. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/clusters/details/drawer.html +0 -0
  136. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/clusters/details/overview.controller.js +0 -0
  137. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/clusters/details/overview.controller.spec.js +0 -0
  138. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/clusters/details/overview.html +0 -0
  139. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/clusters/panel.html +0 -0
  140. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/clusters/rolling-upgrade/upgrade.service.js +0 -0
  141. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/clusters/rolling-upgrade/upgrade.service.spec.js +0 -0
  142. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/clusters/rotate-certificate/rotate-certificate.service.js +0 -0
  143. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/clusters/rotate-certificate/rotate-certificate.service.spec.js +0 -0
  144. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/clusters/show-certificate/show-certificate.service.js +0 -0
  145. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/clusters/show-certificate/show-certificate.service.spec.js +0 -0
  146. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/clusters/sign-certificate/sign-certificate-modal.controller.js +0 -0
  147. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/clusters/sign-certificate/sign-certificate-modal.html +0 -0
  148. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/clusters/sign-certificate/sign-certificate-model.js +0 -0
  149. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/clusters/sign-certificate/sign-certificate-model.spec.js +0 -0
  150. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/clusters/sign-certificate/sign-certificate.service.js +0 -0
  151. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/clusters/sign-certificate/sign-certificate.service.spec.js +0 -0
  152. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/clusters/workflow/advanced.help.html +0 -0
  153. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/clusters/workflow/cluster-template.html +0 -0
  154. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/clusters/workflow/details.help.html +0 -0
  155. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/clusters/workflow/management.help.html +0 -0
  156. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/clusters/workflow/size.help.html +0 -0
  157. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/clusters/workflow/workflow.service.spec.js +0 -0
  158. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/container-infra.module.js +0 -0
  159. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/container-infra.module.spec.js +0 -0
  160. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/container-infra.scss +0 -0
  161. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/magnum.service.js +0 -0
  162. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/magnum.service.spec.js +0 -0
  163. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/quotas/actions.module.js +0 -0
  164. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/quotas/actions.module.spec.js +0 -0
  165. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/quotas/create/create.service.js +0 -0
  166. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/quotas/create/create.service.spec.js +0 -0
  167. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/quotas/delete/delete.service.js +0 -0
  168. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/quotas/delete/delete.service.spec.js +0 -0
  169. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/quotas/panel.html +0 -0
  170. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/quotas/quotas.module.js +0 -0
  171. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/quotas/quotas.module.spec.js +0 -0
  172. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/quotas/quotas.service.js +0 -0
  173. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/quotas/quotas.service.spec.js +0 -0
  174. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/quotas/update/update.service.js +0 -0
  175. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/quotas/update/update.service.spec.js +0 -0
  176. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/quotas/workflow/workflow.service.js +0 -0
  177. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/quotas/workflow/workflow.service.spec.js +0 -0
  178. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/utils.service.js +0 -0
  179. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/static/dashboard/container-infra/utils.service.spec.js +0 -0
  180. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/test/__init__.py +0 -0
  181. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/test/api_tests/__init__.py +0 -0
  182. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/test/api_tests/test_rest_api.py +0 -0
  183. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/test/helpers.py +0 -0
  184. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/test/integration_tests/__init__.py +0 -0
  185. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/test/settings.py +0 -0
  186. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/test/test_data.py +0 -0
  187. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui/version.py +0 -0
  188. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui.egg-info/dependency_links.txt +0 -0
  189. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui.egg-info/not-zip-safe +0 -0
  190. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui.egg-info/requires.txt +2 -2
  191. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/magnum_ui.egg-info/top_level.txt +0 -0
  192. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/manage.py +0 -0
  193. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/package.json +0 -0
  194. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/releasenotes/notes/Workflow-updates-for-Create-Cluster-65e4fe510b4d1a4c.yaml +0 -0
  195. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/releasenotes/notes/add-fedora-coreos-7882a33d801371fe.yaml +0 -0
  196. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/releasenotes/notes/add-reno-7d46796dbf41c247.yaml +0 -0
  197. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/releasenotes/notes/bugfix-cluster-template-hidden-arg-38909eaa92bd8d56.yaml +0 -0
  198. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/releasenotes/notes/bugfix-set-floating_ip_enabled-default_in-cluster-template-true-ce06118f0e6064ba.yaml +0 -0
  199. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/releasenotes/notes/improve-cluster-launch-dfc514b51cfa7f0e.yaml +0 -0
  200. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/releasenotes/notes/newton-dac21adfe6c6b8ee.yaml +0 -0
  201. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/releasenotes/notes/ocata-b08d6b024c63296b.yaml +0 -0
  202. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/releasenotes/notes/ocata-summary-a717111a782c7a68.yaml +0 -0
  203. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/releasenotes/notes/pike-b1af664f1033a131.yaml +0 -0
  204. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/releasenotes/notes/queens-f99244e9db54ccf3.yaml +0 -0
  205. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/releasenotes/notes/resize-actions-1436a2a0dccbd13b.yaml +0 -0
  206. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/releasenotes/notes/rocky-56165675d959b593.yaml +0 -0
  207. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/releasenotes/notes/show-health-status-ff92b2fe2bfad5ae.yaml +0 -0
  208. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/releasenotes/notes/stein-a6adf485dbbbbd1a.yaml +0 -0
  209. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/releasenotes/notes/update-actions-02db7b9f8e5d36b6.yaml +0 -0
  210. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/releasenotes/notes/upgrade-actions-adf2f749ec0cc817.yaml +0 -0
  211. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/releasenotes/source/2023.2.rst +0 -0
  212. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/releasenotes/source/2024.1.rst +0 -0
  213. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/releasenotes/source/conf.py +0 -0
  214. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/releasenotes/source/locale/de/LC_MESSAGES/releasenotes.po +0 -0
  215. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/releasenotes/source/locale/en_GB/LC_MESSAGES/releasenotes.po +0 -0
  216. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/releasenotes/source/locale/fr/LC_MESSAGES/releasenotes.po +0 -0
  217. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/releasenotes/source/locale/id/LC_MESSAGES/releasenotes.po +0 -0
  218. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/releasenotes/source/locale/ja/LC_MESSAGES/releasenotes.po +0 -0
  219. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/releasenotes/source/locale/ko_KR/LC_MESSAGES/releasenotes.po +0 -0
  220. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/releasenotes/source/locale/pt_BR/LC_MESSAGES/releasenotes.po +0 -0
  221. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/releasenotes/source/locale/ru/LC_MESSAGES/releasenotes.po +0 -0
  222. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/releasenotes/source/locale/zh_CN/LC_MESSAGES/releasenotes.po +0 -0
  223. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/releasenotes/source/newton.rst +0 -0
  224. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/releasenotes/source/ocata.rst +0 -0
  225. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/releasenotes/source/pike.rst +0 -0
  226. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/releasenotes/source/queens.rst +0 -0
  227. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/releasenotes/source/rocky.rst +0 -0
  228. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/releasenotes/source/stein.rst +0 -0
  229. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/releasenotes/source/train.rst +0 -0
  230. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/releasenotes/source/unreleased.rst +0 -0
  231. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/releasenotes/source/ussuri.rst +0 -0
  232. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/releasenotes/source/victoria.rst +0 -0
  233. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/releasenotes/source/wallaby.rst +0 -0
  234. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/releasenotes/source/xena.rst +0 -0
  235. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/requirements.txt +0 -0
  236. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/setup.cfg +0 -0
  237. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/setup.py +0 -0
  238. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/test-shim.js +0 -0
  239. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/tools/install_venv.py +0 -0
  240. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/tools/install_venv_common.py +0 -0
  241. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/tools/with_venv.sh +0 -0
  242. {magnum-ui-15.0.0 → magnum_ui-16.0.0.0rc1}/tox.ini +0 -0
@@ -4,6 +4,7 @@ Andreas Jaeger <aj@suse.com>
4
4
  Andreas Jaeger <aj@suse.de>
5
5
  Andrei Nistor <andrei_nistor@smart-x.net>
6
6
  Andrew Bogott <abogott@wikimedia.org>
7
+ Andrew Bonney <andrew.bonney@bbc.co.uk>
7
8
  Bharat Kunwar <bharat@stackhpc.com>
8
9
  Bharat Kunwar <brtknr@bath.edu>
9
10
  Bradley Jones <jones.bradley@me.com>
@@ -1,10 +1,22 @@
1
1
  CHANGES
2
2
  =======
3
3
 
4
+ 16.0.0.0rc1
5
+ -----------
6
+
7
+ * reno: Update master for unmaintained/2023.1
8
+ * reno: Update master for unmaintained/zed
9
+ * Fix resize for CAPI clusters
10
+ * Bump hacking
11
+ * Fix indexing into subnet list during cluster creation
12
+ * Update master for stable/2024.2
13
+ * reno: Update master for unmaintained/yoga
14
+
4
15
  15.0.0
5
16
  ------
6
17
 
7
18
  * Imported Translations from Zanata
19
+ * Change floating\_ip to use master\_lb\_floating\_ip\_enabled
8
20
  * Workflow updates for Create Cluster
9
21
  * Restrict actions based on cluster state
10
22
  * Fix all lint warnings
@@ -0,0 +1,98 @@
1
+ Metadata-Version: 2.1
2
+ Name: magnum-ui
3
+ Version: 16.0.0.0rc1
4
+ Summary: Magnum User Interface
5
+ Home-page: https://docs.openstack.org/developer/magnum-ui/
6
+ Author: OpenStack
7
+ Author-email: openstack-discuss@lists.openstack.org
8
+ Classifier: Environment :: OpenStack
9
+ Classifier: Intended Audience :: Information Technology
10
+ Classifier: Intended Audience :: System Administrators
11
+ Classifier: License :: OSI Approved :: Apache Software License
12
+ Classifier: Operating System :: POSIX :: Linux
13
+ Classifier: Programming Language :: Python
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.6
16
+ Classifier: Programming Language :: Python :: 3.7
17
+ Classifier: Programming Language :: Python :: 3.8
18
+ Classifier: Programming Language :: Python :: 3.9
19
+ Classifier: Programming Language :: Python :: 3.10
20
+ Classifier: Programming Language :: Python :: 3.11
21
+ License-File: LICENSE
22
+ Requires-Dist: pbr!=2.1.0,>=2.0.0
23
+ Requires-Dist: python-magnumclient>=4.2.0
24
+ Requires-Dist: python-heatclient>=1.18.0
25
+ Requires-Dist: horizon>=17.1.0
26
+
27
+ ========================
28
+ Team and repository tags
29
+ ========================
30
+
31
+ .. image:: https://governance.openstack.org/tc/badges/magnum-ui.svg
32
+ :target: https://governance.openstack.org/tc/reference/tags/index.html
33
+
34
+ .. Change things from this point on
35
+
36
+ =========
37
+ Magnum UI
38
+ =========
39
+
40
+ Horizon plugin for Magnum
41
+
42
+ * Free software: Apache license
43
+ * Source: https://opendev.org/openstack/magnum-ui
44
+ * Bugs: https://bugs.launchpad.net/magnum-ui
45
+ * Documentation: https://docs.openstack.org/magnum-ui/latest/
46
+ * Release notes: https://docs.openstack.org/releasenotes/magnum-ui/
47
+
48
+ Enabling in DevStack
49
+ --------------------
50
+
51
+ Add this repo as an external repository into your ``local.conf`` file::
52
+
53
+ [[local|localrc]]
54
+ enable_plugin magnum-ui https://github.com/openstack/magnum-ui
55
+
56
+ Manual Installation
57
+ -------------------
58
+
59
+ Begin by cloning the Horizon and Magnum UI repositories::
60
+
61
+ git clone https://github.com/openstack/horizon
62
+ git clone https://github.com/openstack/magnum-ui
63
+
64
+ Create a virtual environment and install Horizon dependencies::
65
+
66
+ cd horizon
67
+ python tools/install_venv.py
68
+
69
+ Set up your ``local_settings.py`` file::
70
+
71
+ cp openstack_dashboard/local/local_settings.py.example openstack_dashboard/local/local_settings.py
72
+
73
+ Open up the copied ``local_settings.py`` file in your preferred text
74
+ editor. You will want to customize several settings:
75
+
76
+ - ``OPENSTACK_HOST`` should be configured with the hostname of your
77
+ OpenStack server. Verify that the ``OPENSTACK_KEYSTONE_URL`` and
78
+ ``OPENSTACK_KEYSTONE_DEFAULT_ROLE`` settings are correct for your
79
+ environment. (They should be correct unless you modified your
80
+ OpenStack server to change them.)
81
+
82
+ Install Magnum UI with all dependencies in your virtual environment::
83
+
84
+ tools/with_venv.sh pip install -e ../magnum-ui/
85
+
86
+ And enable it in Horizon::
87
+
88
+ cp ../magnum-ui/magnum_ui/enabled/_1370_project_container_infra_panel_group.py openstack_dashboard/local/enabled
89
+ cp ../magnum-ui/magnum_ui/enabled/_1371_project_container_infra_clusters_panel.py openstack_dashboard/local/enabled
90
+ cp ../magnum-ui/magnum_ui/enabled/_1372_project_container_infra_cluster_templates_panel.py openstack_dashboard/local/enabled
91
+
92
+ To run horizon with the newly enabled Magnum UI plugin run::
93
+
94
+ python manage.py runserver 0.0.0.0:8080
95
+
96
+ to have the application start on port 8080 and the horizon dashboard will be
97
+ available in your browser at http://localhost:8080/
98
+
@@ -289,3 +289,8 @@ def quotas_update(request, project_id, resource, **kwargs):
289
289
 
290
290
  def quotas_delete(request, project_id, resource):
291
291
  return magnumclient(request).quotas.delete(project_id, resource)
292
+
293
+
294
+ def nodegroup_list(request, cluster_id=None, limit=None, marker=None):
295
+ return magnumclient(request).nodegroups.list(cluster_id, limit=limit,
296
+ marker=marker)
@@ -25,6 +25,7 @@ from django.views import generic
25
25
  from magnum_ui.api import heat
26
26
  from magnum_ui.api import magnum
27
27
 
28
+ from heatclient import exc as heatexc
28
29
  from openstack_dashboard import api
29
30
  from openstack_dashboard.api import neutron
30
31
  from openstack_dashboard.api.rest import urls
@@ -237,18 +238,29 @@ class ClusterResize(generic.View):
237
238
  print(e)
238
239
  return HttpResponseNotFound()
239
240
 
240
- stack = heat.stack_get(request, cluster["stack_id"])
241
- search_opts = {"name": "%s-" % stack.stack_name}
242
- servers = api.nova.server_list(request, search_opts=search_opts)[0]
241
+ try:
242
+ ngs = magnum.nodegroup_list(request, cluster_id)
243
+ nodegroups = [n.to_dict() for n in ngs]
244
+ except AttributeError:
245
+ return HttpResponseNotFound()
243
246
 
247
+ try:
248
+ stack = heat.stack_get(request, cluster["stack_id"])
249
+ except heatexc.HTTPNotFound:
250
+ stack = None
244
251
  worker_nodes = []
245
- for server in servers:
246
- if (server.name.startswith("%s-minion" % stack.stack_name) or
247
- server.name.startswith("%s-node" % stack.stack_name)):
248
- worker_nodes.append({"name": server.name, "id": server.id})
252
+ if stack:
253
+ search_opts = {"name": "%s-" % stack.stack_name}
254
+ servers = api.nova.server_list(request, search_opts=search_opts)[0]
255
+
256
+ for server in servers:
257
+ if (server.name.startswith("%s-minion" % stack.stack_name) or
258
+ server.name.startswith("%s-node" % stack.stack_name)):
259
+ worker_nodes.append({"name": server.name, "id": server.id})
249
260
 
250
261
  return {"cluster": change_to_id(cluster),
251
- "worker_nodes": worker_nodes}
262
+ "worker_nodes": worker_nodes,
263
+ "nodegroups": nodegroups}
252
264
 
253
265
  @rest_utils.ajax(data_required=True)
254
266
  def post(self, request, cluster_id):
@@ -99,7 +99,6 @@
99
99
  name: model.name,
100
100
  cluster_template_id: model.cluster_template_id,
101
101
  keypair: model.keypair,
102
- floating_ip_enabled: model.floating_ip_enabled,
103
102
  labels: requestLabels,
104
103
  master_lb_enabled: model.master_lb_enabled
105
104
  };
@@ -126,6 +125,10 @@
126
125
  requestLabels.availability_zone = model.availability_zone;
127
126
  requestLabels.auto_scaling_enabled = model.auto_scaling_enabled;
128
127
  requestLabels.auto_healing_enabled = model.auto_healing_enabled;
128
+ requestLabels.master_lb_floating_ip_enabled = model.master_lb_floating_ip_enabled;
129
+ if (model.api_master_lb_allowed_cidrs !== '') {
130
+ requestLabels.api_master_lb_allowed_cidrs = model.api_master_lb_allowed_cidrs;
131
+ }
129
132
 
130
133
  if (model.auto_scaling_enabled) {
131
134
  requestLabels.min_node_count = model.min_node_count;
@@ -70,7 +70,7 @@
70
70
  formModel = getFormModelDefaults();
71
71
  formModel.id = selected.id;
72
72
 
73
- modalConfig = constructModalConfig(response.data.worker_nodes);
73
+ modalConfig = constructModalConfig(response.data.nodegroups, response.data.worker_nodes);
74
74
 
75
75
  deferred.resolve(modal.open(modalConfig).then(onModalSubmit));
76
76
  $scope.model = formModel;
@@ -91,9 +91,13 @@
91
91
  return $qExtensions.booleanAsPromise(true);
92
92
  }
93
93
 
94
- function constructModalConfig(workerNodesList) {
95
- formModel.original_node_count = workerNodesList.length;
96
- formModel.node_count = workerNodesList.length;
94
+ function constructModalConfig(nodegroups, workerNodesList) {
95
+ var defaultWorker = nodegroups.filter(function(ng) {
96
+ return ng.name === 'default-worker';
97
+ })[0];
98
+ formModel.original_node_count = defaultWorker.node_count;
99
+ formModel.node_count = defaultWorker.node_count;
100
+ formModel.worker_nodes = workerNodesList;
97
101
 
98
102
  return {
99
103
  title: gettext('Resize Cluster'),
@@ -116,8 +120,8 @@
116
120
  form: [
117
121
  {
118
122
  key: 'node_count',
119
- title: gettext('Node Count'),
120
- placeholder: gettext('The cluster node count.'),
123
+ title: gettext('Node Count (default-worker)'),
124
+ placeholder: gettext('The default-worker nodegroup node_count.'),
121
125
  required: true,
122
126
  validationMessage: {
123
127
  101: gettext('You cannot resize to fewer than zero worker nodes.')
@@ -129,7 +133,8 @@
129
133
  type: 'checkboxes',
130
134
  title: gettext('Choose nodes to remove (Optional)'),
131
135
  titleMap: generateNodesTitleMap(workerNodesList),
132
- condition: 'model.node_count < model.original_node_count',
136
+ condition: 'model.node_count < model.original_node_count && ' +
137
+ 'model.worker_nodes.length > 0',
133
138
  onChange: validateNodeRemovalCount,
134
139
  validationMessage: {
135
140
  nodeRemovalCountExceeded: gettext('You may only select as many nodes ' +
@@ -67,10 +67,23 @@
67
67
 
68
68
  it('should open the modal, hide the loading spinner and check the form model',
69
69
  inject(function($timeout) {
70
- var mockWorkerNodes = [{id: "456", name: "Worker Node 1"}];
70
+ // 2 nodegroups, default-worker and another-nodegroup, with 2 and 3
71
+ // nodes respectively. cluster.node_count will be total nodes in all
72
+ // nodegroups
73
+ var mockDefaultWorker = {name: 'default-worker', node_count: 2};
74
+ var mockNodegroups = [mockDefaultWorker,
75
+ {name: 'default-master', node_count: 1},
76
+ {name: 'another-nodegroup', node_count: 3}];
77
+ var mockCluster = {node_count: 5};
78
+
79
+ // only populated with heat, [] for capi
80
+ var mockWorkerNodes = [{id: "456", name: "Worker Node 1"},
81
+ {id: "457", name: "Worker Node 2"}];
71
82
 
72
83
  deferred = $q.defer();
73
- deferred.resolve({data: {cluster: {}, worker_nodes: mockWorkerNodes}});
84
+ deferred.resolve({data: {cluster: mockCluster,
85
+ worker_nodes: mockWorkerNodes,
86
+ nodegroups: mockNodegroups}});
74
87
  spyOn(magnum, 'getClusterNodes').and.returnValue(deferred.promise);
75
88
 
76
89
  service.perform(selected, $scope);
@@ -82,8 +95,8 @@
82
95
 
83
96
  // Check if the form's model skeleton is correct
84
97
  expect(modalConfig.model.id).toBe(selected.id);
85
- expect(modalConfig.model.original_node_count).toBe(mockWorkerNodes.length);
86
- expect(modalConfig.model.node_count).toBe(mockWorkerNodes.length);
98
+ expect(modalConfig.model.original_node_count).toBe(mockDefaultWorker.node_count);
99
+ expect(modalConfig.model.node_count).toBe(mockDefaultWorker.node_count);
87
100
  expect(modalConfig.title).toBeDefined();
88
101
  expect(modalConfig.schema).toBeDefined();
89
102
  expect(modalConfig.form).toBeDefined();
@@ -85,10 +85,7 @@
85
85
  setResponseAsDefaultIfUnset('master_flavor_id', 'master_flavor_id');
86
86
  setResponseAsDefaultIfUnset('node_count', 'node_count');
87
87
  setResponseAsDefaultIfUnset('flavor_id', 'flavor_id');
88
-
89
- if (template.floating_ip_enabled !== null) {
90
- $scope.model.floating_ip_enabled = template.floating_ip_enabled;
91
- }
88
+ setResponseAsDefaultIfUnset('master_lb_enabled', 'master_lb_enabled');
92
89
 
93
90
  if (!template.labels) { return; }
94
91
 
@@ -97,6 +94,12 @@
97
94
  // If a template label exists as a field on the form -> Set it as a default
98
95
  setLabelResponseAsDefault('auto_scaling_enabled', 'auto_scaling_enabled', true);
99
96
  setLabelResponseAsDefault('auto_healing_enabled', 'auto_healing_enabled', true);
97
+ setLabelResponseAsDefault(
98
+ 'master_lb_floating_ip_enabled',
99
+ 'master_lb_floating_ip_enabled',
100
+ true);
101
+ // Forcibly clear allowed cidr values on template load. Otherwise this value becomes nil.
102
+ $scope.model.api_master_lb_allowed_cidrs = MODEL_DEFAULTS.api_master_lb_allowed_cidrs;
100
103
 
101
104
  // Set default `ingress_controller` based on its label
102
105
  if (template.labels.ingress_controller !== null &&
@@ -204,12 +204,14 @@
204
204
 
205
205
  it('should always override some model properties by values from ' +
206
206
  'retrieved cluster template', function() {
207
- $scope.model.floating_ip_enabled = !MODEL_DEFAULTS.floating_ip_enabled;
208
- templateResponse.floating_ip_enabled = !$scope.model.floating_ip_enabled;
209
- $scope.model.cluster_template_id = '99'; // Triggers bussines logic revalidation
207
+ $scope.model.master_lb_floating_ip_enabled = !MODEL_DEFAULTS.master_lb_floating_ip_enabled;
208
+ templateResponse.master_lb_floating_ip_enabled = !$scope.model.master_lb_floating_ip_enabled;
209
+ $scope.model.cluster_template_id = '99'; // Triggers business logic revalidation
210
210
  $scope.$apply();
211
211
 
212
- expect($scope.model.floating_ip_enabled).toBe(templateResponse.floating_ip_enabled);
212
+ expect($scope.model.master_lb_floating_ip_enabled).toBe(
213
+ templateResponse.master_lb_floating_ip_enabled
214
+ );
213
215
  });
214
216
 
215
217
  it('should always override some model\'s properties by values from ' +
@@ -220,11 +222,16 @@
220
222
  templateResponse.labels.auto_scaling_enabled = 'true';
221
223
  model.auto_healing_enabled = true;
222
224
  templateResponse.labels.auto_healing_enabled = 'false';
223
- model.cluster_template_id = '99'; // Triggers bussines logic revalidation
225
+ model.api_master_lb_allowed_cidrs = "192.168.67.0/24";
226
+ templateResponse.labels.api_master_lb_allowed_cidrs = "10.0.0.1/16";
227
+ model.cluster_template_id = '99'; // Triggers business logic revalidation
224
228
  $scope.$apply();
225
229
 
226
230
  expect(model.auto_scaling_enabled).toBe(true);
227
231
  expect(model.auto_healing_enabled).toBe(false);
232
+ expect($scope.model.api_master_lb_allowed_cidrs).toBe(
233
+ MODEL_DEFAULTS.api_master_lb_allowed_cidrs
234
+ );
228
235
  });
229
236
 
230
237
  it('should not fail if the cluster template response is empty', function() {
@@ -0,0 +1,13 @@
1
+ <h1 class="h4" translate>Network</h1>
2
+
3
+ <p translate>You can choose to create a new network for this cluster, or use an existing network. If you use an existing, it needs to have a subnet and router with a gateway on the external network. You may also need to take care not to conflict with CIDRs in use by the Kubernetes pod and service network.</p>
4
+
5
+
6
+ <h1 class="h4" translate>API Loadbalancer: Floating IP</h1>
7
+
8
+ <p translate>Making the Kubernetes API accessible from your private network only is the most secure option (the default), but access will be limited to compute instances on the same private network or a VPN to that network.</p>
9
+ <p translate>Making the Kubernetes API accessible from the public internet with a floating IP is convenient, but may represent a security risk. When selecting this option, it is recommended to set Allowed CIDRs to limit access to a trusted IP address range.</p>
10
+
11
+
12
+ <h1 class="h4" translate>API Loadbalancer: Allowed CIDRs</h1>
13
+ <p translate>If this field is left empty, the API Loadbalancer will accept connections from any address. When set to one or more CIDR then only those, plus the internal network, are permitted access to the Kubernetes API Loadbalancer.</em></p>
@@ -44,6 +44,9 @@
44
44
  // comma-separated key=value with optional space after comma
45
45
  var REGEXP_KEY_VALUE = /^(\w+=[^,]+,?\s?)+$/;
46
46
 
47
+ // Comma-separated CIDR list. Allows lots of variation to include v4 and v6.
48
+ var REGEXP_CIDR_LIST = /^[a-f0-9\.:]+\/[0-9]+(,\s?[a-f0-9\.:]+\/[0-9]+)*$/;
49
+
47
50
  // Object name, must start with alphabetical character.
48
51
  var REGEXP_CLUSTER_NAME = /^[a-zA-Z][a-zA-Z0-9_\-\.]*$/;
49
52
 
@@ -109,7 +112,8 @@
109
112
  'create_network': { type: 'boolean' },
110
113
  'fixed_network': { type: 'string' },
111
114
  'fixed_subnet': { type: 'string' },
112
- 'floating_ip_enabled': { type: 'boolean' },
115
+ 'master_lb_floating_ip_enabled': { type: 'boolean' },
116
+ 'api_master_lb_allowed_cidrs': { type: 'string' },
113
117
  'ingress_controller': { type: 'object' },
114
118
 
115
119
  'auto_healing_enabled': { type: 'boolean' },
@@ -359,11 +363,6 @@
359
363
  type: 'fieldset',
360
364
  title: gettext('Network'),
361
365
  items: [
362
- {
363
- key: 'master_lb_enabled',
364
- type: 'checkbox',
365
- title: gettext('Enable Load Balancer for Master Nodes')
366
- },
367
366
  {
368
367
  key: 'create_network',
369
368
  title: gettext('Create New Network'),
@@ -398,25 +397,65 @@
398
397
  },
399
398
  {
400
399
  type: 'fieldset',
401
- title: gettext('Network Access Control'),
400
+ title: gettext('Kubernetes API Loadbalancer'),
402
401
  items: [
403
402
  {
404
- key: 'floating_ip_enabled',
403
+ key: 'master_lb_enabled',
404
+ type: 'checkbox',
405
+ title: gettext('Enable Load Balancer for Kubernetes API'),
406
+ onChange: function(value) {
407
+ if (value) {
408
+ model.master_count = MODEL_DEFAULTS.master_count;
409
+ // Reset values to defaults. They are null after being disabled.
410
+ model.master_lb_floating_ip_enabled =
411
+ MODEL_DEFAULTS.master_lb_floating_ip_enabled;
412
+ model.api_master_lb_allowed_cidrs =
413
+ MODEL_DEFAULTS.api_master_lb_allowed_cidrs;
414
+ } else {
415
+ // Without master_lb_enabled, we can only support
416
+ // a single master node.
417
+ model.master_count = 1;
418
+ }
419
+ model.isSingleMasterNode = !value;
420
+ }
421
+ },
422
+ {
423
+ key: 'master_lb_floating_ip_enabled', // formerly floating_ip_enabled
405
424
  type: 'select',
406
- title: gettext('Cluster API'),
425
+ title: gettext('Floating IP'),
407
426
  titleMap: [
408
427
  {value: false, name: gettext('Accessible on private network only')},
409
- {value: true, name: gettext('Accessible on the public internet')}
410
- ]
428
+ {value: true, name: gettext('Accessible with public floating IP')}
429
+ ],
430
+ condition: 'model.master_lb_enabled === true'
431
+ },
432
+ {
433
+ key: 'api_master_lb_allowed_cidrs',
434
+ type: 'text',
435
+ title: gettext('Allowed CIDRs'),
436
+ validationMessage: {
437
+ invalidFormat: gettext('Invalid format. Must be a comma-separated ' +
438
+ 'CIDR string: 192.168.1.5/32,10.0.0.1/24')
439
+ },
440
+ $validators: {
441
+ invalidFormat: function(cidrString) {
442
+ return cidrString === '' || REGEXP_CIDR_LIST.test(cidrString);
443
+ }
444
+ },
445
+ condition: 'model.master_lb_enabled === true',
411
446
  },
412
- // Warning message for the Cluster API
447
+ // Warning message when Kubernetes API has a Floating IP
413
448
  {
414
449
  type: 'template',
415
450
  template: '<div class="alert alert-warning">' +
416
451
  '<span class="fa fa-warning"></span> ' +
417
- gettext('It is generally not recommended to give public access.') +
452
+ gettext('A public floating IP will mean the Kubernetes API is ' +
453
+ 'publically routable on the internet. It is generally not ' +
454
+ 'recommended to give public access to the Kubernetes API. ' +
455
+ 'Consider limiting the access using the Allowed CIDRs ' +
456
+ 'section.') +
418
457
  '</div>',
419
- condition: 'model.floating_ip_enabled == true'
458
+ condition: 'model.master_lb_floating_ip_enabled == true'
420
459
  }
421
460
  ]
422
461
  },
@@ -538,7 +577,8 @@
538
577
  create_network: true,
539
578
  fixed_network: '',
540
579
  fixed_subnet: '',
541
- floating_ip_enabled: false,
580
+ master_lb_floating_ip_enabled: false,
581
+ api_master_lb_allowed_cidrs: '',
542
582
  ingress_controller: '',
543
583
 
544
584
  auto_healing_enabled: true,
@@ -646,7 +686,7 @@
646
686
  fixedSubnets = [{value: "", name: fixedSubnetsInitial}];
647
687
  }
648
688
  // NOTE(dalees): This hardcoded index could be improved by referencing an object instead.
649
- form[0].tabs[2].items[0].items[0].items[3].titleMap = subnetTitleMap;
689
+ form[0].tabs[2].items[0].items[0].items[2].titleMap = subnetTitleMap;
650
690
  model.fixed_subnet = MODEL_DEFAULTS.fixed_subnet;
651
691
  }
652
692
 
@@ -0,0 +1,98 @@
1
+ Metadata-Version: 2.1
2
+ Name: magnum-ui
3
+ Version: 16.0.0.0rc1
4
+ Summary: Magnum User Interface
5
+ Home-page: https://docs.openstack.org/developer/magnum-ui/
6
+ Author: OpenStack
7
+ Author-email: openstack-discuss@lists.openstack.org
8
+ Classifier: Environment :: OpenStack
9
+ Classifier: Intended Audience :: Information Technology
10
+ Classifier: Intended Audience :: System Administrators
11
+ Classifier: License :: OSI Approved :: Apache Software License
12
+ Classifier: Operating System :: POSIX :: Linux
13
+ Classifier: Programming Language :: Python
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.6
16
+ Classifier: Programming Language :: Python :: 3.7
17
+ Classifier: Programming Language :: Python :: 3.8
18
+ Classifier: Programming Language :: Python :: 3.9
19
+ Classifier: Programming Language :: Python :: 3.10
20
+ Classifier: Programming Language :: Python :: 3.11
21
+ License-File: LICENSE
22
+ Requires-Dist: pbr!=2.1.0,>=2.0.0
23
+ Requires-Dist: python-magnumclient>=4.2.0
24
+ Requires-Dist: python-heatclient>=1.18.0
25
+ Requires-Dist: horizon>=17.1.0
26
+
27
+ ========================
28
+ Team and repository tags
29
+ ========================
30
+
31
+ .. image:: https://governance.openstack.org/tc/badges/magnum-ui.svg
32
+ :target: https://governance.openstack.org/tc/reference/tags/index.html
33
+
34
+ .. Change things from this point on
35
+
36
+ =========
37
+ Magnum UI
38
+ =========
39
+
40
+ Horizon plugin for Magnum
41
+
42
+ * Free software: Apache license
43
+ * Source: https://opendev.org/openstack/magnum-ui
44
+ * Bugs: https://bugs.launchpad.net/magnum-ui
45
+ * Documentation: https://docs.openstack.org/magnum-ui/latest/
46
+ * Release notes: https://docs.openstack.org/releasenotes/magnum-ui/
47
+
48
+ Enabling in DevStack
49
+ --------------------
50
+
51
+ Add this repo as an external repository into your ``local.conf`` file::
52
+
53
+ [[local|localrc]]
54
+ enable_plugin magnum-ui https://github.com/openstack/magnum-ui
55
+
56
+ Manual Installation
57
+ -------------------
58
+
59
+ Begin by cloning the Horizon and Magnum UI repositories::
60
+
61
+ git clone https://github.com/openstack/horizon
62
+ git clone https://github.com/openstack/magnum-ui
63
+
64
+ Create a virtual environment and install Horizon dependencies::
65
+
66
+ cd horizon
67
+ python tools/install_venv.py
68
+
69
+ Set up your ``local_settings.py`` file::
70
+
71
+ cp openstack_dashboard/local/local_settings.py.example openstack_dashboard/local/local_settings.py
72
+
73
+ Open up the copied ``local_settings.py`` file in your preferred text
74
+ editor. You will want to customize several settings:
75
+
76
+ - ``OPENSTACK_HOST`` should be configured with the hostname of your
77
+ OpenStack server. Verify that the ``OPENSTACK_KEYSTONE_URL`` and
78
+ ``OPENSTACK_KEYSTONE_DEFAULT_ROLE`` settings are correct for your
79
+ environment. (They should be correct unless you modified your
80
+ OpenStack server to change them.)
81
+
82
+ Install Magnum UI with all dependencies in your virtual environment::
83
+
84
+ tools/with_venv.sh pip install -e ../magnum-ui/
85
+
86
+ And enable it in Horizon::
87
+
88
+ cp ../magnum-ui/magnum_ui/enabled/_1370_project_container_infra_panel_group.py openstack_dashboard/local/enabled
89
+ cp ../magnum-ui/magnum_ui/enabled/_1371_project_container_infra_clusters_panel.py openstack_dashboard/local/enabled
90
+ cp ../magnum-ui/magnum_ui/enabled/_1372_project_container_infra_cluster_templates_panel.py openstack_dashboard/local/enabled
91
+
92
+ To run horizon with the newly enabled Magnum UI plugin run::
93
+
94
+ python manage.py runserver 0.0.0.0:8080
95
+
96
+ to have the application start on port 8080 and the horizon dashboard will be
97
+ available in your browser at http://localhost:8080/
98
+
@@ -191,6 +191,7 @@ releasenotes/notes/add-reno-7d46796dbf41c247.yaml
191
191
  releasenotes/notes/bugfix-cluster-template-hidden-arg-38909eaa92bd8d56.yaml
192
192
  releasenotes/notes/bugfix-set-floating_ip_enabled-default_in-cluster-template-true-ce06118f0e6064ba.yaml
193
193
  releasenotes/notes/improve-cluster-launch-dfc514b51cfa7f0e.yaml
194
+ releasenotes/notes/lb_floating_ip-ca6039444f88a968.yaml
194
195
  releasenotes/notes/newton-dac21adfe6c6b8ee.yaml
195
196
  releasenotes/notes/ocata-b08d6b024c63296b.yaml
196
197
  releasenotes/notes/ocata-summary-a717111a782c7a68.yaml
@@ -205,6 +206,7 @@ releasenotes/notes/upgrade-actions-adf2f749ec0cc817.yaml
205
206
  releasenotes/source/2023.1.rst
206
207
  releasenotes/source/2023.2.rst
207
208
  releasenotes/source/2024.1.rst
209
+ releasenotes/source/2024.2.rst
208
210
  releasenotes/source/conf.py
209
211
  releasenotes/source/index.rst
210
212
  releasenotes/source/newton.rst
@@ -0,0 +1 @@
1
+ {"git_version": "829919f", "is_release": true}
@@ -0,0 +1,8 @@
1
+ ---
2
+ features:
3
+ - |
4
+ The Create Cluster workflow option `floating_ip_enabled` has been replaced
5
+ with `master_lb_floating_ip_enabled` label as the former added floating
6
+ IP's to all nodes, whereas the replacement only adds a floating IP to the
7
+ K8s API loadbalancer itself. The field `floating_ip_enabled` has not
8
+ changed behaviour and can still be used via the CLI.
@@ -0,0 +1,8 @@
1
+ ===========================
2
+ 2023.1 Series Release Notes
3
+ ===========================
4
+
5
+ .. release-notes::
6
+ :branch: unmaintained/2023.1
7
+ :ignore-notes:
8
+ queens-f99244e9db54ccf3.yaml
@@ -1,6 +1,6 @@
1
1
  ===========================
2
- 2023.1 Series Release Notes
2
+ 2024.2 Series Release Notes
3
3
  ===========================
4
4
 
5
5
  .. release-notes::
6
- :branch: stable/2023.1
6
+ :branch: stable/2024.2
@@ -6,6 +6,7 @@
6
6
  :maxdepth: 1
7
7
 
8
8
  unreleased
9
+ 2024.2
9
10
  2024.1
10
11
  2023.2
11
12
  2023.1
@@ -3,4 +3,4 @@ Yoga Series Release Notes
3
3
  =========================
4
4
 
5
5
  .. release-notes::
6
- :branch: stable/yoga
6
+ :branch: unmaintained/yoga