diff --git a/ui/public/locales/en.json b/ui/public/locales/en.json
index 881a490f66b..dfdac5963bd 100644
--- a/ui/public/locales/en.json
+++ b/ui/public/locales/en.json
@@ -3482,6 +3482,7 @@
"message.success.change.bgp.peers": "Successfully changed BGP peers",
"message.success.change.offering": "Successfully changed offering",
"message.success.change.password": "Successfully changed password for User",
+"message.success.change.host.password": "Successfully changed password for host \"{name}\"",
"message.success.clear.webhook.deliveries": "Successfully cleared webhook deliveries",
"message.success.change.scope": "Successfully changed scope for storage pool",
"message.success.config.backup.schedule": "Successfully configured Instance backup schedule",
diff --git a/ui/public/locales/pt_BR.json b/ui/public/locales/pt_BR.json
index 2ce1e5ad980..65c657f69d8 100644
--- a/ui/public/locales/pt_BR.json
+++ b/ui/public/locales/pt_BR.json
@@ -2388,6 +2388,7 @@
"message.success.change.affinity.group": "Grupos de afinidade alterados com sucesso",
"message.success.change.offering": "Oferta alterada com sucesso",
"message.success.change.password": "Senha alterada com sucesso",
+"message.success.change.host.password": "Senha do host \"{name}\" foi alterada com sucesso",
"message.success.config.backup.schedule": "Agendamento de backup de VM configurado com sucesso",
"message.success.config.sticky.policy": "Sticky policy configurada com sucesso",
"message.success.copy.clipboard": "Copiado com sucesso para a \u00e1rea de transfer\u00eancia",
diff --git a/ui/src/config/section/infra/hosts.js b/ui/src/config/section/infra/hosts.js
index f1d0da42991..2373aff93f4 100644
--- a/ui/src/config/section/infra/hosts.js
+++ b/ui/src/config/section/infra/hosts.js
@@ -77,6 +77,14 @@ export default {
popup: true,
component: shallowRef(defineAsyncComponent(() => import('@/views/infra/HostUpdate')))
},
+ {
+ api: 'updateHostPassword',
+ icon: 'key-outlined',
+ label: 'label.action.change.password',
+ dataView: true,
+ popup: true,
+ component: shallowRef(defineAsyncComponent(() => import('@/views/infra/ChangeHostPassword.vue')))
+ },
{
api: 'provisionCertificate',
icon: 'safety-certificate-outlined',
diff --git a/ui/src/views/infra/ChangeHostPassword.vue b/ui/src/views/infra/ChangeHostPassword.vue
new file mode 100644
index 00000000000..d67b8413d8d
--- /dev/null
+++ b/ui/src/views/infra/ChangeHostPassword.vue
@@ -0,0 +1,150 @@
+// 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.
+
+
+
+
+
+
+
+