We are glad to announce the release of: skyline-console 3.0.0: OpenStack Skyline Console This release is part of the bobcat release series. The source is available from: https://opendev.org/openstack/skyline-console Download the package from: https://tarballs.openstack.org/skyline-console/ Please report issues through: https://bugs.launchpad.net/skyline-apiserver/+bugs For more details, please see below. Changes in skyline-console 2.0.0.0rc1..3.0.0 -------------------------------------------- a1044d4f feat: update package for release 7a516dfd fix: remove content validator about certification 39855264 fix: show project id and filter data by it f3c18beb fix: fix request twice d2565177 fix: set az as optional when create network 524a0888 fix: fix i18n for affinity(not mandatory) server group 520c930a Update TOX_CONSTRAINTS_FILE for stable/2023.2 f7b950c1 Update .gitreview for stable/2023.2 61e07535 feat: add detail info to action in detail tab 8d0678db admin-menu.jsx updated. d5b58ac1 feat: add action props to ModalAction component 74ffcc62 feat: update ActionButton component 19e1de77 feat: update Confirm component 94b2e8d5 feat: update Action component 961d6d21 fix: fix table height e1893756 fix: remove reboot e2e case bf74084a fix: fix the magic input 3f23280d fix: update delete tip for instance soft delete 711fdaf5 refactor: update render tabs components b36d5593 feat: support custom locale language 06e58119 refactor: refactor create ironic 29c4030d refactor: refactor create instance c6f92259 feat: support custom option col cfe389dd fix: fix the domain description 0bc19114 Add Masakari UI to Skyline-Console a95c588a fix: fix table header buttons style 1f5940fd fix: update policy for project roles 206ffc9e fix: fix the hints of allocation pool 4dcccdd3 fix: add gaps for magic input tags 5b982202 refactor: update magic input value 8732b9ef fix: update magic input component style be82085d fix: remove useless config in e2e config b0101e8a fix: fix cirros version in e2e config e0e0a49e fix: fix virtual resources data display dad25eeb feat: Update i18n Korean translation d0722782 feat: add jwt expire check 4496eb4f feat: update layout styles 2d6f7200 feat: support domain name fuzzy search 38c2939d fix: fix the error message eedea3ec fix: update create metadata a0dcb587 fix: fix edit fip ee25e44c feat: add domain link in projects page 861876cd fix: fix the virtual resource in administrator 1c78e635 feat: update request 0213d8c6 feat: optimize configuration reading ec59419f feat: update color variables 36a69b0a feat: update the cirros version 19922d50 Fix Conflict Object Storage Key Name f395e0e2 fix: fix MagicInput component 3c5aeaa9 feat: set default os_type 482e4ba3 fix: update the time display 614d8370 fix: optimize the Transfer ce254bd8 fix: fix the menu title 5c85078d fix: better display cluster health status 2939a504 fix: fix the port type display 1f8c96a5 fix: Do not remove if the listener has an SNI certificate installed c31a341f fix: fix close the error message 2a0b4429 fix: fix click link in the modal-button b30e7ae9 feat: support clear all selected data for select-table 56230e52 feat: optimize the clicking event in the select-table d792dfc6 fix: fix the pool data f6535f71 Add admin state up switch ce20a90c Add Designate (DNS) UI to Skyline-Console a9370ef2 feat: update zh-cn to zh-hans f6347c1f feat: update the Korean i18n 235ee19d feat: support Korean i18n decd2bfe fix: Fix the label of node count in magnum cluster 4965609c docs: Remove invalid README.rst 27dea86d Update master for stable/2023.1 520504e2 fix: fix the network IP availability showing Diffstat (except docs and test files) ------------------------------------- .eslintrc | 10 +- .gitignore | 1 + .gitreview | 2 +- .stylelintrc.json | 8 +- Gruntfile.js | 8 +- README-zh_CN.rst | 4 +- README.rst | 6 +- config/config.yaml | 10 + config/server.dev.js | 31 + config/utils.js | 64 + config/webpack.common.js | 8 +- config/webpack.dev.js | 20 +- .../configuration/skyline-console-settings.rst | 42 +- jest.config.js | 6 + package.json | 1 + releasenotes/README.rst | 15 - .../Add-JWT-Expire-Check-c4dce4d269782a8c.yaml | 4 + ...e-Count-In-Magnum-Cluster-207d96a2899569b4.yaml | 6 + ...y-And-Usage-Stats-Showing-46c89740ccc36e04.yaml | 10 + ...ize-Configuration-Reading-5914bb51c3ecb0c4.yaml | 7 + .../Support-Clear-Selected-80e66080d37c96e3.yaml | 5 + ...ort-Custom-Local-Language-84ad3016c2469a51.yaml | 10 + ...upport-Domain-Name-Filter-1d433cb2d548ca2f.yaml | 10 + .../Support-Korean-I18n-6f258836f7b30db9.yaml | 10 + ...ate-loadbalancer-switches-721264bd7d7bcf75.yaml | 5 + releasenotes/source/2023.1.rst | 6 + releasenotes/source/index.rst | 1 + .../static/Container.bundle.1663167892.js | 1 - .../static/Container.bundle.1663167892.js.gz | Bin 11883 -> 0 bytes .../static/Container.bundle.1695986149.js | 1 + .../static/Container.bundle.1695986149.js.gz | Bin 0 -> 15324 bytes .../static/Inctance-HA.bundle.1695986149.js | 1 + .../static/Inctance-HA.bundle.1695986149.js.gz | Bin 0 -> 6301 bytes skyline_console/static/asset/image/cloud-logo.svg | 15 + .../{cloud.1663167892.png => cloud.1695986149.png} | Bin ...rd.1663167892.svg => empty-card.1695986149.svg} | 0 ...1663167892.png => load-balancer.1695986149.png} | Bin ...ll.1663167892.png => login-full.1695986149.png} | Bin skyline_console/static/asset/image/logo-extend.svg | 10 - skyline_console/static/asset/image/logo-small.svg | 18 - ...router.1663167892.png => router.1695986149.png} | Bin skyline_console/static/auth.bundle.1663167892.js | 1 - .../static/auth.bundle.1663167892.js.gz | Bin 6904 -> 0 bytes skyline_console/static/auth.bundle.1695986149.js | 1 + .../static/auth.bundle.1695986149.js.gz | Bin 0 -> 7095 bytes skyline_console/static/base.bundle.1663167892.js | 1 - .../static/base.bundle.1663167892.js.gz | Bin 25785 -> 0 bytes skyline_console/static/base.bundle.1695986149.js | 1 + .../static/base.bundle.1695986149.js.gz | Bin 0 -> 25815 bytes skyline_console/static/basic.bundle.1663167892.js | 1 - .../static/basic.bundle.1663167892.js.gz | Bin 73725 -> 0 bytes skyline_console/static/basic.bundle.1695986149.js | 1 + .../static/basic.bundle.1695986149.js.gz | Bin 0 -> 78599 bytes skyline_console/static/common.bundle.1663167892.js | 1 - .../static/common.bundle.1663167892.js.gz | Bin 93051 -> 0 bytes skyline_console/static/common.bundle.1695986149.js | 1 + .../static/common.bundle.1695986149.js.gz | Bin 0 -> 95386 bytes .../static/compute.bundle.1663167892.js | 1 - .../static/compute.bundle.1663167892.js.gz | Bin 67890 -> 0 bytes .../static/compute.bundle.1695986149.js | 1 + .../static/compute.bundle.1695986149.js.gz | Bin 0 -> 68406 bytes .../static/configuration.bundle.1663167892.js | 1 - .../static/configuration.bundle.1663167892.js.gz | Bin 8605 -> 0 bytes .../static/configuration.bundle.1695986149.js | 1 + .../static/configuration.bundle.1695986149.js.gz | Bin 0 -> 8630 bytes .../static/container-infra.bundle.1663167892.js | 1 - .../static/container-infra.bundle.1663167892.js.gz | Bin 8598 -> 0 bytes .../static/container-infra.bundle.1695986149.js | 1 + .../static/container-infra.bundle.1695986149.js.gz | Bin 0 -> 12898 bytes skyline_console/static/heat.bundle.1663167892.js | 1 - .../static/heat.bundle.1663167892.js.gz | Bin 5109 -> 0 bytes skyline_console/static/heat.bundle.1695986149.js | 1 + .../static/heat.bundle.1695986149.js.gz | Bin 0 -> 5108 bytes .../static/identity.bundle.1663167892.js | 1 - .../static/identity.bundle.1663167892.js.gz | Bin 15967 -> 0 bytes .../static/identity.bundle.1695986149.js | 1 + .../static/identity.bundle.1695986149.js.gz | Bin 0 -> 16750 bytes skyline_console/static/index.html | 2 +- skyline_console/static/main.bundle.1663167892.js | 83 - .../static/main.bundle.1663167892.js.gz | Bin 911416 -> 0 bytes skyline_console/static/main.bundle.1695986149.js | 83 + .../static/main.bundle.1695986149.js.gz | Bin 0 -> 981281 bytes .../static/management.bundle.1663167892.js | 1 - .../static/management.bundle.1695986149.js | 1 + .../static/monitor-center.bundle.1663167892.js | 1 - .../static/monitor-center.bundle.1663167892.js.gz | Bin 29548 -> 0 bytes .../static/monitor-center.bundle.1695986149.js | 1 + .../static/monitor-center.bundle.1695986149.js.gz | Bin 0 -> 29772 bytes .../static/network.bundle.1663167892.js | 1 - .../static/network.bundle.1663167892.js.gz | Bin 65183 -> 0 bytes .../static/network.bundle.1695986149.js | 1 + .../static/network.bundle.1695986149.js.gz | Bin 0 -> 71352 bytes skyline_console/static/runtime.1663167892.js | 1 - skyline_console/static/runtime.1695986149.js | 1 + skyline_console/static/share.bundle.1663167892.js | 1 - .../static/share.bundle.1663167892.js.gz | Bin 19404 -> 0 bytes skyline_console/static/share.bundle.1695986149.js | 1 + .../static/share.bundle.1695986149.js.gz | Bin 0 -> 19451 bytes .../static/storage.bundle.1663167892.js | 1 - .../static/storage.bundle.1663167892.js.gz | Bin 18884 -> 0 bytes .../static/storage.bundle.1695986149.js | 1 + .../static/storage.bundle.1695986149.js.gz | Bin 0 -> 18954 bytes .../static/user-center.bundle.1663167892.js.gz | Bin 7453 -> 0 bytes ...3167892.js => user-center.bundle.1695986149.js} | 2 +- .../static/user-center.bundle.1695986149.js.gz | Bin 0 -> 7589 bytes .../static/vendor.bundle.1663167892.js.gz | Bin 1309411 -> 0 bytes ...e.1663167892.js => vendor.bundle.1695986149.js} | 72 +- .../static/vendor.bundle.1695986149.js.gz | Bin 0 -> 1325812 bytes src/client/client/constants.js | 4 + src/client/client/request.js | 15 +- src/client/designate/index.js | 91 + src/client/index.js | 2 + src/client/masakari/index.js | 45 + src/components/Cards/NotFound/index.less | 2 +- src/components/Confirm/index.jsx | 6 + src/components/DetailCard/index.jsx | 26 +- src/components/DetailCard/index.less | 5 - src/components/Form/index.less | 2 +- src/components/FormItem/NetworkSelect/index.jsx | 11 +- src/components/FormItem/SelectTable/index.jsx | 35 +- src/components/FormItem/TabSelectTable/index.jsx | 23 +- src/components/FormItem/Upload/index.jsx | 4 +- .../Layout/GlobalHeader/AvatarDropdown.jsx | 94 +- src/components/Layout/GlobalHeader/Token.jsx | 2 +- src/components/Layout/GlobalHeader/index.less | 2 +- src/components/Layout/GlobalNav/index.jsx | 4 +- src/components/Layout/GlobalNav/index.less | 2 +- src/components/Loading/index.jsx | 2 +- src/components/MagicInput/index.jsx | 21 +- src/components/MagicInput/index.less | 17 +- src/components/ModalButton/index.jsx | 93 +- src/components/Notify/index.jsx | 15 +- src/components/Progress/index.jsx | 6 +- src/components/ProjectProgress/index.jsx | 6 +- src/components/QuotaChart/Ring.jsx | 6 +- src/components/SelectLang/index.jsx | 26 +- src/components/TableButton/RuleButton.jsx | 1 + src/components/TableButton/index.jsx | 13 +- src/components/Tables/Base/Action/index.jsx | 12 + src/components/Tables/Base/ActionButton/index.jsx | 104 +- src/components/Tables/Base/index.jsx | 2 +- src/components/Tables/Base/index.less | 3 +- src/components/Tables/SimpleTable/index.jsx | 2 +- src/containers/Action/ModalAction/index.jsx | 5 + src/containers/List/index.jsx | 29 +- src/containers/List/index.less | 2 +- src/core/i18n.js | 75 +- src/core/index.jsx | 22 +- src/layouts/Base/Menu.jsx | 2 +- src/layouts/Base/index.jsx | 4 +- src/layouts/Base/index.less | 14 +- src/layouts/Blank/index.jsx | 7 +- src/layouts/admin-menu.jsx | 61 + src/layouts/menu.jsx | 41 +- src/locales/en.json | 111 +- src/locales/index.js | 6 +- src/locales/ko-kr.json | 3081 ++++++++++++++++++++ src/locales/{zh.json => zh-hans.json} | 113 +- src/pages/auth/containers/ChangePassword/index.jsx | 2 +- .../auth/containers/ChangePassword/index.less | 6 +- src/pages/auth/containers/Login/index.jsx | 12 +- src/pages/auth/containers/Login/index.less | 6 +- .../AdminOverview/components/ResourceOverview.jsx | 12 +- .../AdminOverview/components/VirtualResource.jsx | 6 +- src/pages/base/containers/AdminOverview/style.less | 2 +- .../Overview/components/QuotaOverview.jsx | 6 +- src/pages/base/containers/Overview/style.less | 2 +- src/pages/basic/routes/index.js | 13 +- .../containers/Flavor/actions/ManageAccess.jsx | 2 +- .../actions/StepCreate/AccessTypeSetting.jsx | 5 +- .../Flavor/actions/StepCreate/ParamSetting.jsx | 2 +- .../compute/containers/Image/actions/Create.jsx | 14 +- .../containers/Image/actions/ManageAccess.jsx | 2 +- .../Instance/Detail/BaseDetail/index.jsx | 4 +- .../SecurityGroup/action/ManageSecurityGroup.jsx | 1 - .../Instance/Detail/SecurityGroup/index.jsx | 2 + .../actions/CreateIronic/NetworkStep/index.jsx | 1 - .../Instance/actions/CreateIronic/index.jsx | 34 +- .../Instance/actions/ManageSecurityGroup.jsx | 1 - .../compute/containers/Instance/actions/Resize.jsx | 2 +- .../containers/Instance/actions/SoftDelete.jsx | 6 +- .../actions/StepCreate/NetworkStep/index.jsx | 1 - .../Instance/actions/StepCreate/index.jsx | 33 +- src/pages/compute/containers/Instance/index.jsx | 4 + .../containers/Metadata/actions/Create.jsx | 5 + .../containers/ClusterTemplates/Detail/index.jsx | 4 +- .../containers/Clusters/Detail/BaseDetail.jsx | 4 +- .../containers/Clusters/Detail/index.jsx | 4 +- .../container-infra/containers/Clusters/index.jsx | 1 + .../containers/Backups/Detail/BaseDetail.jsx | 6 +- .../Configurations/Detail/BaseDetail.jsx | 6 +- .../containers/Instances/Detail/Backups.jsx | 3 +- .../containers/Instances/Detail/BaseDetail.jsx | 6 +- src/pages/ha/App.jsx | 19 + .../ha/containers/Hosts/Detail/BaseDetail.jsx | 64 + src/pages/ha/containers/Hosts/Detail/index.jsx | 73 + src/pages/ha/containers/Hosts/actions/Delete.jsx | 53 + src/pages/ha/containers/Hosts/actions/Update.jsx | 83 + src/pages/ha/containers/Hosts/actions/index.jsx | 28 + src/pages/ha/containers/Hosts/index.jsx | 126 + .../containers/Notifications/Detail/BaseDetail.jsx | 80 + .../ha/containers/Notifications/Detail/index.jsx | 59 + src/pages/ha/containers/Notifications/index.jsx | 87 + .../ha/containers/Segments/Detail/BaseDetail.jsx | 56 + .../ha/containers/Segments/Detail/HostDetail.jsx | 85 + src/pages/ha/containers/Segments/Detail/index.jsx | 70 + .../ha/containers/Segments/actions/AddHost.jsx | 131 + .../ha/containers/Segments/actions/Delete.jsx | 54 + .../Segments/actions/StepCreate/StepHost.jsx | 189 ++ .../Segments/actions/StepCreate/StepSegment.jsx | 76 + .../Segments/actions/StepCreate/index.jsx | 151 + .../ha/containers/Segments/actions/Update.jsx | 74 + src/pages/ha/containers/Segments/actions/index.jsx | 34 + src/pages/ha/containers/Segments/index.jsx | 97 + src/pages/ha/routes/index.js | 40 + .../identity/containers/Domain/actions/Create.jsx | 20 +- .../identity/containers/Domain/actions/Delete.jsx | 21 +- .../identity/containers/Project/actions/Delete.jsx | 21 +- .../containers/Project/actions/ManageUser.jsx | 10 +- .../containers/Project/actions/ManageUserGroup.jsx | 10 +- src/pages/identity/containers/Project/index.jsx | 18 +- .../identity/containers/User/actions/Create.jsx | 8 +- .../identity/containers/User/actions/Edit.jsx | 4 + src/pages/identity/containers/User/index.jsx | 9 + src/pages/identity/containers/UserGroup/index.jsx | 9 + .../containers/OpenstackService/Services.jsx | 2 +- .../containers/Overview/components/Tops/index.jsx | 3 +- src/pages/monitor/containers/Overview/config.jsx | 6 +- .../monitor/containers/PhysicalNode/index.jsx | 3 +- .../containers/StorageCluster/RenderTabs.jsx | 23 +- .../monitor/containers/StorageCluster/index.jsx | 6 +- .../monitor/containers/StorageCluster/index.less | 4 +- .../containers/Certificate/actions/Create.jsx | 14 +- .../containers/DNS/Reverse/Detail/BaseDetail.jsx | 61 + .../containers/DNS/Reverse/Detail/index.jsx | 53 + .../network/containers/DNS/Reverse/actions/Set.jsx | 73 + .../containers/DNS/Reverse/actions/Unset.jsx | 51 + .../containers/DNS/Reverse/actions/index.jsx | 29 + src/pages/network/containers/DNS/Reverse/index.jsx | 62 + .../DNS/Zones/Detail/BaseDetail/index.jsx | 115 + .../Detail/RecordSets/Detail/BaseDetail/index.jsx | 105 + .../DNS/Zones/Detail/RecordSets/Detail/index.jsx | 76 + .../DNS/Zones/Detail/RecordSets/actions/Delete.jsx | 56 + .../DNS/Zones/Detail/RecordSets/actions/Update.jsx | 84 + .../DNS/Zones/Detail/RecordSets/actions/index.jsx | 32 + .../DNS/Zones/Detail/RecordSets/index.jsx | 68 + .../network/containers/DNS/Zones/Detail/index.jsx | 81 + .../containers/DNS/Zones/actions/Create.jsx | 91 + .../containers/DNS/Zones/actions/Delete.jsx | 52 + .../DNS/Zones/actions/Records/Create.jsx | 70 + .../containers/DNS/Zones/actions/Update.jsx | 95 + .../network/containers/DNS/Zones/actions/index.jsx | 36 + src/pages/network/containers/DNS/Zones/index.jsx | 60 + .../containers/FloatingIp/actions/Allocate.jsx | 58 +- .../network/containers/FloatingIp/actions/Edit.jsx | 18 +- .../LoadBalancers/Listener/Actions/Edit.jsx | 14 + .../Detail/Member/Actions/CreateMember.jsx | 2 +- .../actions/StepCreate/BaseStep/index.jsx | 16 +- .../actions/StepCreate/index.jsx | 10 +- .../HealthMonitorStep/index.jsx | 10 +- .../StepCreateComponents/ListenerStep/index.jsx | 7 + .../StepCreateComponents/PoolStep/index.jsx | 14 +- .../network/containers/Network/Detail/index.jsx | 8 +- .../containers/Network/actions/CreateNetwork.jsx | 57 +- .../containers/Network/actions/CreateSubnet.jsx | 47 +- .../containers/Port/Detail/BaseDetail/index.jsx | 2 - .../Port/Detail/SecurityGroups/index.jsx | 1 + .../Port/actions/ManageSecurityGroup.jsx | 1 - .../containers/QoSPolicy/actions/Create.jsx | 53 +- .../containers/Router/Port/Detail/BaseDetail.jsx | 2 - .../network/containers/Subnet/Detail/Detail.jsx | 4 +- .../network/containers/Subnet/Detail/index.jsx | 1 + src/pages/network/containers/Subnet/index.jsx | 4 +- src/pages/network/containers/Topology/index.jsx | 31 +- src/pages/network/routes/index.js | 10 + .../containers/ShareGroupType/actions/Create.jsx | 5 +- .../ShareGroupType/actions/ManageAccess.jsx | 2 +- .../containers/ShareInstance/Detail/index.jsx | 4 +- .../share/containers/ShareNetwork/Detail/index.jsx | 2 +- .../share/containers/ShareServer/Detail/index.jsx | 4 +- .../share/containers/ShareType/actions/Create.jsx | 5 +- .../containers/ShareType/actions/ManageAccess.jsx | 2 +- .../containers/Volume/Detail/BaseDetail.jsx | 2 +- .../VolumeType/VolumeType/actions/Create.jsx | 5 +- .../VolumeType/VolumeType/actions/ManageAccess.jsx | 2 +- src/resources/dns/record.jsx | 110 + src/resources/keystone/domain.jsx | 34 +- src/resources/keystone/{project.js => project.jsx} | 38 +- src/resources/octavia/secrets.jsx | 10 + src/resources/prometheus/monitoring.js | 6 +- src/stores/designate/recordSets.js | 51 + src/stores/designate/reverse.js | 49 + src/stores/designate/zones.js | 37 + src/stores/keystone/project.js | 18 + src/stores/masakari/hosts.js | 68 + src/stores/masakari/notifications.js | 22 + src/stores/masakari/segments.js | 27 + src/stores/neutron/network.js | 6 +- src/stores/neutron/subnet.js | 4 +- src/stores/root.js | 14 +- src/styles/base.less | 2 +- src/styles/variables.less | 23 + src/utils/constants.js | 2 +- src/utils/dns-rrtype.js | 46 + src/utils/translate.js | 4 +- src/utils/translate.spec.js | 10 +- test/e2e/config/config-compute.yaml | 3 +- test/e2e/config/config-network.yaml | 3 +- test/e2e/config/config-other.yaml | 3 +- test/e2e/config/config-storage.yaml | 3 +- test/e2e/config/config.yaml | 3 +- .../e2e/integration/pages/compute/instance.spec.js | 28 +- .../e2e/integration/pages/identity/project.spec.js | 1 + test/e2e/support/commands.js | 23 +- test/e2e/support/common.js | 2 +- test/e2e/support/detail-commands.js | 2 +- test/e2e/support/index.js | 2 +- test/e2e/support/table-commands.js | 20 +- test/unit/locales/{zh-CN.js => zh-hans.js} | 0 tox.ini | 4 +- yarn.lock | 5 + 331 files changed, 8812 insertions(+), 827 deletions(-)