From 4a67aa74f46144df2d55660048121b749386c85c Mon Sep 17 00:00:00 2001 From: Abhishek Kumar Date: Tue, 11 May 2021 11:54:23 +0530 Subject: [PATCH 1/8] ui: prevent same/empty string docHelp override Signed-off-by: Abhishek Kumar --- ui/src/utils/plugins.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/src/utils/plugins.js b/ui/src/utils/plugins.js index 905f0b1bbfde..067ffffaab50 100644 --- a/ui/src/utils/plugins.js +++ b/ui/src/utils/plugins.js @@ -175,7 +175,7 @@ export const configUtilPlugin = { if (docHelp && docHelpMappings && docHelpMappings.constructor === Object && Object.keys(docHelpMappings).length > 0) { for (var key in docHelpMappings) { - if (docHelp.includes(key)) { + if (docHelp.includes(key) && docHelpMappings[key] && docHelp != docHelpMappings[key]) { docHelp = docHelp.replace(key, docHelpMappings[key]) break } From 79ca466301d75068e13729e8a09f436588beb4e5 Mon Sep 17 00:00:00 2001 From: Abhishek Kumar Date: Tue, 11 May 2021 12:09:29 +0530 Subject: [PATCH 2/8] add list of all existing docHelp suffixes Signed-off-by: Abhishek Kumar --- ui/public/config.json | 114 +++++++++++++++++++++++++++++++++++++++- ui/src/utils/plugins.js | 2 +- 2 files changed, 114 insertions(+), 2 deletions(-) diff --git a/ui/public/config.json b/ui/public/config.json index 9f3b723c27f0..a60a8b71106d 100644 --- a/ui/public/config.json +++ b/ui/public/config.json @@ -46,7 +46,119 @@ "jp": "label.japanese.keyboard", "sc": "label.simplified.chinese.keyboard" }, - "docHelpMappings": {}, + "docHelpMappings": { + "adminguide/accounts.html": "adminguide/accounts.html", + "adminguide/accounts.html#domains": "adminguide/accounts.html#domains", + "adminguide/accounts.html#roles": "adminguide/accounts.html#roles", + "adminguide/accounts.html#users": "adminguide/accounts.html#users", + "adminguide/accounts.html#using-an-ldap-server-for-user-authentication": "adminguide/accounts.html#using-an-ldap-server-for-user-authentication", + "adminguide/events.html": "adminguide/events.html", + "adminguide/events.html#deleting-and-archiving-events-and-alerts": "adminguide/events.html#deleting-and-archiving-events-and-alerts", + "adminguide/hosts.html#disabling-and-enabling-zones-pods-and-clusters": "adminguide/hosts.html#disabling-and-enabling-zones-pods-and-clusters", + "adminguide/hosts.html#kvm-rolling-maintenance": "adminguide/hosts.html#kvm-rolling-maintenance", + "adminguide/hosts.html#maintaining-hypervisors-on-hosts": "adminguide/hosts.html#maintaining-hypervisors-on-hosts", + "adminguide/hosts.html#out-of-band-management": "adminguide/hosts.html#out-of-band-management", + "adminguide/hosts.html#removing-hosts": "adminguide/hosts.html#removing-hosts", + "adminguide/installguide/configuration.html#adding-a-cluster": "adminguide/installguide/configuration.html#adding-a-cluster", + "adminguide/installguide/configuration.html#adding-a-host": "adminguide/installguide/configuration.html#adding-a-host", + "adminguide/installguide/hosts.html#disabling-and-enabling-zones-pods-and-clusters": "adminguide/installguide/hosts.html#disabling-and-enabling-zones-pods-and-clusters", + "adminguide/management.html#administrator-alerts": "adminguide/management.html#administrator-alerts", + "adminguide/management.html#reporting-cpu-sockets": "adminguide/management.html#reporting-cpu-sockets", + "adminguide/networking_and_traffic.html#acl-on-private-gateway": "adminguide/networking_and_traffic.html#acl-on-private-gateway", + "adminguide/networking_and_traffic.html#adding-a-private-gateway-to-a-vpc": "adminguide/networking_and_traffic.html#adding-a-private-gateway-to-a-vpc", + "adminguide/networking_and_traffic.html#adding-a-security-group": "adminguide/networking_and_traffic.html#adding-a-security-group", + "adminguide/networking_and_traffic.html#adding-a-virtual-private-cloud": "adminguide/networking_and_traffic.html#adding-a-virtual-private-cloud", + "adminguide/networking_and_traffic.html#advanced-zone-physical-network-configuration": "adminguide/networking_and_traffic.html#advanced-zone-physical-network-configuration", + "adminguide/networking_and_traffic.html#basic-zone-physical-network-configuration": "adminguide/networking_and_traffic.html#basic-zone-physical-network-configuration", + "adminguide/networking_and_traffic.html#configure-guest-traffic-in-an-advanced-zone": "adminguide/networking_and_traffic.html#configure-guest-traffic-in-an-advanced-zone", + "adminguide/networking_and_traffic.html#configuring-a-virtual-private-cloud": "adminguide/networking_and_traffic.html#configuring-a-virtual-private-cloud", + "adminguide/networking_and_traffic.html#configuring-network-access-control-list": "adminguide/networking_and_traffic.html#configuring-network-access-control-list", + "adminguide/networking_and_traffic.html#creating-acl-lists": "adminguide/networking_and_traffic.html#creating-acl-lists", + "adminguide/networking_and_traffic.html#creating-and-updating-a-vpn-customer-gateway": "adminguide/networking_and_traffic.html#creating-and-updating-a-vpn-customer-gateway", + "adminguide/networking_and_traffic.html#creating-an-internal-lb-rule": "adminguide/networking_and_traffic.html#creating-an-internal-lb-rule", + "adminguide/networking_and_traffic.html#creating-a-vpn-connection": "adminguide/networking_and_traffic.html#creating-a-vpn-connection", + "adminguide/networking_and_traffic.html#creating-a-vpn-gateway-for-the-vpc": "adminguide/networking_and_traffic.html#creating-a-vpn-gateway-for-the-vpc", + "adminguide/networking_and_traffic.html#enabling-or-disabling-static-nat": "adminguide/networking_and_traffic.html#enabling-or-disabling-static-nat", + "adminguide/networking_and_traffic.html#load-balancing-across-tiers": "adminguide/networking_and_traffic.html#load-balancing-across-tiers", + "adminguide/networking_and_traffic.html#releasing-an-ip-address-alloted-to-a-vpc": "adminguide/networking_and_traffic.html#releasing-an-ip-address-alloted-to-a-vpc", + "adminguide/networking_and_traffic.html#reserving-public-ip-addresses-and-vlans-for-accounts": "adminguide/networking_and_traffic.html#reserving-public-ip-addresses-and-vlans-for-accounts", + "adminguide/networking_and_traffic.html#restarting-and-removing-a-vpn-connection": "adminguide/networking_and_traffic.html#restarting-and-removing-a-vpn-connection", + "adminguide/networking_and_traffic.html#security-groups": "adminguide/networking_and_traffic.html#security-groups", + "adminguide/networking_and_traffic.html#setting-up-a-site-to-site-vpn-connection": "adminguide/networking_and_traffic.html#setting-up-a-site-to-site-vpn-connection", + "adminguide/networking_and_traffic.html#updating-and-removing-a-vpn-customer-gateway": "adminguide/networking_and_traffic.html#updating-and-removing-a-vpn-customer-gateway", + "adminguide/networking.html#creating-a-new-network-offering": "adminguide/networking.html#creating-a-new-network-offering", + "adminguide/networking.html#network-offerings": "adminguide/networking.html#network-offerings", + "adminguide/networking.html#network-service-providers": "adminguide/networking.html#network-service-providers", + "adminguide/projects.html": "adminguide/projects.html", + "adminguide/projects.html#accepting-a-membership-invitation": "adminguide/projects.html#accepting-a-membership-invitation", + "adminguide/projects.html#adding-project-members-from-the-ui": "adminguide/projects.html#adding-project-members-from-the-ui", + "adminguide/projects.html#creating-a-new-project": "adminguide/projects.html#creating-a-new-project", + "adminguide/projects.html#sending-project-membership-invitations": "adminguide/projects.html#sending-project-membership-invitations", + "adminguide/projects.html#suspending-or-deleting-a-project": "adminguide/projects.html#suspending-or-deleting-a-project", + "adminguide/reliability.html#ha-for-hosts": "adminguide/reliability.html#ha-for-hosts", + "adminguide/service_offerings.html#compute-and-disk-service-offerings": "adminguide/service_offerings.html#compute-and-disk-service-offerings", + "adminguide/service_offerings.html#creating-a-new-compute-offering": "adminguide/service_offerings.html#creating-a-new-compute-offering", + "adminguide/service_offerings.html#creating-a-new-disk-offering": "adminguide/service_offerings.html#creating-a-new-disk-offering", + "adminguide/service_offerings.html#creating-a-new-system-service-offering": "adminguide/service_offerings.html#creating-a-new-system-service-offering", + "adminguide/service_offerings.html#modifying-or-deleting-a-service-offering": "adminguide/service_offerings.html#modifying-or-deleting-a-service-offering", + "adminguide/service_offerings.html#system-service-offerings": "adminguide/service_offerings.html#system-service-offerings", + "adminguide/storage.html#creating-a-new-volume": "adminguide/storage.html#creating-a-new-volume", + "adminguide/storage.html#id2": "adminguide/storage.html#id2", + "adminguide/storage.html#primary-storage": "adminguide/storage.html#primary-storage", + "adminguide/storage.html#resizing-volumes": "adminguide/storage.html#resizing-volumes", + "adminguide/storage.html#secondary-storage": "adminguide/storage.html#secondary-storage", + "adminguide/storage.html#uploading-an-existing-volume-to-a-virtual-machine": "adminguide/storage.html#uploading-an-existing-volume-to-a-virtual-machine", + "adminguide/storage.html#working-with-volumes": "adminguide/storage.html#working-with-volumes", + "adminguide/storage.html#working-with-volume-snapshots": "adminguide/storage.html#working-with-volume-snapshots", + "adminguide/systemvm.html": "adminguide/systemvm.html", + "adminguide/systemvm.html#upgrading-virtual-routers": "adminguide/systemvm.html#upgrading-virtual-routers", + "adminguide/systemvm.html#virtual-router": "adminguide/systemvm.html#virtual-router", + "adminguide/templates.html": "adminguide/templates.html", + "adminguide/templates.html#attaching-an-iso-to-a-vm": "adminguide/templates.html#attaching-an-iso-to-a-vm", + "adminguide/templates.html#exporting-templates": "adminguide/templates.html#exporting-templates", + "adminguide/templates.html#id10": "adminguide/templates.html#id10", + "adminguide/templates.html#sharing-templates-with-other-accounts-projects": "adminguide/templates.html#sharing-templates-with-other-accounts-projects", + "adminguide/templates.html#uploading-templates-and-isos-from-a-local-computer": "adminguide/templates.html#uploading-templates-and-isos-from-a-local-computer", + "adminguide/templates.html#uploading-templates-from-a-remote-http-server": "adminguide/templates.html#uploading-templates-from-a-remote-http-server", + "adminguide/templates.html#working-with-isos": "adminguide/templates.html#working-with-isos", + "adminguide/virtual_machines.html": "adminguide/virtual_machines.html", + "adminguide/virtual_machines.html#affinity-groups": "adminguide/virtual_machines.html#affinity-groups", + "adminguide/virtual_machines.html#backup-offerings": "adminguide/virtual_machines.html#backup-offerings", + "adminguide/virtual_machines.html#change-affinity-group-for-an-existing-vm": "adminguide/virtual_machines.html#change-affinity-group-for-an-existing-vm", + "adminguide/virtual_machines.html#changing-the-vm-name-os-or-group": "adminguide/virtual_machines.html#changing-the-vm-name-os-or-group", + "adminguide/virtual_machines.html#creating-a-new-affinity-group": "adminguide/virtual_machines.html#creating-a-new-affinity-group", + "adminguide/virtual_machines.html#creating-the-ssh-keypair": "adminguide/virtual_machines.html#creating-the-ssh-keypair", + "adminguide/virtual_machines.html#creating-vm-backups": "adminguide/virtual_machines.html#creating-vm-backups", + "adminguide/virtual_machines.html#creating-vms": "adminguide/virtual_machines.html#creating-vms", + "adminguide/virtual_machines.html#delete-an-affinity-group": "adminguide/virtual_machines.html#delete-an-affinity-group", + "adminguide/virtual_machines.html#deleting-vms": "adminguide/virtual_machines.html#deleting-vms", + "adminguide/virtual_machines.html#how-to-dynamically-scale-cpu-and-ram": "adminguide/virtual_machines.html#how-to-dynamically-scale-cpu-and-ram", + "adminguide/virtual_machines.html#importing-backup-offerings": "adminguide/virtual_machines.html#importing-backup-offerings", + "adminguide/virtual_machines.html#moving-vms-between-hosts-manual-live-migration": "adminguide/virtual_machines.html#moving-vms-between-hosts-manual-live-migration", + "adminguide/virtual_machines.html#resetting-ssh-keys": "adminguide/virtual_machines.html#resetting-ssh-keys", + "adminguide/virtual_machines.html#restoring-vm-backups": "adminguide/virtual_machines.html#restoring-vm-backups", + "adminguide/virtual_machines.html#stopping-and-starting-vms": "adminguide/virtual_machines.html#stopping-and-starting-vms", + "adminguide/virtual_machines.html#using-ssh-keys-for-authentication": "adminguide/virtual_machines.html#using-ssh-keys-for-authentication", + "adminguide/virtual_machines.html#virtual-machine-snapshots": "adminguide/virtual_machines.html#virtual-machine-snapshots", + "installguide/configuration.html#adding-a-pod": "installguide/configuration.html#adding-a-pod", + "installguide/configuration.html#adding-a-zone": "installguide/configuration.html#adding-a-zone", + "installguide/configuration.html#add-primary-storage": "installguide/configuration.html#add-primary-storage", + "installguide/configuration.html#add-secondary-storage": "installguide/configuration.html#add-secondary-storage", + "plugins/cloudian-connector.html": "plugins/cloudian-connector.html", + "plugins/cloudstack-kubernetes-service.html": "plugins/cloudstack-kubernetes-service.html", + "plugins/cloudstack-kubernetes-service.html#creating-a-new-kubernetes-cluster": "plugins/cloudstack-kubernetes-service.html#creating-a-new-kubernetes-cluster", + "plugins/cloudstack-kubernetes-service.html#deleting-kubernetes-cluster": "plugins/cloudstack-kubernetes-service.html#deleting-kubernetes-cluster", + "plugins/cloudstack-kubernetes-service.html#kubernetes-supported-versions": "plugins/cloudstack-kubernetes-service.html#kubernetes-supported-versions", + "plugins/cloudstack-kubernetes-service.html#scaling-kubernetes-cluster": "plugins/cloudstack-kubernetes-service.html#scaling-kubernetes-cluster", + "plugins/cloudstack-kubernetes-service.html#starting-a-stopped-kubernetes-cluster": "plugins/cloudstack-kubernetes-service.html#starting-a-stopped-kubernetes-cluster", + "plugins/cloudstack-kubernetes-service.html#stopping-kubernetes-cluster": "plugins/cloudstack-kubernetes-service.html#stopping-kubernetes-cluster", + "plugins/cloudstack-kubernetes-service.html#upgrading-kubernetes-cluster": "plugins/cloudstack-kubernetes-service.html#upgrading-kubernetes-cluster", + "plugins/nuage-plugin.html?#optional-create-and-enable-vpc-offering": "plugins/nuage-plugin.html?#optional-create-and-enable-vpc-offering", + "plugins/nuage-plugin.html?#vpc-offerings": "plugins/nuage-plugin.html?#vpc-offerings", + "plugins/quota.html": "plugins/quota.html", + "plugins/quota.html#quota-credits": "plugins/quota.html#quota-credits", + "plugins/quota.html#quota-tariff": "plugins/quota.html#quota-tariff" + }, "plugins": [], "basicZoneEnabled": true } diff --git a/ui/src/utils/plugins.js b/ui/src/utils/plugins.js index 067ffffaab50..3276eea63e78 100644 --- a/ui/src/utils/plugins.js +++ b/ui/src/utils/plugins.js @@ -175,7 +175,7 @@ export const configUtilPlugin = { if (docHelp && docHelpMappings && docHelpMappings.constructor === Object && Object.keys(docHelpMappings).length > 0) { for (var key in docHelpMappings) { - if (docHelp.includes(key) && docHelpMappings[key] && docHelp != docHelpMappings[key]) { + if (docHelp.includes(key) && docHelp !== docHelpMappings[key]) { docHelp = docHelp.replace(key, docHelpMappings[key]) break } From 0b6d31055023c0537d6e9ab7020715e542ee8270 Mon Sep 17 00:00:00 2001 From: Abhishek Kumar Date: Tue, 11 May 2021 13:16:44 +0530 Subject: [PATCH 3/8] list docHelp suffixes during build Signed-off-by: Abhishek Kumar --- ui/package.json | 2 + ui/postbuild.sh | 19 +++++++ ui/prebuild.sh | 30 +++++++++++ ui/public/config.json | 116 +----------------------------------------- 4 files changed, 53 insertions(+), 114 deletions(-) create mode 100755 ui/postbuild.sh create mode 100755 ui/prebuild.sh diff --git a/ui/package.json b/ui/package.json index fcc561fb6e32..3879ee92a6cf 100644 --- a/ui/package.json +++ b/ui/package.json @@ -24,9 +24,11 @@ "url": "https://github.com/apache/cloudstack/issues" }, "scripts": { + "prebuild": "./prebuild.sh", "start": "vue-cli-service lint --no-fix && vue-cli-service serve", "serve": "vue-cli-service lint --no-fix && vue-cli-service serve", "build": "vue-cli-service build", + "postbuild": "./postbuild.sh", "lint": "vue-cli-service lint", "i18n:report": "vue-cli-service i18n:report --src './src/**/*.?(js|vue)' --locales './src/locales/**/*.json'", "test:unit": "vue-cli-service test:unit" diff --git a/ui/postbuild.sh b/ui/postbuild.sh new file mode 100755 index 000000000000..050621951e1e --- /dev/null +++ b/ui/postbuild.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +configFile='./public/config.json' +tmpFile='./public/config.json.tmp' + +echo "Post-build: removing all docHelp suffixes in ${configFile}" +node > ${tmpFile} < ${tmpFile} < Date: Tue, 11 May 2021 13:18:59 +0530 Subject: [PATCH 4/8] refactor Signed-off-by: Abhishek Kumar --- ui/postbuild.sh | 6 +++--- ui/prebuild.sh | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/ui/postbuild.sh b/ui/postbuild.sh index 050621951e1e..e63013df494a 100755 --- a/ui/postbuild.sh +++ b/ui/postbuild.sh @@ -5,13 +5,13 @@ tmpFile='./public/config.json.tmp' echo "Post-build: removing all docHelp suffixes in ${configFile}" node > ${tmpFile} < ${tmpFile} < Date: Tue, 11 May 2021 13:19:50 +0530 Subject: [PATCH 5/8] end Signed-off-by: Abhishek Kumar --- ui/postbuild.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/postbuild.sh b/ui/postbuild.sh index e63013df494a..c0b72590f746 100755 --- a/ui/postbuild.sh +++ b/ui/postbuild.sh @@ -16,4 +16,4 @@ console.log(JSON.stringify(data, null, 2)); EOF -mv ${tmpFile} ${configFile} \ No newline at end of file +mv ${tmpFile} ${configFile} From 100e173d021e804b65edb38b9ca14dc6a5caa469 Mon Sep 17 00:00:00 2001 From: Abhishek Kumar Date: Tue, 11 May 2021 13:21:37 +0530 Subject: [PATCH 6/8] order Signed-off-by: Abhishek Kumar --- ui/public/config.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ui/public/config.json b/ui/public/config.json index 705dd9765cf2..4c9be76b13f8 100644 --- a/ui/public/config.json +++ b/ui/public/config.json @@ -46,7 +46,7 @@ "jp": "label.japanese.keyboard", "sc": "label.simplified.chinese.keyboard" }, - "docHelpMappings": {}, "plugins": [], - "basicZoneEnabled": true + "basicZoneEnabled": true, + "docHelpMappings": {} } From c4c6e3ebdc34489718b7356cedd894073ad2d2dc Mon Sep 17 00:00:00 2001 From: Abhishek Kumar Date: Tue, 11 May 2021 17:23:02 +0530 Subject: [PATCH 7/8] add license Signed-off-by: Abhishek Kumar --- ui/postbuild.sh | 16 ++++++++++++++++ ui/prebuild.sh | 16 ++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/ui/postbuild.sh b/ui/postbuild.sh index c0b72590f746..bff6e8c37343 100755 --- a/ui/postbuild.sh +++ b/ui/postbuild.sh @@ -1,4 +1,20 @@ #!/usr/bin/env bash +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. configFile='./public/config.json' tmpFile='./public/config.json.tmp' diff --git a/ui/prebuild.sh b/ui/prebuild.sh index aa9593a74060..474bc6d719d5 100755 --- a/ui/prebuild.sh +++ b/ui/prebuild.sh @@ -1,4 +1,20 @@ #!/usr/bin/env bash +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. configFile='./public/config.json' tmpFile='./public/config.json.tmp' From 3d6ea62c0bd58938565095e4ddc9475512947df0 Mon Sep 17 00:00:00 2001 From: Abhishek Kumar Date: Tue, 11 May 2021 18:13:03 +0530 Subject: [PATCH 8/8] fix relative path Signed-off-by: Abhishek Kumar --- ui/postbuild.sh | 7 ++++--- ui/prebuild.sh | 5 +++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/ui/postbuild.sh b/ui/postbuild.sh index bff6e8c37343..ab7734f3838a 100755 --- a/ui/postbuild.sh +++ b/ui/postbuild.sh @@ -16,10 +16,11 @@ # specific language governing permissions and limitations # under the License. -configFile='./public/config.json' -tmpFile='./public/config.json.tmp' - +DIR=$(dirname $0) +configFile="$DIR/public/config.json" +tmpFile="$DIR/public/config.json.tmp" echo "Post-build: removing all docHelp suffixes in ${configFile}" + node > ${tmpFile} <