mirror of
https://github.com/harvester/harvester-ui-extension.git
synced 2025-12-13 13:11:43 +00:00
Vue3 migration - vue-migration.js launch + shell compatibility fixes
Signed-off-by: Francesco Torchia <francesco.torchia@suse.com>
This commit is contained in:
parent
9613ada5a7
commit
aba9c167e0
392
.eslintrc.js
392
.eslintrc.js
@ -1,175 +1,247 @@
|
||||
module.exports = {
|
||||
root: true,
|
||||
env: {
|
||||
browser: true,
|
||||
node: true
|
||||
"root": true,
|
||||
"env": {
|
||||
"browser": true,
|
||||
"node": true
|
||||
},
|
||||
globals: { NodeJS: true, Timer: true },
|
||||
extends: [
|
||||
'standard',
|
||||
'eslint:recommended',
|
||||
'@nuxtjs/eslint-config-typescript',
|
||||
'plugin:cypress/recommended'
|
||||
"globals": {
|
||||
"NodeJS": true,
|
||||
"Timer": true
|
||||
},
|
||||
"extends": [
|
||||
"standard",
|
||||
"eslint:recommended",
|
||||
"@nuxtjs/eslint-config-typescript",
|
||||
"plugin:cypress/recommended"
|
||||
],
|
||||
// add your custom rules here
|
||||
rules: {
|
||||
'dot-notation': 'off',
|
||||
'generator-star-spacing': 'off',
|
||||
'guard-for-in': 'off',
|
||||
'linebreak-style': 'off',
|
||||
'new-cap': 'off',
|
||||
'no-empty': 'off',
|
||||
'no-extra-boolean-cast': 'off',
|
||||
'no-new': 'off',
|
||||
'no-plusplus': 'off',
|
||||
'no-useless-escape': 'off',
|
||||
'nuxt/no-cjs-in-config': 'off',
|
||||
'semi-spacing': 'off',
|
||||
'space-in-parens': 'off',
|
||||
strict: 'off',
|
||||
'unicorn/no-new-buffer': 'off',
|
||||
'vue/html-self-closing': 'off',
|
||||
'vue/multi-word-component-names': 'off',
|
||||
'vue/no-reserved-component-names': 'off',
|
||||
'vue/no-unused-components': 'warn',
|
||||
'vue/no-v-html': 'error',
|
||||
'wrap-iife': 'off',
|
||||
|
||||
'array-bracket-spacing': 'warn',
|
||||
'arrow-parens': 'warn',
|
||||
'arrow-spacing': ['warn', { before: true, after: true }],
|
||||
'block-spacing': ['warn', 'always'],
|
||||
'brace-style': ['warn', '1tbs'],
|
||||
'comma-dangle': ['warn', 'only-multiline'],
|
||||
'comma-spacing': 'warn',
|
||||
curly: 'warn',
|
||||
eqeqeq: 'warn',
|
||||
'func-call-spacing': ['warn', 'never'],
|
||||
'implicit-arrow-linebreak': 'warn',
|
||||
indent: ['warn', 2],
|
||||
'keyword-spacing': 'warn',
|
||||
'lines-between-class-members': ['warn', 'always', { exceptAfterSingleLine: true }],
|
||||
'multiline-ternary': ['warn', 'never'],
|
||||
'newline-per-chained-call': ['warn', { ignoreChainWithDepth: 4 }],
|
||||
'no-caller': 'warn',
|
||||
'no-cond-assign': ['warn', 'except-parens'],
|
||||
'no-console': 'warn',
|
||||
'no-debugger': 'warn',
|
||||
'no-eq-null': 'warn',
|
||||
'no-eval': 'warn',
|
||||
'no-trailing-spaces': 'warn',
|
||||
'no-undef': 'warn',
|
||||
'no-unused-vars': 'warn',
|
||||
'no-whitespace-before-property': 'warn',
|
||||
'object-curly-spacing': ['warn', 'always'],
|
||||
'object-property-newline': 'warn',
|
||||
'object-shorthand': 'warn',
|
||||
'padded-blocks': ['warn', 'never'],
|
||||
'prefer-arrow-callback': 'warn',
|
||||
'prefer-template': 'warn',
|
||||
'quote-props': 'warn',
|
||||
'rest-spread-spacing': 'warn',
|
||||
semi: ['warn', 'always'],
|
||||
'space-before-function-paren': ['warn', 'never'],
|
||||
'space-infix-ops': 'warn',
|
||||
'spaced-comment': 'warn',
|
||||
'switch-colon-spacing': 'warn',
|
||||
'template-curly-spacing': ['warn', 'always'],
|
||||
'yield-star-spacing': ['warn', 'both'],
|
||||
|
||||
'key-spacing': ['warn', {
|
||||
align: {
|
||||
beforeColon: false,
|
||||
afterColon: true,
|
||||
on: 'value',
|
||||
mode: 'minimum'
|
||||
},
|
||||
multiLine: {
|
||||
beforeColon: false,
|
||||
afterColon: true
|
||||
},
|
||||
}],
|
||||
|
||||
'object-curly-newline': ['warn', {
|
||||
ObjectExpression: {
|
||||
multiline: true,
|
||||
minProperties: 3
|
||||
},
|
||||
ObjectPattern: {
|
||||
multiline: true,
|
||||
minProperties: 4
|
||||
},
|
||||
ImportDeclaration: {
|
||||
multiline: true,
|
||||
minProperties: 5
|
||||
},
|
||||
ExportDeclaration: {
|
||||
multiline: true,
|
||||
minProperties: 3
|
||||
}
|
||||
}],
|
||||
|
||||
'padding-line-between-statements': [
|
||||
'warn',
|
||||
"rules": {
|
||||
"dot-notation": "off",
|
||||
"generator-star-spacing": "off",
|
||||
"guard-for-in": "off",
|
||||
"linebreak-style": "off",
|
||||
"new-cap": "off",
|
||||
"no-empty": "off",
|
||||
"no-extra-boolean-cast": "off",
|
||||
"no-new": "off",
|
||||
"no-plusplus": "off",
|
||||
"no-useless-escape": "off",
|
||||
"nuxt/no-cjs-in-config": "off",
|
||||
"semi-spacing": "off",
|
||||
"space-in-parens": "off",
|
||||
"strict": "off",
|
||||
"unicorn/no-new-buffer": "off",
|
||||
"vue/html-self-closing": "off",
|
||||
"vue/multi-word-component-names": "off",
|
||||
"vue/no-reserved-component-names": "off",
|
||||
"vue/no-unused-components": "warn",
|
||||
"vue/no-v-html": "error",
|
||||
"wrap-iife": "off",
|
||||
"array-bracket-spacing": "warn",
|
||||
"arrow-parens": "warn",
|
||||
"arrow-spacing": [
|
||||
"warn",
|
||||
{
|
||||
blankLine: 'always',
|
||||
prev: '*',
|
||||
next: 'return',
|
||||
},
|
||||
{
|
||||
blankLine: 'always',
|
||||
prev: 'function',
|
||||
next: 'function',
|
||||
},
|
||||
// This configuration would require blank lines after every sequence of variable declarations
|
||||
{
|
||||
blankLine: 'always',
|
||||
prev: ['const', 'let', 'var'],
|
||||
next: '*'
|
||||
},
|
||||
{
|
||||
blankLine: 'any',
|
||||
prev: ['const', 'let', 'var'],
|
||||
next: ['const', 'let', 'var']
|
||||
"before": true,
|
||||
"after": true
|
||||
}
|
||||
],
|
||||
|
||||
quotes: [
|
||||
'warn',
|
||||
'single',
|
||||
{
|
||||
avoidEscape: true,
|
||||
allowTemplateLiterals: true
|
||||
},
|
||||
"block-spacing": [
|
||||
"warn",
|
||||
"always"
|
||||
],
|
||||
|
||||
'space-unary-ops': [
|
||||
'warn',
|
||||
"brace-style": [
|
||||
"warn",
|
||||
"1tbs"
|
||||
],
|
||||
"comma-dangle": [
|
||||
"warn",
|
||||
"only-multiline"
|
||||
],
|
||||
"comma-spacing": "warn",
|
||||
"curly": "warn",
|
||||
"eqeqeq": "warn",
|
||||
"func-call-spacing": [
|
||||
"warn",
|
||||
"never"
|
||||
],
|
||||
"implicit-arrow-linebreak": "warn",
|
||||
"indent": [
|
||||
"warn",
|
||||
2
|
||||
],
|
||||
"keyword-spacing": "warn",
|
||||
"lines-between-class-members": [
|
||||
"warn",
|
||||
"always",
|
||||
{
|
||||
words: true,
|
||||
nonwords: false,
|
||||
"exceptAfterSingleLine": true
|
||||
}
|
||||
],
|
||||
|
||||
// FIXME: The following is disabled due to new linter and old JS code. These should all be enabled and underlying issues fixed
|
||||
'vue/order-in-components': 'off',
|
||||
'vue/no-lone-template': 'off',
|
||||
'vue/v-slot-style': 'off',
|
||||
'vue/component-tags-order': 'off',
|
||||
'vue/no-mutating-props': 'off',
|
||||
'@typescript-eslint/no-unused-vars': 'off',
|
||||
'array-callback-return': 'off',
|
||||
"multiline-ternary": [
|
||||
"warn",
|
||||
"never"
|
||||
],
|
||||
"newline-per-chained-call": [
|
||||
"warn",
|
||||
{
|
||||
"ignoreChainWithDepth": 4
|
||||
}
|
||||
],
|
||||
"no-caller": "warn",
|
||||
"no-cond-assign": [
|
||||
"warn",
|
||||
"except-parens"
|
||||
],
|
||||
"no-console": "warn",
|
||||
"no-debugger": "warn",
|
||||
"no-eq-null": "warn",
|
||||
"no-eval": "warn",
|
||||
"no-trailing-spaces": "warn",
|
||||
"no-undef": "warn",
|
||||
"no-unused-vars": "warn",
|
||||
"no-whitespace-before-property": "warn",
|
||||
"object-curly-spacing": [
|
||||
"warn",
|
||||
"always"
|
||||
],
|
||||
"object-property-newline": "warn",
|
||||
"object-shorthand": "warn",
|
||||
"padded-blocks": [
|
||||
"warn",
|
||||
"never"
|
||||
],
|
||||
"prefer-arrow-callback": "warn",
|
||||
"prefer-template": "warn",
|
||||
"quote-props": "warn",
|
||||
"rest-spread-spacing": "warn",
|
||||
"semi": [
|
||||
"warn",
|
||||
"always"
|
||||
],
|
||||
"space-before-function-paren": [
|
||||
"warn",
|
||||
"never"
|
||||
],
|
||||
"space-infix-ops": "warn",
|
||||
"spaced-comment": "warn",
|
||||
"switch-colon-spacing": "warn",
|
||||
"template-curly-spacing": [
|
||||
"warn",
|
||||
"always"
|
||||
],
|
||||
"yield-star-spacing": [
|
||||
"warn",
|
||||
"both"
|
||||
],
|
||||
"key-spacing": [
|
||||
"warn",
|
||||
{
|
||||
"align": {
|
||||
"beforeColon": false,
|
||||
"afterColon": true,
|
||||
"on": "value",
|
||||
"mode": "minimum"
|
||||
},
|
||||
"multiLine": {
|
||||
"beforeColon": false,
|
||||
"afterColon": true
|
||||
}
|
||||
}
|
||||
],
|
||||
"object-curly-newline": [
|
||||
"warn",
|
||||
{
|
||||
"ObjectExpression": {
|
||||
"multiline": true,
|
||||
"minProperties": 3
|
||||
},
|
||||
"ObjectPattern": {
|
||||
"multiline": true,
|
||||
"minProperties": 4
|
||||
},
|
||||
"ImportDeclaration": {
|
||||
"multiline": true,
|
||||
"minProperties": 5
|
||||
},
|
||||
"ExportDeclaration": {
|
||||
"multiline": true,
|
||||
"minProperties": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"padding-line-between-statements": [
|
||||
"warn",
|
||||
{
|
||||
"blankLine": "always",
|
||||
"prev": "*",
|
||||
"next": "return"
|
||||
},
|
||||
{
|
||||
"blankLine": "always",
|
||||
"prev": "function",
|
||||
"next": "function"
|
||||
},
|
||||
{
|
||||
"blankLine": "always",
|
||||
"prev": [
|
||||
"const",
|
||||
"let",
|
||||
"var"
|
||||
],
|
||||
"next": "*"
|
||||
},
|
||||
{
|
||||
"blankLine": "any",
|
||||
"prev": [
|
||||
"const",
|
||||
"let",
|
||||
"var"
|
||||
],
|
||||
"next": [
|
||||
"const",
|
||||
"let",
|
||||
"var"
|
||||
]
|
||||
}
|
||||
],
|
||||
"quotes": [
|
||||
"warn",
|
||||
"single",
|
||||
{
|
||||
"avoidEscape": true,
|
||||
"allowTemplateLiterals": true
|
||||
}
|
||||
],
|
||||
"space-unary-ops": [
|
||||
"warn",
|
||||
{
|
||||
"words": true,
|
||||
"nonwords": false
|
||||
}
|
||||
],
|
||||
"vue/order-in-components": "off",
|
||||
"vue/no-lone-template": "off",
|
||||
"vue/v-slot-style": "off",
|
||||
"vue/component-tags-order": "off",
|
||||
"vue/no-mutating-props": "off",
|
||||
"@typescript-eslint/no-unused-vars": "off",
|
||||
"array-callback-return": "off",
|
||||
"vue/one-component-per-file": "off",
|
||||
"vue/no-deprecated-slot-attribute": "off",
|
||||
"vue/require-explicit-emits": "off",
|
||||
"vue/v-on-event-hyphenation": "off"
|
||||
},
|
||||
overrides: [
|
||||
"overrides": [
|
||||
{
|
||||
files: ['*.js'],
|
||||
rules: {
|
||||
// FIXME: The following is disabled due to new linter and old JS code. These should all be enabled and underlying issues fixed
|
||||
'prefer-regex-literals': 'off',
|
||||
'vue/component-definition-name-casing': 'off',
|
||||
'no-unreachable-loop': 'off',
|
||||
'computed-property-spacing': 'off',
|
||||
"files": [
|
||||
"*.js"
|
||||
],
|
||||
"rules": {
|
||||
"prefer-regex-literals": "off",
|
||||
"vue/component-definition-name-casing": "off",
|
||||
"no-unreachable-loop": "off",
|
||||
"computed-property-spacing": "off"
|
||||
}
|
||||
}
|
||||
]
|
||||
};
|
||||
}
|
||||
23
package.json
23
package.json
@ -8,14 +8,17 @@
|
||||
"dependencies": {
|
||||
"@rancher/components": "0.3.0-alpha.1",
|
||||
"@rancher/shell": "2.0.0",
|
||||
"@vue/cli-plugin-babel": "5.0.8",
|
||||
"@vue/cli-plugin-typescript": "5.0.8",
|
||||
"@vue/cli-service": "5.0.8",
|
||||
"cache-loader": "^4.1.0",
|
||||
"codemirror": ">=5.64.0 <6",
|
||||
"codemirror-editor-vue3": "^2.7.0",
|
||||
"core-js": "3.25.3",
|
||||
"css-loader": "4.3.0",
|
||||
"@vue/cli-plugin-babel": "5.0.8",
|
||||
"@vue/cli-service": "5.0.8",
|
||||
"@vue/cli-plugin-typescript": "5.0.8",
|
||||
"cache-loader": "^4.1.0",
|
||||
"yaml": "2.0.0",
|
||||
"node-polyfill-webpack-plugin": "^3.0.0"
|
||||
"diff_match_patch": "^0.1.1",
|
||||
"node-polyfill-webpack-plugin": "^3.0.0",
|
||||
"yaml": "2.0.0"
|
||||
},
|
||||
"resolutions": {
|
||||
"@vue/cli-plugin-babel": "5.0.8",
|
||||
@ -46,13 +49,13 @@
|
||||
"publish-pkgs": "./node_modules/@rancher/shell/scripts/extension/publish",
|
||||
"parse-tag-name": "./node_modules/@rancher/shell/scripts/extension/parse-tag-name",
|
||||
"lint": "./node_modules/.bin/eslint --max-warnings 0 --ext .js,.ts,.vue .",
|
||||
"test": "jest --watch"
|
||||
"test": "jest --watch",
|
||||
"migrate": "node ./vue-migrate.js"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/jest": "^29.5.12",
|
||||
"@types/lodash": "^4.17.5",
|
||||
"@vue/vue2-jest": "^29.2.6",
|
||||
"babel-plugin-transform-require-context": "^0.1.1",
|
||||
"ts-jest": "^29.1.4"
|
||||
"@vue/vue3-jest": "^27.0.0-alpha.1",
|
||||
"babel-plugin-transform-require-context": "^0.1.1"
|
||||
}
|
||||
}
|
||||
|
||||
@ -122,9 +122,7 @@ export default {
|
||||
</div>
|
||||
<div class="mt-10">
|
||||
<Tag
|
||||
v-for="(tag) in value"
|
||||
:key="tag"
|
||||
class="tag"
|
||||
v-for="((tag), i) in value" :key="i" class="tag"
|
||||
>
|
||||
<span>
|
||||
{{ tag }}
|
||||
@ -157,7 +155,7 @@ export default {
|
||||
>
|
||||
<input
|
||||
ref="addTagInput"
|
||||
v-model="inputValue"
|
||||
v-model:value="inputValue"
|
||||
type="text"
|
||||
size="small"
|
||||
@blur="confirmAdd"
|
||||
|
||||
@ -88,7 +88,7 @@ export default {
|
||||
<div class="filter-popup">
|
||||
<div>
|
||||
<LabeledSelect
|
||||
v-model="parentSriov"
|
||||
v-model:value="parentSriov"
|
||||
:options="parentSriovOptions"
|
||||
:searchable="true"
|
||||
:label="label"
|
||||
@ -121,7 +121,7 @@ export default {
|
||||
width: 300px;
|
||||
}
|
||||
|
||||
::v-deep .box {
|
||||
:deep() .box {
|
||||
display: grid;
|
||||
grid-template-columns: 40% 40% 10%;
|
||||
column-gap: 1.75%;
|
||||
|
||||
@ -117,7 +117,7 @@ export default {
|
||||
|
||||
<template>
|
||||
<div class="filter">
|
||||
<template v-for="(label, index) in searchLabels">
|
||||
<template v-for="(label, index) in searchLabels" :key="index">
|
||||
<span v-if="label.key" :key="`${label.key}${index}`" class="banner-item bg-warning">
|
||||
{{ label.key }}{{ label.value ? "=" : '' }}{{ label.value }}<i class="icon icon-close" @click="remove(label)" />
|
||||
</span>
|
||||
@ -139,11 +139,11 @@ export default {
|
||||
<div class="filter-popup">
|
||||
<div>
|
||||
<ArrayList
|
||||
v-model="searchLabels"
|
||||
v-model:value="searchLabels"
|
||||
:show-header="true"
|
||||
:default-add-value="defaultAddValue"
|
||||
:initial-empty-row="true"
|
||||
@input="filterRows"
|
||||
@update:value="filterRows"
|
||||
>
|
||||
<template v-slot:column-headers>
|
||||
<div class="box">
|
||||
@ -162,11 +162,11 @@ export default {
|
||||
<Select
|
||||
ref="select"
|
||||
key="label"
|
||||
v-model="scope.row.value.key"
|
||||
v-model:value="scope.row.value.key"
|
||||
:append-to-body="false"
|
||||
:searchable="true"
|
||||
:options="optionLabels"
|
||||
@input="filterRows"
|
||||
@update:value="filterRows"
|
||||
/>
|
||||
</div>
|
||||
<div class="value">
|
||||
@ -174,13 +174,13 @@ export default {
|
||||
v-if="calcValueOptions(scope.row.value.key).length > 0"
|
||||
ref="select"
|
||||
key="value"
|
||||
v-model="scope.row.value.value"
|
||||
v-model:value="scope.row.value.value"
|
||||
:append-to-body="false"
|
||||
:searchable="true"
|
||||
:options="calcValueOptions(scope.row.value.key)"
|
||||
@input="filterRows"
|
||||
@update:value="filterRows"
|
||||
/>
|
||||
<LabeledInput v-else v-model="scope.row.value.value" @input="filterRows" />
|
||||
<LabeledInput v-else v-model:value="scope.row.value.value" @update:value="filterRows" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -234,7 +234,7 @@ export default {
|
||||
width: 600px;
|
||||
}
|
||||
|
||||
::v-deep .box {
|
||||
:deep() .box {
|
||||
display: grid;
|
||||
grid-template-columns: 40% 40% 10%;
|
||||
column-gap: 1.75%;
|
||||
|
||||
@ -161,7 +161,7 @@ export default {
|
||||
|
||||
<div>
|
||||
<LabeledSelect
|
||||
v-model="version"
|
||||
v-model:value="version"
|
||||
class="mb-10"
|
||||
:label="t('harvester.upgradePage.versionLabel')"
|
||||
:options="versionOptions"
|
||||
@ -173,7 +173,7 @@ export default {
|
||||
class="mb-5"
|
||||
>
|
||||
<Checkbox
|
||||
v-model="enableLogging"
|
||||
v-model:value="enableLogging"
|
||||
class="check"
|
||||
type="checkbox"
|
||||
:label="t('harvester.upgradePage.enableLogging')"
|
||||
@ -187,7 +187,7 @@ export default {
|
||||
></p>
|
||||
|
||||
<Checkbox
|
||||
v-model="readyReleaseNote"
|
||||
v-model:value="readyReleaseNote"
|
||||
class="check"
|
||||
type="checkbox"
|
||||
label-key="harvester.upgradePage.checkReady"
|
||||
|
||||
@ -42,7 +42,7 @@ export default {
|
||||
<h4>{{ title }} <span class="float-r text-info">{{ precent }}%</span></h4>
|
||||
<div>
|
||||
<div>
|
||||
<Collapse :open.sync="open">
|
||||
<Collapse v-model:open="open">
|
||||
<template #title>
|
||||
<div class="total-bar">
|
||||
<span class="bar"><PercentageBar :value="precent" preferred-direction="MORE" /></span>
|
||||
@ -52,7 +52,7 @@ export default {
|
||||
|
||||
<template>
|
||||
<div class="custom-content">
|
||||
<div v-for="item in list" :key="item.name" class="item">
|
||||
<div v-for="(item, i) in list" :key="i" >
|
||||
<p>{{ item.name }} <span class="status" :class="{ [item.state]: true }">{{ item.state }}</span></p>
|
||||
<PercentageBar :value="item.percent" preferred-direction="MORE" />
|
||||
<p class="warning">
|
||||
|
||||
@ -104,7 +104,7 @@ export default {
|
||||
|
||||
<template>
|
||||
<div>
|
||||
<div v-for="setting in categorySettings" :key="setting.id" class="advanced-setting mb-20">
|
||||
<div v-for="(setting, i) in categorySettings" :key="i" >
|
||||
<div class="header">
|
||||
<div class="title">
|
||||
<h1>
|
||||
|
||||
@ -204,7 +204,7 @@ export default {
|
||||
/>
|
||||
|
||||
<div class="displayed-banners">
|
||||
<Banner v-for="(keys,index) in displayedKeys" :key="index" color="info" :closable="true" @close="removeKey(keys)">
|
||||
<Banner v-for="(keys,index) in displayedKeys" :key="index">
|
||||
<span v-clean-html="keys"></span>
|
||||
</Banner>
|
||||
</div>
|
||||
|
||||
@ -318,7 +318,7 @@ export default {
|
||||
|
||||
<hr>
|
||||
|
||||
<div v-for="(keys, index) in preferredShortcutKeys" :key="index" class="mb-5">
|
||||
<div v-for="(keys, index) in preferredShortcutKeys" :key="index">
|
||||
<button class="btn btn-sm bg-primary" @click="sendCustomKeys(keys.value)">
|
||||
{{ keys.label }}
|
||||
</button>
|
||||
|
||||
@ -26,7 +26,7 @@ export default {
|
||||
|
||||
<div>
|
||||
<TextAreaAutoGrow
|
||||
v-model="value.value"
|
||||
v-model:value="value.value"
|
||||
:min-height="254"
|
||||
/>
|
||||
</div>
|
||||
|
||||
@ -51,16 +51,16 @@ export default {
|
||||
<div class="row">
|
||||
<div class="col span-12">
|
||||
<RadioGroup
|
||||
v-model="parseDefaultValue.enable"
|
||||
v-model:value="parseDefaultValue.enable"
|
||||
class="mb-20"
|
||||
name="model"
|
||||
:options="[true,false]"
|
||||
:labels="[t('generic.enabled'), t('generic.disabled')]"
|
||||
@input="update"
|
||||
@update:value="update"
|
||||
/>
|
||||
<UnitInput
|
||||
v-if="parseDefaultValue.enable"
|
||||
v-model="parseDefaultValue.expiringInHours"
|
||||
v-model:value="parseDefaultValue.expiringInHours"
|
||||
v-int-number
|
||||
class="mb-20"
|
||||
:min="1"
|
||||
@ -69,14 +69,14 @@ export default {
|
||||
:suffix="parseDefaultValue.expiringInHours === 1 ? 'Hour' : 'Hours'"
|
||||
:label="t('harvester.setting.autoRotateRKE2Certs.expiringInHours')"
|
||||
:mode="mode"
|
||||
@input="update"
|
||||
@update:value="update"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
::v-deep .radio-group {
|
||||
:deep() .radio-group {
|
||||
display: flex;
|
||||
.radio-container {
|
||||
margin-right: 30px;
|
||||
|
||||
@ -121,16 +121,16 @@ export default {
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="row" @input="update">
|
||||
<div class="row" @update:value="update">
|
||||
<div class="col span-12">
|
||||
<LabeledSelect v-model="parseDefaultValue.type" class="mb-20" :label="t('harvester.fields.type')" :options="typeOption" @input="update" />
|
||||
<LabeledSelect v-model:value="parseDefaultValue.type" class="mb-20" :label="t('harvester.fields.type')" :options="typeOption" @update:value="update" />
|
||||
|
||||
<LabeledInput v-model="parseDefaultValue.endpoint" class="mb-5" :placeholder="endpointPlaceholder" :mode="mode" label="Endpoint" />
|
||||
<LabeledInput v-model:value="parseDefaultValue.endpoint" class="mb-5" :placeholder="endpointPlaceholder" :mode="mode" label="Endpoint" />
|
||||
<Tip class="mb-20" icon="icon icon-info" :text="t('harvester.backup.backupTargetTip')" />
|
||||
|
||||
<template v-if="isS3">
|
||||
<LabeledInput
|
||||
v-model="parseDefaultValue.bucketName"
|
||||
v-model:value="parseDefaultValue.bucketName"
|
||||
class="mb-20"
|
||||
:mode="mode"
|
||||
label="Bucket Name"
|
||||
@ -138,7 +138,7 @@ export default {
|
||||
/>
|
||||
|
||||
<LabeledInput
|
||||
v-model="parseDefaultValue.bucketRegion"
|
||||
v-model:value="parseDefaultValue.bucketRegion"
|
||||
class="mb-20"
|
||||
:mode="mode"
|
||||
label="Bucket Region"
|
||||
@ -146,7 +146,7 @@ export default {
|
||||
/>
|
||||
|
||||
<LabeledInput
|
||||
v-model="parseDefaultValue.accessKeyId"
|
||||
v-model:value="parseDefaultValue.accessKeyId"
|
||||
:placeholder="t('harvester.setting.placeholder.accessKeyId')"
|
||||
class="mb-20"
|
||||
:mode="mode"
|
||||
@ -155,7 +155,7 @@ export default {
|
||||
/>
|
||||
|
||||
<Password
|
||||
v-model="parseDefaultValue.secretAccessKey"
|
||||
v-model:value="parseDefaultValue.secretAccessKey"
|
||||
class="mb-20"
|
||||
:mode="mode"
|
||||
:placeholder="t('harvester.setting.placeholder.secretAccessKey')"
|
||||
@ -163,7 +163,7 @@ export default {
|
||||
required
|
||||
/>
|
||||
|
||||
<LabeledSelect v-model="parseDefaultValue.virtualHostedStyle" class="mb-20" label="Virtual Hosted-Style" :options="virtualHostedStyleType" @input="update" />
|
||||
<LabeledSelect v-model:value="parseDefaultValue.virtualHostedStyle" class="mb-20" label="Virtual Hosted-Style" :options="virtualHostedStyleType" @update:value="update" />
|
||||
|
||||
<div class="mb-20">
|
||||
<Tip icon="icon icon-info">
|
||||
|
||||
@ -233,20 +233,19 @@ export default {
|
||||
<div class="row mb-20">
|
||||
<div class="col span-12">
|
||||
<LabeledInput
|
||||
v-model="mirror.key"
|
||||
v-model:value="mirror.key"
|
||||
:mode="mode"
|
||||
required
|
||||
label-key="harvester.setting.containerdRegistry.mirrors.registryName"
|
||||
@keydown.native.enter.prevent="()=>{}"
|
||||
@input="update"
|
||||
@update:value="update"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-20">
|
||||
<LabeledSelect
|
||||
:key="mirror.idx"
|
||||
v-model="mirror.value.Endpoints"
|
||||
v-model:value="mirror.value.Endpoints"
|
||||
:mode="mode"
|
||||
required
|
||||
label-key="harvester.setting.containerdRegistry.mirrors.endpoints"
|
||||
@ -255,20 +254,20 @@ export default {
|
||||
:searchable="true"
|
||||
:options="[]"
|
||||
@keydown.native.enter.prevent="()=>{}"
|
||||
@input="update"
|
||||
@update:value="update"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="row mb-20">
|
||||
<KeyValue
|
||||
v-model="mirror.value.Rewrites"
|
||||
v-model:value="mirror.value.Rewrites"
|
||||
:add-label="t('harvester.setting.containerdRegistry.mirrors.rewrite.addRewrite')"
|
||||
:mode="mode"
|
||||
:title="t('harvester.setting.containerdRegistry.mirrors.rewrite.rewrite')"
|
||||
:read-allowed="false"
|
||||
:value-can-be-empty="true"
|
||||
@keydown.native.enter.prevent="()=>{}"
|
||||
@input="update"
|
||||
@update:value="update"
|
||||
/>
|
||||
</div>
|
||||
</infobox>
|
||||
@ -291,11 +290,11 @@ export default {
|
||||
<div class="col span-12">
|
||||
<div class="col span-12">
|
||||
<LabeledInput
|
||||
v-model="config.key"
|
||||
v-model:value="config.key"
|
||||
:mode="mode"
|
||||
:placeholder="t('harvester.setting.containerdRegistry.configs.registryPlaceholder')"
|
||||
label-key="harvester.setting.containerdRegistry.configs.registryEDQNorIP"
|
||||
@input="update"
|
||||
@update:value="update"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@ -304,19 +303,19 @@ export default {
|
||||
<div class="row mb-20">
|
||||
<div class="col span-6">
|
||||
<LabeledInput
|
||||
v-model="config.value.Auth.Username"
|
||||
v-model:value="config.value.Auth.Username"
|
||||
:mode="mode"
|
||||
label-key="harvester.setting.containerdRegistry.configs.username"
|
||||
@input="update"
|
||||
@update:value="update"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="col span-6">
|
||||
<LabeledInput
|
||||
v-model="config.value.Auth.Password"
|
||||
v-model:value="config.value.Auth.Password"
|
||||
:mode="mode"
|
||||
label-key="harvester.setting.containerdRegistry.configs.password"
|
||||
@input="update"
|
||||
@update:value="update"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@ -324,34 +323,34 @@ export default {
|
||||
<div class="row mb-20">
|
||||
<div class="col span-6">
|
||||
<LabeledInput
|
||||
v-model="config.value.Auth.Auth"
|
||||
v-model:value="config.value.Auth.Auth"
|
||||
:mode="mode"
|
||||
type="multiline"
|
||||
:min-height="150"
|
||||
label-key="harvester.setting.containerdRegistry.configs.auth"
|
||||
@input="update"
|
||||
@update:value="update"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="col span-6">
|
||||
<LabeledInput
|
||||
v-model="config.value.Auth.IdentityToken"
|
||||
v-model:value="config.value.Auth.IdentityToken"
|
||||
:mode="mode"
|
||||
type="multiline"
|
||||
:min-height="150"
|
||||
label-key="harvester.setting.containerdRegistry.configs.identityToken"
|
||||
@input="update"
|
||||
@update:value="update"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<LabeledSelect
|
||||
v-model="config.value.TLS.InsecureSkipVerify"
|
||||
v-model:value="config.value.TLS.InsecureSkipVerify"
|
||||
:mode="mode"
|
||||
label-key="harvester.setting.containerdRegistry.configs.insecureSkipVerify"
|
||||
:options="insecureSkipVerifyOption"
|
||||
@input="update"
|
||||
@update:value="update"
|
||||
/>
|
||||
</div>
|
||||
</infobox>
|
||||
|
||||
@ -181,7 +181,7 @@ export default {
|
||||
|
||||
<template>
|
||||
<div>
|
||||
<InfoBox v-for="(driver, idx) in configArr" :key="driver.key" class="box">
|
||||
<InfoBox v-for="(driver, idx) in configArr" :key="idx">
|
||||
<button :disabled="disableEdit(driver.key)" type="button" class="role-link btn btn-sm remove" @click="remove(idx)">
|
||||
<i class="icon icon-x" />
|
||||
</button>
|
||||
@ -189,7 +189,7 @@ export default {
|
||||
<div class="row">
|
||||
<div class="col span-4">
|
||||
<LabeledSelect
|
||||
v-model="driver.key"
|
||||
v-model:value="driver.key"
|
||||
:mode="mode"
|
||||
required
|
||||
:disabled="disableEdit(driver.key)"
|
||||
@ -197,33 +197,33 @@ export default {
|
||||
:searchable="true"
|
||||
:options="provisioners"
|
||||
@keydown.native.enter.prevent="()=>{}"
|
||||
@input="update"
|
||||
@update:value="update"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="col span-4">
|
||||
<LabeledSelect
|
||||
v-model="driver.value.volumeSnapshotClassName"
|
||||
v-model:value="driver.value.volumeSnapshotClassName"
|
||||
:mode="mode"
|
||||
required
|
||||
:disabled="disableEdit(driver.key)"
|
||||
:options="getVolumeSnapshotOptions(driver.key)"
|
||||
:label="t('harvester.setting.csiDriverConfig.volumeSnapshotClassName')"
|
||||
@keydown.native.enter.prevent="()=>{}"
|
||||
@input="update"
|
||||
@update:value="update"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="col span-4">
|
||||
<LabeledSelect
|
||||
v-model="driver.value.backupVolumeSnapshotClassName"
|
||||
v-model:value="driver.value.backupVolumeSnapshotClassName"
|
||||
:mode="mode"
|
||||
required
|
||||
:disabled="disableEdit(driver.key)"
|
||||
:options="getVolumeSnapshotOptions(driver.key)"
|
||||
:label="t('harvester.setting.csiDriverConfig.backupVolumeSnapshotClassName')"
|
||||
@keydown.native.enter.prevent="()=>{}"
|
||||
@input="update"
|
||||
@update:value="update"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -32,7 +32,7 @@ export default {
|
||||
>
|
||||
<div class="col span-12">
|
||||
<UnitInput
|
||||
v-model="terminationGracePeriodSeconds"
|
||||
v-model:value="terminationGracePeriodSeconds"
|
||||
:suffix="terminationGracePeriodSeconds === 1 ? 'Second' : 'Seconds'"
|
||||
:label="t('harvester.virtualMachine.terminationGracePeriodSeconds.label')"
|
||||
:mode="mode"
|
||||
|
||||
@ -57,25 +57,25 @@ export default {
|
||||
<t k="harvester.setting.httpProxy.warning" :raw="true" />
|
||||
</Banner>
|
||||
|
||||
<div class="row" @input="update">
|
||||
<div class="row" @update:value="update">
|
||||
<div class="col span-12">
|
||||
<template>
|
||||
<LabeledInput
|
||||
v-model="parseDefaultValue.httpProxy"
|
||||
v-model:value="parseDefaultValue.httpProxy"
|
||||
class="mb-20"
|
||||
:mode="mode"
|
||||
label="http-proxy"
|
||||
/>
|
||||
|
||||
<LabeledInput
|
||||
v-model="parseDefaultValue.httpsProxy"
|
||||
v-model:value="parseDefaultValue.httpsProxy"
|
||||
class="mb-20"
|
||||
:mode="mode"
|
||||
label="https-proxy"
|
||||
/>
|
||||
|
||||
<LabeledInput
|
||||
v-model="parseDefaultValue.noProxy"
|
||||
v-model:value="parseDefaultValue.noProxy"
|
||||
class="mb-20"
|
||||
:mode="mode"
|
||||
label="no-proxy"
|
||||
|
||||
@ -60,12 +60,12 @@ export default {
|
||||
<div class="col span-12">
|
||||
<template>
|
||||
<ArrayList
|
||||
v-model="parseDefaultValue.ntpServers"
|
||||
v-model:value="parseDefaultValue.ntpServers"
|
||||
:title="t('harvester.host.ntp.label')"
|
||||
:protip="t('harvester.host.ntp.tips')"
|
||||
:value-placeholder="t('harvester.host.ntp.placeholder')"
|
||||
:mode="mode"
|
||||
@input="update"
|
||||
@update:value="update"
|
||||
/>
|
||||
</template>
|
||||
</div>
|
||||
|
||||
@ -54,7 +54,7 @@ export default {
|
||||
<div class="col span-12">
|
||||
<template>
|
||||
<UnitInput
|
||||
v-model="parseDefaultValue.cpu"
|
||||
v-model:value="parseDefaultValue.cpu"
|
||||
v-int-number
|
||||
label-key="harvester.generic.cpu"
|
||||
suffix="%"
|
||||
@ -62,11 +62,11 @@ export default {
|
||||
required
|
||||
:mode="mode"
|
||||
class="mb-20"
|
||||
@input="update"
|
||||
@update:value="update"
|
||||
/>
|
||||
|
||||
<UnitInput
|
||||
v-model="parseDefaultValue.memory"
|
||||
v-model:value="parseDefaultValue.memory"
|
||||
v-int-number
|
||||
label-key="harvester.generic.memory"
|
||||
suffix="%"
|
||||
@ -74,11 +74,11 @@ export default {
|
||||
required
|
||||
:mode="mode"
|
||||
class="mb-20"
|
||||
@input="update"
|
||||
@update:value="update"
|
||||
/>
|
||||
|
||||
<UnitInput
|
||||
v-model="parseDefaultValue.storage"
|
||||
v-model:value="parseDefaultValue.storage"
|
||||
v-int-number
|
||||
label-key="harvester.generic.storage"
|
||||
suffix="%"
|
||||
@ -86,7 +86,7 @@ export default {
|
||||
required
|
||||
:mode="mode"
|
||||
class="mb-20"
|
||||
@input="update"
|
||||
@update:value="update"
|
||||
/>
|
||||
</template>
|
||||
</div>
|
||||
|
||||
@ -138,22 +138,22 @@ export default {
|
||||
<div class="row mt-10">
|
||||
<div class="col span-12">
|
||||
<LabeledSelect
|
||||
v-model="parsedDefaultValue.protocols"
|
||||
v-model:value="parsedDefaultValue.protocols"
|
||||
:mode="mode"
|
||||
label-key="harvester.sslParameters.protocols.label"
|
||||
:multiple="true"
|
||||
:options="protocolOptions"
|
||||
@input="update"
|
||||
@update:value="update"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mt-20">
|
||||
<div class="col span-12">
|
||||
<LabeledInput
|
||||
v-model="parsedDefaultValue.ciphers"
|
||||
v-model:value="parsedDefaultValue.ciphers"
|
||||
:mode="mode"
|
||||
label-key="harvester.sslParameters.ciphers.label"
|
||||
@input="update"
|
||||
@update:value="update"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -165,19 +165,19 @@ export default {
|
||||
<template>
|
||||
<div
|
||||
:class="mode"
|
||||
@input="update"
|
||||
@update:value="update"
|
||||
>
|
||||
<Banner color="warning">
|
||||
<t k="harvester.setting.storageNetwork.warning" :raw="true" />
|
||||
</Banner>
|
||||
|
||||
<RadioGroup
|
||||
v-model="openVlan"
|
||||
v-model:value="openVlan"
|
||||
class="mb-20"
|
||||
name="model"
|
||||
:options="[true,false]"
|
||||
:labels="[t('generic.enabled'), t('generic.disabled')]"
|
||||
@input="update"
|
||||
@update:value="update"
|
||||
/>
|
||||
|
||||
<div v-if="openVlan">
|
||||
@ -190,16 +190,16 @@ export default {
|
||||
/>
|
||||
|
||||
<LabeledSelect
|
||||
v-model="parsedDefaultValue.clusterNetwork"
|
||||
v-model:value="parsedDefaultValue.clusterNetwork"
|
||||
label-key="harvester.setting.storageNetwork.clusterNetwork"
|
||||
class="mb-20"
|
||||
required
|
||||
:options="clusterNetworkOptions"
|
||||
@input="update"
|
||||
@update:value="update"
|
||||
/>
|
||||
|
||||
<LabeledInput
|
||||
v-model="parsedDefaultValue.range"
|
||||
v-model:value="parsedDefaultValue.range"
|
||||
class="mb-5"
|
||||
:mode="mode"
|
||||
required
|
||||
@ -211,12 +211,12 @@ export default {
|
||||
</Tip>
|
||||
|
||||
<ArrayList
|
||||
v-model="exclude"
|
||||
v-model:value="exclude"
|
||||
:show-header="true"
|
||||
:default-add-value="defaultAddValue"
|
||||
:mode="mode"
|
||||
:add-label="t('harvester.setting.storageNetwork.exclude.addIp')"
|
||||
@input="update"
|
||||
@update:value="update"
|
||||
>
|
||||
<template v-slot:column-headers>
|
||||
<div class="box">
|
||||
@ -228,9 +228,9 @@ export default {
|
||||
<template v-slot:columns="scope">
|
||||
<div class="key">
|
||||
<input
|
||||
v-model="scope.row.value"
|
||||
v-model:value="scope.row.value"
|
||||
:placeholder="t('harvester.setting.storageNetwork.exclude.placeholder')"
|
||||
@input="update"
|
||||
@update:value="update"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -105,7 +105,7 @@ export default {
|
||||
<div class="col span-12">
|
||||
<template>
|
||||
<LabeledInput
|
||||
v-model="parseDefaultValue.repository"
|
||||
v-model:value="parseDefaultValue.repository"
|
||||
class="mb-20"
|
||||
:mode="mode"
|
||||
required
|
||||
@ -113,7 +113,7 @@ export default {
|
||||
/>
|
||||
|
||||
<LabeledInput
|
||||
v-model="parseDefaultValue.tag"
|
||||
v-model:value="parseDefaultValue.tag"
|
||||
class="mb-20"
|
||||
:mode="mode"
|
||||
required
|
||||
@ -121,7 +121,7 @@ export default {
|
||||
/>
|
||||
|
||||
<LabeledSelect
|
||||
v-model="parseDefaultValue.imagePullPolicy"
|
||||
v-model:value="parseDefaultValue.imagePullPolicy"
|
||||
class="mb-20"
|
||||
required
|
||||
label-key="harvester.setting.supportBundleImage.imagePullPolicy"
|
||||
|
||||
@ -61,12 +61,12 @@ export default {
|
||||
<div class="row">
|
||||
<div class="col span-12">
|
||||
<LabeledSelect
|
||||
v-model="namespaces"
|
||||
v-model:value="namespaces"
|
||||
:multiple="true"
|
||||
label-key="nameNsDescription.namespace.label"
|
||||
:mode="mode"
|
||||
:options="namespaceOptions"
|
||||
@input="update"
|
||||
@update:value="update"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -51,7 +51,7 @@ export default {
|
||||
<div class="row" @input="update">
|
||||
<div class="col span-12">
|
||||
<RadioGroup
|
||||
v-model="parseDefaultValue.enable"
|
||||
v-model:value="parseDefaultValue.enable"
|
||||
class="mb-20"
|
||||
name="model"
|
||||
:options="[true,false]"
|
||||
@ -72,7 +72,7 @@ export default {
|
||||
</template>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
::v-deep .radio-group {
|
||||
:deep() .radio-group {
|
||||
display: flex;
|
||||
.radio-container {
|
||||
margin-right: 30px;
|
||||
|
||||
@ -92,7 +92,7 @@ export default {
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="disk" @input="update">
|
||||
<div class="disk" @update:value="update">
|
||||
<Banner
|
||||
v-if="mountedMessage"
|
||||
color="error"
|
||||
@ -107,7 +107,7 @@ export default {
|
||||
>
|
||||
<template #value>
|
||||
<div class="mt-5">
|
||||
<Tag v-for="(prop, key) in value.tags" :key="key + prop" class="mr-5">
|
||||
<Tag v-for="(prop, key) in value.tags" :key="key">
|
||||
{{ prop }}
|
||||
</Tag>
|
||||
</div>
|
||||
|
||||
@ -57,9 +57,7 @@ export default {
|
||||
<div>
|
||||
<div v-if="inventory.warningMessages.length > 0">
|
||||
<Banner
|
||||
v-for="msg in inventory.warningMessages"
|
||||
:key="msg.text"
|
||||
color="error"
|
||||
v-for="(msg, i) in inventory.warningMessages" :key="i" color="error"
|
||||
:label="msg.text"
|
||||
/>
|
||||
</div>
|
||||
@ -117,7 +115,7 @@ export default {
|
||||
>
|
||||
<div class="col span-6">
|
||||
<RadioGroup
|
||||
v-model="enableInventory"
|
||||
v-model:value="enableInventory"
|
||||
:options="[
|
||||
{ label: t('generic.enabled'), value: true },
|
||||
{ label: t('generic.disabled'), value: false }
|
||||
|
||||
@ -102,9 +102,9 @@ export default {
|
||||
default-sort-by="age"
|
||||
:rows="rows"
|
||||
key-field="_key"
|
||||
v-on="$listeners"
|
||||
|
||||
>
|
||||
<template slot="cell:state" slot-scope="scope">
|
||||
<template cell:state="scope">
|
||||
<div class="state">
|
||||
<HarvesterVmState class="vmstate" :row="scope.row" :all-cluster-network="allClusterNetwork" />
|
||||
</div>
|
||||
@ -116,11 +116,11 @@ export default {
|
||||
|
||||
<style lang="scss" scoped>
|
||||
#host-instances {
|
||||
::v-deep thead th {
|
||||
:deep() thead th {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
::v-deep .state {
|
||||
:deep() .state {
|
||||
display: flex;
|
||||
|
||||
.vmstate {
|
||||
|
||||
@ -87,7 +87,7 @@ export default {
|
||||
<div class="row mt-20">
|
||||
<div class="col span-12">
|
||||
<ArrayListGrouped
|
||||
v-model="linkStatus"
|
||||
v-model:value="linkStatus"
|
||||
:mode="mode"
|
||||
:can-remove="false"
|
||||
>
|
||||
|
||||
@ -378,7 +378,7 @@ export default {
|
||||
>
|
||||
<Tab name="basics" :label="t('harvester.host.tabs.basics')" :weight="4" class="bordered-table">
|
||||
<Basic
|
||||
v-model="value"
|
||||
v-model:value="value"
|
||||
:metrics="metrics"
|
||||
:mode="mode"
|
||||
/>
|
||||
@ -394,9 +394,7 @@ export default {
|
||||
class="bordered-table"
|
||||
>
|
||||
<InfoBox
|
||||
v-for="vlan in vlanStatuses"
|
||||
:key="vlan.id"
|
||||
>
|
||||
v-for="(vlan, i) in vlanStatuses" :key="i" >
|
||||
<VlanStatus
|
||||
:value="vlan"
|
||||
:mode="mode"
|
||||
@ -420,7 +418,7 @@ export default {
|
||||
>
|
||||
<template #value>
|
||||
<div class="mt-5">
|
||||
<Tag v-for="(prop, key) in longhornNode.spec.tags" :key="key + prop" class="mr-5">
|
||||
<Tag v-for="(prop, key) in longhornNode.spec.tags" :key="key">
|
||||
{{ prop }}
|
||||
</Tag>
|
||||
</div>
|
||||
@ -429,14 +427,14 @@ export default {
|
||||
</div>
|
||||
</div>
|
||||
<ArrayListGrouped
|
||||
v-model="newDisks"
|
||||
v-model:value="newDisks"
|
||||
:mode="mode"
|
||||
:can-remove="false"
|
||||
:initial-empty-row="false"
|
||||
>
|
||||
<template #default="props">
|
||||
<Disk
|
||||
v-model="props.row.value"
|
||||
v-model:value="props.row.value"
|
||||
class="mb-20"
|
||||
:mode="mode"
|
||||
:disks="disks"
|
||||
|
||||
@ -158,7 +158,7 @@ export default {
|
||||
|
||||
<template>
|
||||
<ResourceTabs
|
||||
v-model="value"
|
||||
v-model:value="value"
|
||||
:need-events="false"
|
||||
:need-related="false"
|
||||
:mode="mode"
|
||||
@ -255,9 +255,7 @@ export default {
|
||||
|
||||
<div v-else>
|
||||
<div
|
||||
v-for="(row,idx) in parsedRows"
|
||||
:key="idx"
|
||||
class="entry"
|
||||
v-for="(row,idx) in parsedRows" :key="idx"class="entry"
|
||||
>
|
||||
<DetailText
|
||||
:value="row.value"
|
||||
|
||||
@ -154,7 +154,7 @@ export default {
|
||||
<template #value>
|
||||
<div>
|
||||
<ul>
|
||||
<li v-for="(disk) in disks" :key="disk.bootOrder">
|
||||
<li v-for="(disk, i) in disks" :key="i" >
|
||||
{{ disk.bootOrder }}. {{ disk.name }} ({{ getDeviceType(disk) }})
|
||||
</li>
|
||||
</ul>
|
||||
@ -167,7 +167,7 @@ export default {
|
||||
<template #value>
|
||||
<div>
|
||||
<ul v-if="cdroms.length > 0">
|
||||
<li v-for="(rom) in cdroms" :key="rom.name">
|
||||
<li v-for="(rom, i) in cdroms" :key="i" >
|
||||
{{ rom.name }}
|
||||
</li>
|
||||
</ul>
|
||||
@ -186,7 +186,7 @@ export default {
|
||||
:label="t('harvester.tab.volume')"
|
||||
:weight="-1"
|
||||
>
|
||||
<Volume v-model="diskRows" :mode="mode" />
|
||||
<Volume v-model:value="diskRows" :mode="mode" />
|
||||
</Tab>
|
||||
|
||||
<Tab
|
||||
@ -194,11 +194,11 @@ export default {
|
||||
:label="t('harvester.tab.network')"
|
||||
:weight="-2"
|
||||
>
|
||||
<Network v-model="networkRows" :mode="mode" />
|
||||
<Network v-model:value="networkRows" :mode="mode" />
|
||||
</Tab>
|
||||
|
||||
<Tab name="keypairs" :label="t('harvester.virtualMachine.detail.tabs.keypairs')" class="bordered-table" :weight="-3">
|
||||
<OverviewKeypairs v-if="vm" v-model="vm" />
|
||||
<OverviewKeypairs v-if="vm" v-model:value="vm" />
|
||||
</Tab>
|
||||
|
||||
<Tab
|
||||
@ -214,7 +214,7 @@ export default {
|
||||
/>
|
||||
|
||||
<div class="spacer"></div>
|
||||
<Checkbox v-model="installUSBTablet" :mode="mode" class="check" type="checkbox" :label="t('harvester.virtualMachine.enableUsb')" />
|
||||
<Checkbox v-model:value="installUSBTablet" :mode="mode" class="check" type="checkbox" :label="t('harvester.virtualMachine.enableUsb')" />
|
||||
</Tab>
|
||||
</Tabbed>
|
||||
</CruResource>
|
||||
|
||||
@ -124,7 +124,7 @@ export default {
|
||||
class="bordered-table"
|
||||
>
|
||||
<Storage
|
||||
v-model="value.spec.storageClassParameters"
|
||||
v-model:value="value.spec.storageClassParameters"
|
||||
/>
|
||||
</Tab>
|
||||
</Tabbed>
|
||||
|
||||
@ -154,7 +154,7 @@ export default {
|
||||
<template #value>
|
||||
<div>
|
||||
<ul>
|
||||
<li v-for="(disk) in disks" :key="disk.bootOrder">
|
||||
<li v-for="(disk, i) in disks" :key="i" >
|
||||
{{ disk.bootOrder }}. {{ disk.name }} ({{ getDeviceType(disk) }})
|
||||
</li>
|
||||
</ul>
|
||||
@ -167,7 +167,7 @@ export default {
|
||||
<template #value>
|
||||
<div>
|
||||
<ul v-if="cdroms.length > 0">
|
||||
<li v-for="(rom) in cdroms" :key="rom.name">
|
||||
<li v-for="(rom, i) in cdroms" :key="i" >
|
||||
{{ rom.name }}
|
||||
</li>
|
||||
</ul>
|
||||
@ -186,7 +186,7 @@ export default {
|
||||
:label="t('harvester.tab.volume')"
|
||||
:weight="-1"
|
||||
>
|
||||
<Volume v-model="diskRows" :mode="mode" />
|
||||
<Volume v-model:value="diskRows" :mode="mode" />
|
||||
</Tab>
|
||||
|
||||
<Tab
|
||||
@ -194,11 +194,11 @@ export default {
|
||||
:label="t('harvester.tab.network')"
|
||||
:weight="-2"
|
||||
>
|
||||
<Network v-model="networkRows" :mode="mode" />
|
||||
<Network v-model:value="networkRows" :mode="mode" />
|
||||
</Tab>
|
||||
|
||||
<Tab name="keypairs" :label="t('harvester.virtualMachine.detail.tabs.keypairs')" class="bordered-table" :weight="-3">
|
||||
<OverviewKeypairs v-if="vm" v-model="vm" />
|
||||
<OverviewKeypairs v-if="vm" v-model:value="vm" />
|
||||
</Tab>
|
||||
|
||||
<Tab
|
||||
@ -214,7 +214,7 @@ export default {
|
||||
/>
|
||||
|
||||
<div class="spacer"></div>
|
||||
<Checkbox v-model="installUSBTablet" :mode="mode" class="check" type="checkbox" :label="t('harvester.virtualMachine.enableUsb')" />
|
||||
<Checkbox v-model:value="installUSBTablet" :mode="mode" class="check" type="checkbox" :label="t('harvester.virtualMachine.enableUsb')" />
|
||||
</Tab>
|
||||
</Tabbed>
|
||||
</CruResource>
|
||||
|
||||
@ -182,7 +182,7 @@ export default {
|
||||
<div class="col span-6">
|
||||
<LabelValue :name="t('harvester.virtualMachine.detail.details.ipAddress')">
|
||||
<template #value>
|
||||
<HarvesterIpAddress v-model="value.id" :row="value" />
|
||||
<HarvesterIpAddress v-model:value="value.id" :row="value" />
|
||||
</template>
|
||||
</LabelValue>
|
||||
</div>
|
||||
@ -201,7 +201,7 @@ export default {
|
||||
<InputOrDisplay :name="t('harvester.virtualMachine.detail.details.bootOrder')" :value="disks" :mode="mode">
|
||||
<template #value>
|
||||
<ul>
|
||||
<li v-for="(disk) in disks" :key="disk.bootOrder">
|
||||
<li v-for="(disk, i) in disks" :key="i" >
|
||||
{{ disk.bootOrder }}. {{ disk.name }} ({{ getDeviceType(disk) }})
|
||||
</li>
|
||||
</ul>
|
||||
@ -213,7 +213,7 @@ export default {
|
||||
<template #value>
|
||||
<div>
|
||||
<ul v-if="cdroms.length > 0">
|
||||
<li v-for="(rom) in cdroms" :key="rom.name">
|
||||
<li v-for="(rom, i) in cdroms" :key="i" >
|
||||
{{ rom.name }}
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
@ -66,7 +66,7 @@ export default {
|
||||
|
||||
<template>
|
||||
<div class="overview-sshKeys">
|
||||
<div v-for="(ssh, index) in sshKeys" :key="index" class="row overview-sshKeys__item">
|
||||
<div v-for="(ssh, index) in sshKeys" :key="index">
|
||||
<div class="col span-4">
|
||||
{{ ssh.id }}
|
||||
</div>
|
||||
|
||||
@ -158,12 +158,12 @@ export default {
|
||||
<div>
|
||||
<Tabbed v-bind="$attrs" class="mt-15" :side-tabs="true" @changed="onTabChanged">
|
||||
<Tab name="basics" :label="t('harvester.virtualMachine.detail.tabs.basics')" class="bordered-table" :weight="7">
|
||||
<OverviewBasics v-model="value" :vmi="vmi" mode="view" />
|
||||
<OverviewBasics v-model:value="value" :vmi="vmi" mode="view" />
|
||||
</Tab>
|
||||
|
||||
<Tab name="disks" :label="t('harvester.tab.volume')" class="bordered-table" :weight="6">
|
||||
<Volume
|
||||
v-model="diskRows"
|
||||
v-model:value="diskRows"
|
||||
mode="view"
|
||||
:namespace="value.metadata.namespace"
|
||||
:vm="value"
|
||||
@ -172,11 +172,11 @@ export default {
|
||||
</Tab>
|
||||
|
||||
<Tab name="networks" :label="t('harvester.virtualMachine.detail.tabs.networks')" class="bordered-table" :weight="5">
|
||||
<Network v-model="networkRows" mode="view" />
|
||||
<Network v-model:value="networkRows" mode="view" />
|
||||
</Tab>
|
||||
|
||||
<Tab name="keypairs" :label="t('harvester.virtualMachine.detail.tabs.keypairs')" class="bordered-table" :weight="3">
|
||||
<OverviewKeypairs v-model="value" />
|
||||
<OverviewKeypairs v-model:value="value" />
|
||||
</Tab>
|
||||
|
||||
<Tab
|
||||
@ -235,7 +235,7 @@ export default {
|
||||
</Tab>
|
||||
|
||||
<Tab name="migration" :label="t('harvester.virtualMachine.detail.tabs.migration')">
|
||||
<Migration v-model="value" :vmi-resource="vmi" />
|
||||
<Migration v-model:value="value" :vmi-resource="vmi" />
|
||||
</Tab>
|
||||
|
||||
<Tab
|
||||
@ -261,7 +261,7 @@ export default {
|
||||
:mode="mode"
|
||||
:read-allowed="false"
|
||||
:value-can-be-empty="true"
|
||||
@input="value.setInstanceLabels($event)"
|
||||
@update:value="value.setInstanceLabels($event)"
|
||||
/>
|
||||
</template>
|
||||
</Labels>
|
||||
|
||||
@ -71,7 +71,7 @@ export default {
|
||||
|
||||
<template>
|
||||
<ResourceTabs
|
||||
v-model="value"
|
||||
v-model:value="value"
|
||||
:need-related="false"
|
||||
>
|
||||
<Tab
|
||||
|
||||
@ -119,7 +119,7 @@ export default {
|
||||
|
||||
<template>
|
||||
<ResourceTabs
|
||||
v-model="value"
|
||||
v-model:value="value"
|
||||
:need-related="false"
|
||||
>
|
||||
<Tab
|
||||
|
||||
@ -69,7 +69,7 @@ export default {
|
||||
|
||||
<template>
|
||||
<ResourceTabs
|
||||
v-model="value"
|
||||
v-model:value="value"
|
||||
:need-related="false"
|
||||
>
|
||||
<Tab
|
||||
|
||||
@ -91,11 +91,11 @@ export default {
|
||||
</template>
|
||||
|
||||
<template #body>
|
||||
<Checkbox v-model="cloneData" class="mb-10" label-key="harvester.modal.cloneVM.type" />
|
||||
<Checkbox v-model:value="cloneData" class="mb-10" label-key="harvester.modal.cloneVM.type" />
|
||||
|
||||
<LabeledInput
|
||||
v-show="cloneData"
|
||||
v-model="name"
|
||||
v-model:value="name"
|
||||
class="mb-20"
|
||||
:label="t('harvester.modal.cloneVM.name')"
|
||||
required
|
||||
@ -116,7 +116,7 @@ export default {
|
||||
/>
|
||||
</div>
|
||||
|
||||
<Banner v-for="(err, i) in errors" :key="i" color="error" :label="err" />
|
||||
<Banner v-for="(err, i) in errors" :key="i"/>
|
||||
</div>
|
||||
</Card>
|
||||
</template>
|
||||
|
||||
@ -146,11 +146,11 @@ export default {
|
||||
<div class="mb-10">
|
||||
<CopyToClipboardText :text="nameToMatch" />
|
||||
</div>
|
||||
<input id="confirm" v-model="confirmName" type="text" />
|
||||
<input id="confirm" v-model:value="confirmName" type="text" />
|
||||
<div class="text-info mt-20">
|
||||
{{ protip }}
|
||||
</div>
|
||||
<Banner v-for="(error, i) in errors" :key="i" class="" color="error" :label="error" />
|
||||
<Banner v-for="(error, i) in errors" :key="i"/>
|
||||
</div>
|
||||
<template #actions>
|
||||
<button class="btn role-secondary mr-10" @click="close">
|
||||
|
||||
@ -91,11 +91,11 @@ export default {
|
||||
</template>
|
||||
|
||||
<template #body>
|
||||
<Checkbox v-model="cloneData" class="mb-10" label-key="harvester.modal.cloneVM.type" />
|
||||
<Checkbox v-model:value="cloneData" class="mb-10" label-key="harvester.modal.cloneVM.type" />
|
||||
|
||||
<LabeledInput
|
||||
v-show="cloneData"
|
||||
v-model="name"
|
||||
v-model:value="name"
|
||||
class="mb-20"
|
||||
:label="t('harvester.modal.cloneVM.name')"
|
||||
required
|
||||
|
||||
@ -69,7 +69,7 @@ export default {
|
||||
<div class="body">
|
||||
<div class="type-field">
|
||||
<LabeledSelect
|
||||
v-model="type"
|
||||
v-model:value="type"
|
||||
required
|
||||
:options="availableTypes"
|
||||
:searchable="true"
|
||||
|
||||
@ -114,13 +114,13 @@ export default {
|
||||
|
||||
<template #body>
|
||||
<LabeledInput
|
||||
v-model="diskName"
|
||||
v-model:value="diskName"
|
||||
:label="t('generic.name')"
|
||||
required
|
||||
/>
|
||||
|
||||
<LabeledSelect
|
||||
v-model="volumeName"
|
||||
v-model:value="volumeName"
|
||||
:label="t('harvester.fields.volume')"
|
||||
:options="volumeOption"
|
||||
class="mt-20"
|
||||
@ -141,7 +141,7 @@ export default {
|
||||
/>
|
||||
</div>
|
||||
|
||||
<Banner v-for="(err, i) in errors" :key="i" color="error" :label="err" />
|
||||
<Banner v-for="(err, i) in errors" :key="i"/>
|
||||
</div>
|
||||
</Card>
|
||||
</template>
|
||||
|
||||
@ -95,7 +95,7 @@ export default {
|
||||
/>
|
||||
|
||||
<template #body>
|
||||
<LabeledInput v-model="backUpName" :label="t('generic.name')" required />
|
||||
<LabeledInput v-model:value="backUpName" :label="t('generic.name')" required />
|
||||
</template>
|
||||
|
||||
<div slot="actions" class="actions">
|
||||
|
||||
@ -101,17 +101,17 @@ export default {
|
||||
</template>
|
||||
|
||||
<template #body>
|
||||
<Checkbox v-model="withData" class="mb-10" label="With Data" />
|
||||
<Checkbox v-model:value="withData" class="mb-10" label="With Data" />
|
||||
|
||||
<LabeledInput
|
||||
v-model="templateName"
|
||||
v-model:value="templateName"
|
||||
class="mb-20"
|
||||
:label="t('harvester.modal.createTemplate.name')"
|
||||
required
|
||||
/>
|
||||
|
||||
<LabeledInput
|
||||
v-model="description"
|
||||
v-model:value="description"
|
||||
:label="t('harvester.modal.createTemplate.description')"
|
||||
/>
|
||||
</template>
|
||||
@ -129,7 +129,7 @@ export default {
|
||||
/>
|
||||
</div>
|
||||
|
||||
<Banner v-for="(err, i) in errors" :key="i" color="error" :label="err" />
|
||||
<Banner v-for="(err, i) in errors" :key="i"/>
|
||||
</div>
|
||||
</Card>
|
||||
</template>
|
||||
|
||||
@ -116,9 +116,7 @@ export default {
|
||||
|
||||
<div>
|
||||
<Checkbox
|
||||
v-for="disk in allDisk"
|
||||
:key="disk.name"
|
||||
v-model="disk.value"
|
||||
v-for="(disk, i) in allDisk" :key="i" v-model:value="disk.value"
|
||||
:label="disk.name"
|
||||
/>
|
||||
</div>
|
||||
|
||||
@ -142,7 +142,7 @@ export default {
|
||||
|
||||
<template #body>
|
||||
<LabeledSelect
|
||||
v-model="namespace"
|
||||
v-model:value="namespace"
|
||||
:label="t('harvester.modal.exportImage.namespace')"
|
||||
:options="namespaces"
|
||||
class="mb-20"
|
||||
@ -150,13 +150,13 @@ export default {
|
||||
/>
|
||||
|
||||
<LabeledInput
|
||||
v-model="name"
|
||||
v-model:value="name"
|
||||
:label="t('harvester.modal.exportImage.name')"
|
||||
required
|
||||
/>
|
||||
|
||||
<LabeledSelect
|
||||
v-model="storageClassName"
|
||||
v-model:value="storageClassName"
|
||||
:options="storageClassOptions"
|
||||
:label="t('harvester.storage.storageClass.label')"
|
||||
class="mt-20"
|
||||
@ -177,7 +177,7 @@ export default {
|
||||
/>
|
||||
</div>
|
||||
|
||||
<Banner v-for="(err, i) in errors" :key="i" color="error" :label="err" />
|
||||
<Banner v-for="(err, i) in errors" :key="i"/>
|
||||
</div>
|
||||
</Card>
|
||||
</template>
|
||||
|
||||
@ -93,7 +93,7 @@ export default {
|
||||
<template #body>
|
||||
<div>
|
||||
<Checkbox
|
||||
v-model="force"
|
||||
v-model:value="force"
|
||||
label-key="harvester.host.enableMaintenance.force"
|
||||
/>
|
||||
</div>
|
||||
@ -109,9 +109,7 @@ export default {
|
||||
|
||||
<div class="vm-list mb-5">
|
||||
<BadgeState
|
||||
v-for="vm in unhealthyVM.vms"
|
||||
:key="vm"
|
||||
color="bg-error mb-5 mr-5"
|
||||
v-for="(vm, i) in unhealthyVM.vms" :key="i" color="bg-error mb-5 mr-5"
|
||||
:label="vm"
|
||||
/>
|
||||
</div>
|
||||
|
||||
@ -141,7 +141,7 @@ export default {
|
||||
|
||||
<template #body>
|
||||
<LabeledSelect
|
||||
v-model="nodeName"
|
||||
v-model:value="nodeName"
|
||||
:label="t('harvester.modal.migration.fields.nodeName.label')"
|
||||
:placeholder="t('harvester.modal.migration.fields.nodeName.placeholder')"
|
||||
:options="nodeNameList"
|
||||
@ -161,7 +161,7 @@ export default {
|
||||
/>
|
||||
</div>
|
||||
|
||||
<Banner v-for="(err, i) in errors" :key="i" color="error" :label="err" />
|
||||
<Banner v-for="(err, i) in errors" :key="i"/>
|
||||
</div>
|
||||
</Card>
|
||||
</template>
|
||||
|
||||
@ -128,7 +128,7 @@ export default {
|
||||
|
||||
<template #body>
|
||||
<LabeledSelect
|
||||
v-model="backupName"
|
||||
v-model:value="backupName"
|
||||
:label="t('harvester.modal.restore.selectBackup')"
|
||||
:localized-label="true"
|
||||
:options="backupOption"
|
||||
|
||||
@ -124,13 +124,13 @@ export default {
|
||||
class="content"
|
||||
>
|
||||
<LabeledInput
|
||||
v-model="url"
|
||||
v-model:value="url"
|
||||
:label="t('harvester.modal.bundle.url')"
|
||||
class="mb-20"
|
||||
/>
|
||||
|
||||
<LabeledInput
|
||||
v-model="description"
|
||||
v-model:value="description"
|
||||
:label="t('harvester.modal.bundle.description')"
|
||||
type="multiline"
|
||||
:min-height="120"
|
||||
@ -154,9 +154,7 @@ export default {
|
||||
</div>
|
||||
|
||||
<div
|
||||
v-for="(err, idx) in errors"
|
||||
:key="idx"
|
||||
>
|
||||
v-for="(err, idx) in errors" :key="idx">
|
||||
<Banner
|
||||
color="error"
|
||||
:label="stringify(err)"
|
||||
|
||||
@ -118,8 +118,8 @@ export default {
|
||||
/>
|
||||
|
||||
<template #body>
|
||||
<LabeledInput v-model="actionResource.metadata.namespace" :disabled="true" :label="t('generic.namespace')" />
|
||||
<LabeledInput v-model="snapshotName" class="mt-20" :label="t('generic.name')" required />
|
||||
<LabeledInput v-model:value="actionResource.metadata.namespace" :disabled="true" :label="t('generic.namespace')" />
|
||||
<LabeledInput v-model:value="snapshotName" class="mt-20" :label="t('generic.name')" required />
|
||||
</template>
|
||||
|
||||
<div slot="actions" class="actions">
|
||||
@ -131,7 +131,7 @@ export default {
|
||||
<AsyncButton mode="create" :disabled="!snapshotName" @click="save" />
|
||||
</div>
|
||||
|
||||
<Banner v-for="(err, i) in errors" :key="i" color="error" :label="err" />
|
||||
<Banner v-for="(err, i) in errors" :key="i"/>
|
||||
</div>
|
||||
</Card>
|
||||
</template>
|
||||
|
||||
@ -100,7 +100,7 @@ export default {
|
||||
|
||||
<template #body>
|
||||
<LabeledSelect
|
||||
v-model="clusterNetwork"
|
||||
v-model:value="clusterNetwork"
|
||||
:label="t('harvester.harvesterVlanConfigMigrateDialog.targetClusterNetwork.label')"
|
||||
:placeholder="t('harvester.harvesterVlanConfigMigrateDialog.targetClusterNetwork.placeholder')"
|
||||
:options="clusterNetworks"
|
||||
@ -120,7 +120,7 @@ export default {
|
||||
/>
|
||||
</div>
|
||||
|
||||
<Banner v-for="(err, i) in errors" :key="i" color="error" :label="err" />
|
||||
<Banner v-for="(err, i) in errors" :key="i"/>
|
||||
</div>
|
||||
</Card>
|
||||
</template>
|
||||
|
||||
@ -75,9 +75,7 @@ export default {
|
||||
class="bottom"
|
||||
>
|
||||
<Banner
|
||||
v-for="(err, i) in errors"
|
||||
:key="i"
|
||||
color="error"
|
||||
v-for="(err, i) in errors" :key="i"color="error"
|
||||
:label="err"
|
||||
/>
|
||||
<div class="buttons">
|
||||
|
||||
@ -129,13 +129,13 @@ export default {
|
||||
</template>
|
||||
<template #body>
|
||||
<LabeledInput
|
||||
v-model="name"
|
||||
v-model:value="name"
|
||||
:label="t('harvester.modal.restoreSnapshot.name')"
|
||||
required
|
||||
/>
|
||||
<LabeledSelect
|
||||
v-if="showStorageClass"
|
||||
v-model="storageClassName"
|
||||
v-model:value="storageClassName"
|
||||
:options="storageClassOptions"
|
||||
:label="t('harvester.storage.storageClass.label')"
|
||||
class="mt-20"
|
||||
@ -153,7 +153,7 @@ export default {
|
||||
@click="save"
|
||||
/>
|
||||
</div>
|
||||
<Banner v-for="(err, i) in errors" :key="i" color="error" :label="err" />
|
||||
<Banner v-for="(err, i) in errors" :key="i"/>
|
||||
</div>
|
||||
</Card>
|
||||
</template>
|
||||
|
||||
@ -71,7 +71,7 @@ export default {
|
||||
</template>
|
||||
<template #body>
|
||||
<LabeledInput
|
||||
v-model="name"
|
||||
v-model:value="name"
|
||||
:label="t('harvester.modal.snapshot.name')"
|
||||
required
|
||||
/>
|
||||
|
||||
@ -81,11 +81,11 @@ export default {
|
||||
{{ t('harvester.modal.volumeClone.title') }}
|
||||
</template>
|
||||
<template #body>
|
||||
<Checkbox v-model="cloneData" class="mb-10" label-key="harvester.modal.cloneVM.type" />
|
||||
<Checkbox v-model:value="cloneData" class="mb-10" label-key="harvester.modal.cloneVM.type" />
|
||||
|
||||
<LabeledInput
|
||||
v-show="cloneData"
|
||||
v-model="name"
|
||||
v-model:value="name"
|
||||
class="mb-20"
|
||||
:label="t('harvester.modal.volumeClone.name')"
|
||||
required
|
||||
@ -102,7 +102,7 @@ export default {
|
||||
@click="save"
|
||||
/>
|
||||
</div>
|
||||
<Banner v-for="(err, i) in errors" :key="i" color="error" :label="err" />
|
||||
<Banner v-for="(err, i) in errors" :key="i"/>
|
||||
</div>
|
||||
</Card>
|
||||
</template>
|
||||
|
||||
@ -37,7 +37,7 @@ export default {
|
||||
:weight="99"
|
||||
>
|
||||
<RadioGroup
|
||||
v-model="value.spec.enabled"
|
||||
v-model:value="value.spec.enabled"
|
||||
class="mb-20"
|
||||
name="model"
|
||||
:mode="mode"
|
||||
@ -49,7 +49,7 @@ export default {
|
||||
</template>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
::v-deep .radio-group {
|
||||
:deep() .radio-group {
|
||||
display: flex;
|
||||
.radio-container {
|
||||
margin-right: 30px;
|
||||
|
||||
@ -37,7 +37,7 @@ export default {
|
||||
:weight="99"
|
||||
>
|
||||
<RadioGroup
|
||||
v-model="value.spec.enabled"
|
||||
v-model:value="value.spec.enabled"
|
||||
class="mb-20"
|
||||
name="model"
|
||||
:mode="mode"
|
||||
@ -49,7 +49,7 @@ export default {
|
||||
</template>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
::v-deep .radio-group {
|
||||
:deep() .radio-group {
|
||||
display: flex;
|
||||
.radio-container {
|
||||
margin-right: 30px;
|
||||
|
||||
@ -110,13 +110,13 @@ export default {
|
||||
:mode="mode"
|
||||
:options="[true,false]"
|
||||
:labels="[t('generic.enabled'), t('generic.disabled')]"
|
||||
@input="toggleEnable"
|
||||
@update:value="toggleEnable"
|
||||
/>
|
||||
<div v-if="value.spec.enabled">
|
||||
<div v-if="valuesContentJson.image" class="row mb-15">
|
||||
<div class="col span-6">
|
||||
<LabeledInput
|
||||
v-model="valuesContentJson.image.repo"
|
||||
v-model:value="valuesContentJson.image.repo"
|
||||
:mode="mode"
|
||||
:required="true"
|
||||
label-key="harvester.addons.nvidiaDriverToolkit.image.repository"
|
||||
@ -124,7 +124,7 @@ export default {
|
||||
</div>
|
||||
<div class="col span-6">
|
||||
<LabeledInput
|
||||
v-model="valuesContentJson.image.tag"
|
||||
v-model:value="valuesContentJson.image.tag"
|
||||
:mode="mode"
|
||||
:required="true"
|
||||
class="col span-6"
|
||||
@ -134,7 +134,7 @@ export default {
|
||||
</div>
|
||||
<div class="row mb-15">
|
||||
<LabeledInput
|
||||
v-model="valuesContentJson.driverLocation"
|
||||
v-model:value="valuesContentJson.driverLocation"
|
||||
:mode="mode"
|
||||
:required="true"
|
||||
label-key="harvester.addons.nvidiaDriverToolkit.driver.location"
|
||||
@ -147,7 +147,7 @@ export default {
|
||||
</template>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
::v-deep .radio-group {
|
||||
:deep() .radio-group {
|
||||
display: flex;
|
||||
.radio-container {
|
||||
margin-right: 30px;
|
||||
|
||||
@ -37,7 +37,7 @@ export default {
|
||||
:weight="99"
|
||||
>
|
||||
<RadioGroup
|
||||
v-model="value.spec.enabled"
|
||||
v-model:value="value.spec.enabled"
|
||||
class="mb-20"
|
||||
name="model"
|
||||
:mode="mode"
|
||||
@ -49,7 +49,7 @@ export default {
|
||||
</template>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
::v-deep .radio-group {
|
||||
:deep() .radio-group {
|
||||
display: flex;
|
||||
.radio-container {
|
||||
margin-right: 30px;
|
||||
|
||||
@ -94,7 +94,7 @@ export default {
|
||||
:weight="99"
|
||||
>
|
||||
<RadioGroup
|
||||
v-model="value.spec.enabled"
|
||||
v-model:value="value.spec.enabled"
|
||||
class="mb-20"
|
||||
name="model"
|
||||
:mode="mode"
|
||||
@ -106,7 +106,7 @@ export default {
|
||||
<div class="row mt-20">
|
||||
<div class="col span-6">
|
||||
<LabeledInput
|
||||
v-model="valuesContentJson.fluentbit.resources.requests.cpu"
|
||||
v-model:value="valuesContentJson.fluentbit.resources.requests.cpu"
|
||||
:label="t('monitoring.prometheus.config.requests.cpu')"
|
||||
:required="true"
|
||||
:mode="mode"
|
||||
@ -114,7 +114,7 @@ export default {
|
||||
</div>
|
||||
<div class="col span-6">
|
||||
<LabeledInput
|
||||
v-model="valuesContentJson.fluentbit.resources.requests.memory"
|
||||
v-model:value="valuesContentJson.fluentbit.resources.requests.memory"
|
||||
:label="t('monitoring.prometheus.config.requests.memory')"
|
||||
:required="true"
|
||||
:mode="mode"
|
||||
@ -124,7 +124,7 @@ export default {
|
||||
<div class="row mt-20">
|
||||
<div class="col span-6">
|
||||
<LabeledInput
|
||||
v-model="valuesContentJson.fluentbit.resources.limits.cpu"
|
||||
v-model:value="valuesContentJson.fluentbit.resources.limits.cpu"
|
||||
:label="t('monitoring.prometheus.config.limits.cpu')"
|
||||
:required="true"
|
||||
:mode="mode"
|
||||
@ -132,7 +132,7 @@ export default {
|
||||
</div>
|
||||
<div class="col span-6">
|
||||
<LabeledInput
|
||||
v-model="valuesContentJson.fluentbit.resources.limits.memory"
|
||||
v-model:value="valuesContentJson.fluentbit.resources.limits.memory"
|
||||
:label="t('monitoring.prometheus.config.limits.memory')"
|
||||
:required="true"
|
||||
:mode="mode"
|
||||
@ -144,7 +144,7 @@ export default {
|
||||
<div class="row mt-20">
|
||||
<div class="col span-6">
|
||||
<LabeledInput
|
||||
v-model="valuesContentJson.fluentd.resources.requests.cpu"
|
||||
v-model:value="valuesContentJson.fluentd.resources.requests.cpu"
|
||||
:label="t('monitoring.prometheus.config.requests.cpu')"
|
||||
:required="true"
|
||||
:mode="mode"
|
||||
@ -152,7 +152,7 @@ export default {
|
||||
</div>
|
||||
<div class="col span-6">
|
||||
<LabeledInput
|
||||
v-model="valuesContentJson.fluentd.resources.requests.memory"
|
||||
v-model:value="valuesContentJson.fluentd.resources.requests.memory"
|
||||
:label="t('monitoring.prometheus.config.requests.memory')"
|
||||
:required="true"
|
||||
:mode="mode"
|
||||
@ -162,7 +162,7 @@ export default {
|
||||
<div class="row mt-20">
|
||||
<div class="col span-6">
|
||||
<LabeledInput
|
||||
v-model="valuesContentJson.fluentd.resources.limits.cpu"
|
||||
v-model:value="valuesContentJson.fluentd.resources.limits.cpu"
|
||||
:label="t('monitoring.prometheus.config.limits.cpu')"
|
||||
:required="true"
|
||||
:mode="mode"
|
||||
@ -170,7 +170,7 @@ export default {
|
||||
</div>
|
||||
<div class="col span-6">
|
||||
<LabeledInput
|
||||
v-model="valuesContentJson.fluentd.resources.limits.memory"
|
||||
v-model:value="valuesContentJson.fluentd.resources.limits.memory"
|
||||
:label="t('monitoring.prometheus.config.limits.memory')"
|
||||
:required="true"
|
||||
:mode="mode"
|
||||
@ -182,7 +182,7 @@ export default {
|
||||
</template>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
::v-deep .radio-group {
|
||||
:deep() .radio-group {
|
||||
display: flex;
|
||||
.radio-container {
|
||||
margin-right: 30px;
|
||||
|
||||
@ -208,7 +208,7 @@ export default {
|
||||
:weight="99"
|
||||
>
|
||||
<RadioGroup
|
||||
v-model="value.spec.enabled"
|
||||
v-model:value="value.spec.enabled"
|
||||
class="mb-20"
|
||||
name="model"
|
||||
:mode="mode"
|
||||
@ -244,7 +244,7 @@ export default {
|
||||
<div class="row">
|
||||
<div class="col span-6">
|
||||
<LabeledInput
|
||||
v-model="valuesContentJson.prometheus.prometheusSpec.scrapeInterval"
|
||||
v-model:value="valuesContentJson.prometheus.prometheusSpec.scrapeInterval"
|
||||
:label="t('monitoring.prometheus.config.scrape')"
|
||||
:tooltip="t('harvester.setting.harvesterMonitoring.tips.scrape')"
|
||||
:required="true"
|
||||
@ -253,7 +253,7 @@ export default {
|
||||
</div>
|
||||
<div class="col span-6">
|
||||
<LabeledInput
|
||||
v-model="valuesContentJson.prometheus.prometheusSpec.evaluationInterval"
|
||||
v-model:value="valuesContentJson.prometheus.prometheusSpec.evaluationInterval"
|
||||
:label="t('monitoring.prometheus.config.evaluation')"
|
||||
:tooltip="t('harvester.setting.harvesterMonitoring.tips.evaluation')"
|
||||
:required="true"
|
||||
@ -264,7 +264,7 @@ export default {
|
||||
<div class="row mt-10">
|
||||
<div class="col span-6">
|
||||
<LabeledInput
|
||||
v-model="valuesContentJson.prometheus.prometheusSpec.retention"
|
||||
v-model:value="valuesContentJson.prometheus.prometheusSpec.retention"
|
||||
:label="t('monitoring.prometheus.config.retention')"
|
||||
:tooltip="t('harvester.setting.harvesterMonitoring.tips.retention')"
|
||||
:required="true"
|
||||
@ -273,7 +273,7 @@ export default {
|
||||
</div>
|
||||
<div class="col span-6">
|
||||
<LabeledInput
|
||||
v-model="valuesContentJson.prometheus.prometheusSpec.retentionSize"
|
||||
v-model:value="valuesContentJson.prometheus.prometheusSpec.retentionSize"
|
||||
:label="t('monitoring.prometheus.config.retentionSize')"
|
||||
:tooltip="t('harvester.setting.harvesterMonitoring.tips.retentionSize')"
|
||||
:required="true"
|
||||
@ -291,7 +291,7 @@ export default {
|
||||
<div class="row mt-10">
|
||||
<div class="col span-6">
|
||||
<LabeledInput
|
||||
v-model="valuesContentJson.prometheus.prometheusSpec.resources.requests.cpu"
|
||||
v-model:value="valuesContentJson.prometheus.prometheusSpec.resources.requests.cpu"
|
||||
:label="t('monitoring.prometheus.config.requests.cpu')"
|
||||
:required="true"
|
||||
:mode="mode"
|
||||
@ -299,7 +299,7 @@ export default {
|
||||
</div>
|
||||
<div class="col span-6">
|
||||
<LabeledInput
|
||||
v-model="valuesContentJson.prometheus.prometheusSpec.resources.requests.memory"
|
||||
v-model:value="valuesContentJson.prometheus.prometheusSpec.resources.requests.memory"
|
||||
:label="t('monitoring.prometheus.config.requests.memory')"
|
||||
:required="true"
|
||||
:mode="mode"
|
||||
@ -309,7 +309,7 @@ export default {
|
||||
<div class="row mt-10">
|
||||
<div class="col span-6">
|
||||
<LabeledInput
|
||||
v-model="valuesContentJson.prometheus.prometheusSpec.resources.limits.cpu"
|
||||
v-model:value="valuesContentJson.prometheus.prometheusSpec.resources.limits.cpu"
|
||||
:label="t('monitoring.prometheus.config.limits.cpu')"
|
||||
:required="true"
|
||||
:mode="mode"
|
||||
@ -317,7 +317,7 @@ export default {
|
||||
</div>
|
||||
<div class="col span-6">
|
||||
<LabeledInput
|
||||
v-model="valuesContentJson.prometheus.prometheusSpec.resources.limits.memory"
|
||||
v-model:value="valuesContentJson.prometheus.prometheusSpec.resources.limits.memory"
|
||||
:label="t('monitoring.prometheus.config.limits.memory')"
|
||||
:required="true"
|
||||
:mode="mode"
|
||||
@ -329,7 +329,7 @@ export default {
|
||||
<div class="row mt-10">
|
||||
<div class="col span-6">
|
||||
<LabeledInput
|
||||
v-model="prometheusNodeExporter.resources.limits.cpu"
|
||||
v-model:value="prometheusNodeExporter.resources.limits.cpu"
|
||||
:label="t('monitoring.prometheus.config.limits.cpu')"
|
||||
:required="true"
|
||||
:mode="mode"
|
||||
@ -337,7 +337,7 @@ export default {
|
||||
</div>
|
||||
<div class="col span-6">
|
||||
<LabeledInput
|
||||
v-model="prometheusNodeExporter.resources.limits.memory"
|
||||
v-model:value="prometheusNodeExporter.resources.limits.memory"
|
||||
:label="t('monitoring.prometheus.config.limits.memory')"
|
||||
:required="true"
|
||||
:mode="mode"
|
||||
@ -347,7 +347,7 @@ export default {
|
||||
<div class="row mt-10">
|
||||
<div class="col span-6">
|
||||
<LabeledInput
|
||||
v-model="prometheusNodeExporter.resources.requests.cpu"
|
||||
v-model:value="prometheusNodeExporter.resources.requests.cpu"
|
||||
:label="t('monitoring.prometheus.config.requests.cpu')"
|
||||
:required="true"
|
||||
:mode="mode"
|
||||
@ -355,7 +355,7 @@ export default {
|
||||
</div>
|
||||
<div class="col span-6">
|
||||
<LabeledInput
|
||||
v-model="prometheusNodeExporter.resources.requests.memory"
|
||||
v-model:value="prometheusNodeExporter.resources.requests.memory"
|
||||
:label="t('monitoring.prometheus.config.requests.memory')"
|
||||
:required="true"
|
||||
:mode="mode"
|
||||
@ -391,7 +391,7 @@ export default {
|
||||
<div class="row mt-10">
|
||||
<div class="col span-6">
|
||||
<LabeledInput
|
||||
v-model="valuesContentJson.grafana.resources.requests.cpu"
|
||||
v-model:value="valuesContentJson.grafana.resources.requests.cpu"
|
||||
:label="t('monitoring.prometheus.config.requests.cpu')"
|
||||
:required="true"
|
||||
:mode="mode"
|
||||
@ -399,7 +399,7 @@ export default {
|
||||
</div>
|
||||
<div class="col span-6">
|
||||
<LabeledInput
|
||||
v-model="valuesContentJson.grafana.resources.requests.memory"
|
||||
v-model:value="valuesContentJson.grafana.resources.requests.memory"
|
||||
:label="t('monitoring.prometheus.config.requests.memory')"
|
||||
:required="true"
|
||||
:mode="mode"
|
||||
@ -409,7 +409,7 @@ export default {
|
||||
<div class="row mt-10">
|
||||
<div class="col span-6">
|
||||
<LabeledInput
|
||||
v-model="valuesContentJson.grafana.resources.limits.cpu"
|
||||
v-model:value="valuesContentJson.grafana.resources.limits.cpu"
|
||||
:label="t('monitoring.prometheus.config.limits.cpu')"
|
||||
:required="true"
|
||||
:mode="mode"
|
||||
@ -417,7 +417,7 @@ export default {
|
||||
</div>
|
||||
<div class="col span-6">
|
||||
<LabeledInput
|
||||
v-model="valuesContentJson.grafana.resources.limits.memory"
|
||||
v-model:value="valuesContentJson.grafana.resources.limits.memory"
|
||||
:label="t('monitoring.prometheus.config.limits.memory')"
|
||||
:required="true"
|
||||
:mode="mode"
|
||||
@ -427,7 +427,7 @@ export default {
|
||||
</Tab>
|
||||
<Tab v-if="value.spec.enabled" name="alertmanager" :label="t('harvester.setting.harvesterMonitoring.section.alertmanager')" :weight="-4">
|
||||
<RadioGroup
|
||||
v-model="valuesContentJson.alertmanager.enabled"
|
||||
v-model:value="valuesContentJson.alertmanager.enabled"
|
||||
class="mb-20"
|
||||
name="model"
|
||||
:mode="mode"
|
||||
@ -465,7 +465,7 @@ export default {
|
||||
<div class="row mt-10">
|
||||
<div class="col span-6">
|
||||
<LabeledInput
|
||||
v-model="valuesContentJson.alertmanager.alertmanagerSpec.retention"
|
||||
v-model:value="valuesContentJson.alertmanager.alertmanagerSpec.retention"
|
||||
:label="t('monitoring.prometheus.config.retention')"
|
||||
:required="true"
|
||||
:mode="mode"
|
||||
@ -475,7 +475,7 @@ export default {
|
||||
<div class="row mt-10">
|
||||
<div class="col span-6">
|
||||
<LabeledInput
|
||||
v-model="valuesContentJson.alertmanager.alertmanagerSpec.resources.limits.cpu"
|
||||
v-model:value="valuesContentJson.alertmanager.alertmanagerSpec.resources.limits.cpu"
|
||||
:label="t('monitoring.prometheus.config.limits.cpu')"
|
||||
:required="true"
|
||||
:mode="mode"
|
||||
@ -483,7 +483,7 @@ export default {
|
||||
</div>
|
||||
<div class="col span-6">
|
||||
<LabeledInput
|
||||
v-model="valuesContentJson.alertmanager.alertmanagerSpec.resources.limits.memory"
|
||||
v-model:value="valuesContentJson.alertmanager.alertmanagerSpec.resources.limits.memory"
|
||||
:label="t('monitoring.prometheus.config.limits.memory')"
|
||||
:required="true"
|
||||
:mode="mode"
|
||||
@ -493,7 +493,7 @@ export default {
|
||||
<div class="row mt-10">
|
||||
<div class="col span-6">
|
||||
<LabeledInput
|
||||
v-model="valuesContentJson.alertmanager.alertmanagerSpec.resources.requests.cpu"
|
||||
v-model:value="valuesContentJson.alertmanager.alertmanagerSpec.resources.requests.cpu"
|
||||
:label="t('monitoring.prometheus.config.requests.cpu')"
|
||||
:required="true"
|
||||
:mode="mode"
|
||||
@ -501,7 +501,7 @@ export default {
|
||||
</div>
|
||||
<div class="col span-6">
|
||||
<LabeledInput
|
||||
v-model="valuesContentJson.alertmanager.alertmanagerSpec.resources.requests.memory"
|
||||
v-model:value="valuesContentJson.alertmanager.alertmanagerSpec.resources.requests.memory"
|
||||
:label="t('monitoring.prometheus.config.requests.memory')"
|
||||
:required="true"
|
||||
:mode="mode"
|
||||
@ -514,7 +514,7 @@ export default {
|
||||
</template>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
::v-deep .radio-group {
|
||||
:deep() .radio-group {
|
||||
display: flex;
|
||||
.radio-container {
|
||||
margin-right: 30px;
|
||||
|
||||
@ -94,7 +94,7 @@ export default {
|
||||
<div class="row">
|
||||
<div class="col span-12">
|
||||
<RadioGroup
|
||||
v-model="value.spec.enabled"
|
||||
v-model:value="value.spec.enabled"
|
||||
class="mb-20"
|
||||
name="model"
|
||||
:mode="mode"
|
||||
@ -108,7 +108,7 @@ export default {
|
||||
<div class="row mb-20">
|
||||
<div class="col span-6">
|
||||
<LabeledInput
|
||||
v-model="valuesContentJson.hostname"
|
||||
v-model:value="valuesContentJson.hostname"
|
||||
label-key="harvester.addons.rancherVcluster.hostname"
|
||||
:required="true"
|
||||
:mode="mode"
|
||||
@ -118,7 +118,7 @@ export default {
|
||||
|
||||
<div class="col span-6">
|
||||
<LabeledInput
|
||||
v-model="valuesContentJson.rancherVersion"
|
||||
v-model:value="valuesContentJson.rancherVersion"
|
||||
label-key="harvester.addons.rancherVcluster.rancherVersion"
|
||||
:required="true"
|
||||
:disabled="true"
|
||||
@ -129,7 +129,7 @@ export default {
|
||||
<div class="row mt-20">
|
||||
<div class="col span-6">
|
||||
<LabeledInput
|
||||
v-model="valuesContentJson.bootstrapPassword"
|
||||
v-model:value="valuesContentJson.bootstrapPassword"
|
||||
label-key="harvester.addons.rancherVcluster.password"
|
||||
:mode="mode"
|
||||
:required="true"
|
||||
@ -142,7 +142,7 @@ export default {
|
||||
</template>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
::v-deep .radio-group {
|
||||
:deep() .radio-group {
|
||||
display: flex;
|
||||
.radio-container {
|
||||
margin-right: 30px;
|
||||
|
||||
@ -132,7 +132,7 @@ export default {
|
||||
:weight="99"
|
||||
>
|
||||
<RadioGroup
|
||||
v-model="value.spec.enabled"
|
||||
v-model:value="value.spec.enabled"
|
||||
class="mb-20"
|
||||
name="model"
|
||||
:mode="mode"
|
||||
@ -144,40 +144,40 @@ export default {
|
||||
<div class="row mt-10">
|
||||
<div class="col span-6">
|
||||
<LabeledInput
|
||||
v-model="valuesContent.resources.limits.cpu"
|
||||
v-model:value="valuesContent.resources.limits.cpu"
|
||||
:label="t('monitoring.prometheus.config.limits.cpu')"
|
||||
:required="true"
|
||||
:mode="mode"
|
||||
@input="update"
|
||||
@update:value="update"
|
||||
/>
|
||||
</div>
|
||||
<div class="col span-6">
|
||||
<LabeledInput
|
||||
v-model="valuesContent.resources.limits.memory"
|
||||
v-model:value="valuesContent.resources.limits.memory"
|
||||
:label="t('monitoring.prometheus.config.limits.memory')"
|
||||
:required="true"
|
||||
:mode="mode"
|
||||
@input="update"
|
||||
@update:value="update"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mt-10">
|
||||
<div class="col span-6">
|
||||
<LabeledInput
|
||||
v-model="valuesContent.resources.requests.cpu"
|
||||
v-model:value="valuesContent.resources.requests.cpu"
|
||||
:label="t('monitoring.prometheus.config.requests.cpu')"
|
||||
:required="true"
|
||||
:mode="mode"
|
||||
@input="update"
|
||||
@update:value="update"
|
||||
/>
|
||||
</div>
|
||||
<div class="col span-6">
|
||||
<LabeledInput
|
||||
v-model="valuesContent.resources.requests.memory"
|
||||
v-model:value="valuesContent.resources.requests.memory"
|
||||
:label="t('monitoring.prometheus.config.requests.memory')"
|
||||
:required="true"
|
||||
:mode="mode"
|
||||
@input="update"
|
||||
@update:value="update"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@ -186,34 +186,34 @@ export default {
|
||||
<h2>{{ t('harvester.addons.vmImport.titles.pvc') }}</h2>
|
||||
<div v-if="value.spec.enabled">
|
||||
<RadioGroup
|
||||
v-model="valuesContent.pvcClaim.enabled"
|
||||
v-model:value="valuesContent.pvcClaim.enabled"
|
||||
class="mb-20"
|
||||
name="model"
|
||||
:mode="mode"
|
||||
:options="[true,false]"
|
||||
:labels="[t('generic.enabled'), t('generic.disabled')]"
|
||||
@input="update"
|
||||
@update:value="update"
|
||||
/>
|
||||
|
||||
<div v-if="valuesContent.pvcClaim.enabled">
|
||||
<div class="row mt-10">
|
||||
<div class="col span-6">
|
||||
<LabeledInput
|
||||
v-model="valuesContent.pvcClaim.size"
|
||||
v-model:value="valuesContent.pvcClaim.size"
|
||||
:label="t('harvester.volume.size')"
|
||||
:required="true"
|
||||
:mode="mode"
|
||||
@input="update"
|
||||
@update:value="update"
|
||||
/>
|
||||
</div>
|
||||
<div class="col span-6">
|
||||
<LabeledSelect
|
||||
v-model="valuesContent.pvcClaim.storageClassName"
|
||||
v-model:value="valuesContent.pvcClaim.storageClassName"
|
||||
:options="storageClassOptions"
|
||||
:label="t('harvester.storage.storageClass.label')"
|
||||
:mode="mode"
|
||||
class="mb-20"
|
||||
@input="update"
|
||||
@update:value="update"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@ -225,7 +225,7 @@ export default {
|
||||
</template>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
::v-deep .radio-group {
|
||||
:deep() .radio-group {
|
||||
display: flex;
|
||||
.radio-container {
|
||||
margin-right: 30px;
|
||||
|
||||
@ -78,7 +78,7 @@ export default {
|
||||
@cancel="done"
|
||||
>
|
||||
<NameNsDescription
|
||||
v-model="value"
|
||||
v-model:value="value"
|
||||
:mode="mode"
|
||||
:namespaced="true"
|
||||
/>
|
||||
@ -87,7 +87,7 @@ export default {
|
||||
<Tab name="basics" :label="t('harvester.host.tabs.basics')" :weight="1">
|
||||
<div class="mb-20">
|
||||
<LabeledSelect
|
||||
v-model="type"
|
||||
v-model:value="type"
|
||||
:label="t('harvester.cloudTemplate.templateType')"
|
||||
:disabled="!isCreate"
|
||||
:options="types"
|
||||
@ -97,7 +97,7 @@ export default {
|
||||
<div class="resource-yaml">
|
||||
<YamlEditor
|
||||
ref="yamlUser"
|
||||
v-model="config"
|
||||
v-model:value="config"
|
||||
class="yaml-editor"
|
||||
:editor-mode="mode === 'view' ? 'VIEW_CODE' : 'EDIT_CODE'"
|
||||
@onChanges="update"
|
||||
@ -111,7 +111,7 @@ export default {
|
||||
<style lang="scss" scoped>
|
||||
$yaml-height: 200px;
|
||||
|
||||
::v-deep .yaml-editor{
|
||||
:deep() .yaml-editor{
|
||||
flex: 1;
|
||||
min-height: $yaml-height;
|
||||
& .code-mirror .CodeMirror {
|
||||
|
||||
@ -151,7 +151,7 @@ export default {
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="disk" @input="update">
|
||||
<div class="disk" @update:value="update">
|
||||
<div class="mt-10" />
|
||||
<Banner
|
||||
v-if="mountedMessage && isProvisioned"
|
||||
@ -172,7 +172,7 @@ export default {
|
||||
<div class="row">
|
||||
<div class="col span-12">
|
||||
<DiskTags
|
||||
v-model="value.tags"
|
||||
v-model:value="value.tags"
|
||||
:label="t('harvester.host.disk.tags.label')"
|
||||
:add-label="t('harvester.host.disk.tags.addLabel')"
|
||||
:mode="mode"
|
||||
@ -228,7 +228,7 @@ export default {
|
||||
<div class="row mt-10">
|
||||
<div class="col span-12">
|
||||
<LabeledInput
|
||||
v-model="value.displayName"
|
||||
v-model:value="value.displayName"
|
||||
:label="t('generic.name')"
|
||||
:disabled="true"
|
||||
/>
|
||||
@ -237,7 +237,7 @@ export default {
|
||||
<div v-if="(value.isNew && !isFormatted) || isCorrupted" class="row mt-10">
|
||||
<div class="col span-6">
|
||||
<RadioGroup
|
||||
v-model="value.forceFormatted"
|
||||
v-model:value="value.forceFormatted"
|
||||
:mode="mode"
|
||||
name="forceFormatted"
|
||||
label-key="harvester.host.disk.forceFormatted.label"
|
||||
|
||||
@ -112,7 +112,7 @@ export default {
|
||||
<template>
|
||||
<div>
|
||||
<LabeledSelect
|
||||
v-model="spec.run"
|
||||
v-model:value="spec.run"
|
||||
:label="t('harvester.host.ksmtuned.run')"
|
||||
:options="ksmtunedRunOption"
|
||||
class="mb-20"
|
||||
@ -122,7 +122,7 @@ export default {
|
||||
|
||||
<template v-if="showKsmt">
|
||||
<UnitInput
|
||||
v-model="spec.thresCoef"
|
||||
v-model:value="spec.thresCoef"
|
||||
v-int-number
|
||||
:label="t('harvester.host.ksmtuned.thresCoef')"
|
||||
suffix="%"
|
||||
@ -132,13 +132,13 @@ export default {
|
||||
class="mb-20"
|
||||
/>
|
||||
|
||||
<Checkbox v-model="enableMergeAcrossNodes" :mode="mode" class="check mb-20" type="checkbox" :label="t('harvester.host.ksmtuned.enableMergeNodes')" />
|
||||
<Checkbox v-model:value="enableMergeAcrossNodes" :mode="mode" class="check mb-20" type="checkbox" :label="t('harvester.host.ksmtuned.enableMergeNodes')" />
|
||||
|
||||
<h3>
|
||||
<t k="harvester.host.ksmtuned.modeLink" :raw="true" />
|
||||
</h3>
|
||||
<RadioGroup
|
||||
v-model="spec.mode"
|
||||
v-model:value="spec.mode"
|
||||
class="mb-20"
|
||||
:name="t('harvester.host.ksmtuned.mode')"
|
||||
:options="ksmtunedMode"
|
||||
|
||||
@ -250,16 +250,14 @@ export default {
|
||||
<div>
|
||||
<div v-if="inventory.warningMessages.length > 0">
|
||||
<Banner
|
||||
v-for="msg in inventory.warningMessages"
|
||||
:key="msg.text"
|
||||
color="error"
|
||||
v-for="(msg, i) in inventory.warningMessages" :key="i" color="error"
|
||||
:label="msg.text"
|
||||
/>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col span-6">
|
||||
<RadioGroup
|
||||
v-model="enableInventory"
|
||||
v-model:value="enableInventory"
|
||||
:options="[
|
||||
{ label: t('generic.enabled'), value: true },
|
||||
{ label: t('generic.disabled'), value: false }
|
||||
@ -273,14 +271,14 @@ export default {
|
||||
<div class="row mt-10">
|
||||
<div class="col span-6">
|
||||
<LabeledInput
|
||||
v-model="value.spec.baseboardSpec.connection.host"
|
||||
v-model:value="value.spec.baseboardSpec.connection.host"
|
||||
:label="t('harvester.seeder.inventory.host.label')"
|
||||
:placeholder="t('harvester.seeder.inventory.host.placeholder')"
|
||||
:mode="mode"
|
||||
required
|
||||
/>
|
||||
<Checkbox
|
||||
v-model="value.spec.baseboardSpec.connection.insecureTLS"
|
||||
v-model:value="value.spec.baseboardSpec.connection.insecureTLS"
|
||||
class="mt-5"
|
||||
:mode="mode"
|
||||
:label="t('harvester.seeder.inventory.insecureTLS.label')"
|
||||
@ -299,7 +297,7 @@ export default {
|
||||
<div class="row mt-20">
|
||||
<div class="col span-6">
|
||||
<LabeledSelect
|
||||
v-model="selectedSecret"
|
||||
v-model:value="selectedSecret"
|
||||
:label="t('harvester.seeder.inventory.secret.label')"
|
||||
:mode="mode"
|
||||
:options="secretOption"
|
||||
@ -310,7 +308,7 @@ export default {
|
||||
<div class="row mt-20">
|
||||
<div class="col span-6">
|
||||
<RadioGroup
|
||||
v-model="value.spec.events.enabled"
|
||||
v-model:value="value.spec.events.enabled"
|
||||
name="enabled"
|
||||
:options="[true, false]"
|
||||
:label="t('harvester.seeder.inventory.event.label')"
|
||||
@ -323,7 +321,7 @@ export default {
|
||||
class="col span-6"
|
||||
>
|
||||
<LabeledInput
|
||||
v-model="value.spec.events.pollingInterval"
|
||||
v-model:value="value.spec.events.pollingInterval"
|
||||
:label="t('harvester.seeder.inventory.pollingInterval.label')"
|
||||
:mode="mode"
|
||||
/>
|
||||
@ -344,20 +342,20 @@ export default {
|
||||
|
||||
<template #content>
|
||||
<NameNsDescription
|
||||
v-model="secret"
|
||||
v-model:value="secret"
|
||||
:namespaced="true"
|
||||
mode="create"
|
||||
/>
|
||||
|
||||
<LabeledInput
|
||||
v-model="username"
|
||||
v-model:value="username"
|
||||
:label="t('harvester.virtualMachine.input.username')"
|
||||
class="mb-20"
|
||||
required
|
||||
/>
|
||||
|
||||
<LabeledInput
|
||||
v-model="password"
|
||||
v-model:value="password"
|
||||
type="password"
|
||||
:label="t('harvester.virtualMachine.input.password')"
|
||||
class="mb-20"
|
||||
|
||||
@ -522,14 +522,14 @@ export default {
|
||||
<Tabbed ref="tabbed" class="mt-15" :side-tabs="true">
|
||||
<Tab name="basics" :weight="100" :label="t('harvester.host.tabs.basics')">
|
||||
<LabeledInput
|
||||
v-model="customName"
|
||||
v-model:value="customName"
|
||||
:label="t('harvester.host.detail.customName')"
|
||||
class="mb-20"
|
||||
:mode="mode"
|
||||
/>
|
||||
|
||||
<LabeledInput
|
||||
v-model="consoleUrl"
|
||||
v-model:value="consoleUrl"
|
||||
:label="t('harvester.host.detail.consoleUrl')"
|
||||
class="mb-20"
|
||||
:mode="mode"
|
||||
@ -547,7 +547,7 @@ export default {
|
||||
>
|
||||
<div class="col span-12">
|
||||
<DiskTags
|
||||
v-model="longhornNode.spec.tags"
|
||||
v-model:value="longhornNode.spec.tags"
|
||||
:label="t('harvester.host.tags.label')"
|
||||
:add-label="t('harvester.host.tags.addLabel')"
|
||||
:mode="mode"
|
||||
@ -555,13 +555,13 @@ export default {
|
||||
</div>
|
||||
</div>
|
||||
<ArrayListGrouped
|
||||
v-model="newDisks"
|
||||
v-model:value="newDisks"
|
||||
:mode="mode"
|
||||
:initial-empty-row="false"
|
||||
>
|
||||
<template #default="props">
|
||||
<HarvesterDisk
|
||||
v-model="props.row.value"
|
||||
v-model:value="props.row.value"
|
||||
class="mb-20"
|
||||
:mode="mode"
|
||||
:disks="disks"
|
||||
@ -652,7 +652,7 @@ export default {
|
||||
:title="t('labels.labels.title')"
|
||||
:read-allowed="false"
|
||||
:value-can-be-empty="true"
|
||||
@input="updateHostLabels"
|
||||
@update:value="updateHostLabels"
|
||||
/>
|
||||
</Tab>
|
||||
</Tabbed>
|
||||
|
||||
@ -85,14 +85,14 @@ export default {
|
||||
<NameNsDescription
|
||||
ref="nd"
|
||||
:key="randomString"
|
||||
v-model="value"
|
||||
v-model:value="value"
|
||||
:mode="mode"
|
||||
/>
|
||||
|
||||
<Tabbed v-bind="$attrs" class="mt-15" :side-tabs="true">
|
||||
<Tab name="basic" :label="t('harvester.sshKey.tabs.basics')" :weight="1" class="bordered-table">
|
||||
<LabeledInput
|
||||
v-model="publicKey"
|
||||
v-model:value="publicKey"
|
||||
type="multiline"
|
||||
:mode="mode"
|
||||
:min-height="160"
|
||||
|
||||
@ -186,7 +186,7 @@ export default {
|
||||
<div class="row">
|
||||
<div class="col span-6">
|
||||
<LabeledSelect
|
||||
v-model="loggingType"
|
||||
v-model:value="loggingType"
|
||||
class="mb-20"
|
||||
:options="outputTypeOptions"
|
||||
:disabled="!isCreate"
|
||||
@ -197,7 +197,7 @@ export default {
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col span-6">
|
||||
<LabeledSelect v-model="selectedProvider" label="Output" :options="providers" :mode="mode" />
|
||||
<LabeledSelect v-model:value="selectedProvider" label="Output" :options="providers" :mode="mode" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="spacer"></div>
|
||||
@ -206,7 +206,7 @@ export default {
|
||||
<Tab name="buffer" :label="t('logging.output.buffer.label')" :weight="1">
|
||||
<YamlEditor
|
||||
ref="yaml"
|
||||
v-model="bufferYaml"
|
||||
v-model:value="bufferYaml"
|
||||
:scrolling="false"
|
||||
:initial-yaml-values="initialBufferYaml"
|
||||
:editor-mode="isView ? EDITOR_MODES.VIEW_CODE : EDITOR_MODES.EDIT_CODE"
|
||||
|
||||
@ -190,7 +190,7 @@ export default {
|
||||
@cancel="done"
|
||||
>
|
||||
<NameNsDescription
|
||||
v-model="value"
|
||||
v-model:value="value"
|
||||
:mode="mode"
|
||||
:namespaced="isNamespaced"
|
||||
/>
|
||||
|
||||
@ -177,13 +177,13 @@ export default {
|
||||
>
|
||||
<NameNsDescription
|
||||
ref="nd"
|
||||
v-model="value"
|
||||
v-model:value="value"
|
||||
:mode="mode"
|
||||
/>
|
||||
<Tabbed v-bind="$attrs" class="mt-15" :side-tabs="true">
|
||||
<Tab name="basics" :label="t('harvester.network.tabs.basics')" :weight="99" class="bordered-table">
|
||||
<LabeledSelect
|
||||
v-model="type"
|
||||
v-model:value="type"
|
||||
class="mb-20"
|
||||
:options="networkType"
|
||||
:mode="mode"
|
||||
@ -201,7 +201,7 @@ export default {
|
||||
placeholder="e.g. 1-4094"
|
||||
:label="t('tableHeaders.networkVlan')"
|
||||
:mode="mode"
|
||||
@input="input"
|
||||
@update:value="input"
|
||||
/>
|
||||
|
||||
<div class="row">
|
||||
@ -209,7 +209,7 @@ export default {
|
||||
class="col span-12"
|
||||
>
|
||||
<LabeledSelect
|
||||
v-model="config.bridge"
|
||||
v-model:value="config.bridge"
|
||||
class="mb-20"
|
||||
:label="t('harvester.network.clusterNetwork.label')"
|
||||
required
|
||||
@ -230,7 +230,7 @@ export default {
|
||||
<div class="row mt-10">
|
||||
<div class="col span-6">
|
||||
<RadioGroup
|
||||
v-model="layer3Network.mode"
|
||||
v-model:value="layer3Network.mode"
|
||||
name="layer3NetworkMode"
|
||||
:label="t('harvester.network.layer3Network.mode.label')"
|
||||
:mode="mode"
|
||||
@ -244,7 +244,7 @@ export default {
|
||||
>
|
||||
<div class="col span-6">
|
||||
<LabeledInput
|
||||
v-model="layer3Network.serverIPAddr"
|
||||
v-model:value="layer3Network.serverIPAddr"
|
||||
class="mb-20"
|
||||
:label="t('harvester.network.layer3Network.serverIPAddr.label')"
|
||||
:mode="mode"
|
||||
@ -257,7 +257,7 @@ export default {
|
||||
>
|
||||
<div class="col span-6">
|
||||
<LabeledInput
|
||||
v-model="layer3Network.cidr"
|
||||
v-model:value="layer3Network.cidr"
|
||||
class="mb-20"
|
||||
:label="t('harvester.network.layer3Network.cidr.label')"
|
||||
:placeholder="t('harvester.network.layer3Network.cidr.placeholder')"
|
||||
@ -267,7 +267,7 @@ export default {
|
||||
</div>
|
||||
<div class="col span-6">
|
||||
<LabeledInput
|
||||
v-model="layer3Network.gateway"
|
||||
v-model:value="layer3Network.gateway"
|
||||
class="mb-20"
|
||||
:label="t('harvester.network.layer3Network.gateway.label')"
|
||||
:placeholder="t('harvester.network.layer3Network.gateway.placeholder')"
|
||||
|
||||
@ -233,7 +233,7 @@ export default {
|
||||
@error="e=>errors = e"
|
||||
>
|
||||
<NameNsDescription
|
||||
v-model="value"
|
||||
v-model:value="value"
|
||||
:mode="mode"
|
||||
:namespaced="!isCloud"
|
||||
/>
|
||||
@ -271,7 +271,7 @@ export default {
|
||||
:weight="-1"
|
||||
>
|
||||
<Labels
|
||||
v-model="value"
|
||||
v-model:value="value"
|
||||
:mode="mode"
|
||||
/>
|
||||
</Tab>
|
||||
|
||||
@ -201,14 +201,14 @@ export default {
|
||||
:is="customComponent"
|
||||
v-if="hasCustomComponent"
|
||||
ref="settingComp"
|
||||
v-model="value"
|
||||
v-model:value="value"
|
||||
:register-before-hook="registerBeforeHook"
|
||||
:mode="mode"
|
||||
/>
|
||||
</div>
|
||||
<div v-else-if="setting.kind === 'enum'">
|
||||
<LabeledSelect
|
||||
v-model="value.value"
|
||||
v-model:value="value.value"
|
||||
:label="t('advancedSettings.edit.value')"
|
||||
:localized-label="true"
|
||||
:mode="mode"
|
||||
@ -217,7 +217,7 @@ export default {
|
||||
</div>
|
||||
<div v-else-if="setting.kind === 'boolean'">
|
||||
<RadioGroup
|
||||
v-model="value.value"
|
||||
v-model:value="value.value"
|
||||
name="settings_value"
|
||||
:labels="[
|
||||
t('advancedSettings.edit.trueOption'),
|
||||
@ -227,11 +227,11 @@ export default {
|
||||
/>
|
||||
</div>
|
||||
<div v-else-if="setting.kind === 'multiline' || setting.kind === 'json'">
|
||||
<TextAreaAutoGrow v-model="value.value" :min-height="254" />
|
||||
<TextAreaAutoGrow v-model:value="value.value" :min-height="254" />
|
||||
</div>
|
||||
<div v-else>
|
||||
<LabeledInput
|
||||
v-model="value.value"
|
||||
v-model:value="value.value"
|
||||
:label="t('advancedSettings.edit.value')"
|
||||
/>
|
||||
</div>
|
||||
@ -249,7 +249,7 @@ export default {
|
||||
}
|
||||
}
|
||||
|
||||
::v-deep .edit-help code {
|
||||
:deep() .edit-help code {
|
||||
padding: 1px 5px;
|
||||
}
|
||||
</style>
|
||||
|
||||
@ -222,7 +222,7 @@ export default {
|
||||
:searchable="true"
|
||||
:taggable="true"
|
||||
class="mb-20"
|
||||
@input="updateProvisioner($event)"
|
||||
@update:value="updateProvisioner($event)"
|
||||
/>
|
||||
<Tabbed :side-tabs="true">
|
||||
<Tab name="parameters" :label="t('storageClass.parameters.label')" :weight="2">
|
||||
@ -238,7 +238,7 @@ export default {
|
||||
<div class="row mt-20">
|
||||
<div class="col span-6">
|
||||
<RadioGroup
|
||||
v-model="value.reclaimPolicy"
|
||||
v-model:value="value.reclaimPolicy"
|
||||
name="reclaimPolicy"
|
||||
:label="t('storageClass.customize.reclaimPolicy.label')"
|
||||
:mode="modeOverride"
|
||||
@ -247,7 +247,7 @@ export default {
|
||||
</div>
|
||||
<div class="col span-6">
|
||||
<RadioGroup
|
||||
v-model="value.allowVolumeExpansion"
|
||||
v-model:value="value.allowVolumeExpansion"
|
||||
name="allowVolumeExpansion"
|
||||
:label="t('storageClass.customize.allowVolumeExpansion.label')"
|
||||
:mode="modeOverride"
|
||||
@ -258,7 +258,7 @@ export default {
|
||||
<div class="row mt-20">
|
||||
<div class="col span-6">
|
||||
<RadioGroup
|
||||
v-model="value.volumeBindingMode"
|
||||
v-model:value="value.volumeBindingMode"
|
||||
name="volumeBindingMode"
|
||||
:label="t('storageClass.customize.volumeBindingMode.label')"
|
||||
:mode="modeOverride"
|
||||
@ -274,7 +274,7 @@ export default {
|
||||
:tooltip="t('harvester.storage.allowedTopologies.tooltip')"
|
||||
>
|
||||
<ArrayList
|
||||
v-model="allowedTopologies"
|
||||
v-model:value="allowedTopologies"
|
||||
:default-add-value="defaultAddValue"
|
||||
:initial-empty-row="true"
|
||||
:show-header="true"
|
||||
@ -297,14 +297,14 @@ export default {
|
||||
<div class="row custom-headers">
|
||||
<div class="col span-4 key">
|
||||
<LabeledInput
|
||||
v-model="scope.row.value.key"
|
||||
v-model:value="scope.row.value.key"
|
||||
:required="true"
|
||||
:mode="modeOverride"
|
||||
/>
|
||||
</div>
|
||||
<div class="col span-8 value">
|
||||
<DiskTags
|
||||
v-model="scope.row.value.values"
|
||||
v-model:value="scope.row.value.values"
|
||||
:add-label="t('generic.add')"
|
||||
:mode="modeOverride"
|
||||
/>
|
||||
|
||||
@ -17,7 +17,7 @@ export default {
|
||||
</script>
|
||||
<template>
|
||||
<KeyValue
|
||||
v-model="value.parameters"
|
||||
v-model:value="value.parameters"
|
||||
:add-label="t('storageClass.custom.addLabel')"
|
||||
:read-allowed="false"
|
||||
:mode="mode"
|
||||
|
||||
@ -168,7 +168,7 @@ export default {
|
||||
<div class="row">
|
||||
<div class="col span-6">
|
||||
<LabeledInput
|
||||
v-model="numberOfReplicas"
|
||||
v-model:value="numberOfReplicas"
|
||||
:label="t('harvester.storage.parameters.numberOfReplicas.label')"
|
||||
:required="true"
|
||||
:mode="mode"
|
||||
@ -179,7 +179,7 @@ export default {
|
||||
</div>
|
||||
<div class="col span-6">
|
||||
<LabeledInput
|
||||
v-model="value.parameters.staleReplicaTimeout"
|
||||
v-model:value="value.parameters.staleReplicaTimeout"
|
||||
:label="t('harvester.storage.parameters.staleReplicaTimeout.label')"
|
||||
:required="true"
|
||||
:mode="mode"
|
||||
@ -190,7 +190,7 @@ export default {
|
||||
<div class="row mt-10">
|
||||
<div class="col span-6">
|
||||
<LabeledSelect
|
||||
v-model="nodeSelector"
|
||||
v-model:value="nodeSelector"
|
||||
:label="t('harvester.storage.parameters.nodeSelector.label')"
|
||||
:options="nodeTags"
|
||||
:taggable="true"
|
||||
@ -206,7 +206,7 @@ export default {
|
||||
</div>
|
||||
<div class="col span-6">
|
||||
<LabeledSelect
|
||||
v-model="diskSelector"
|
||||
v-model:value="diskSelector"
|
||||
:label="t('harvester.storage.parameters.diskSelector.label')"
|
||||
:options="diskTags"
|
||||
:taggable="true"
|
||||
@ -224,7 +224,7 @@ export default {
|
||||
<div class="row mt-10">
|
||||
<div class="col span-6">
|
||||
<RadioGroup
|
||||
v-model="value.parameters.migratable"
|
||||
v-model:value="value.parameters.migratable"
|
||||
name="layer3NetworkMode"
|
||||
:label="t('harvester.storage.parameters.migratable.label')"
|
||||
:mode="mode"
|
||||
@ -233,7 +233,7 @@ export default {
|
||||
</div>
|
||||
</div>
|
||||
<KeyValue
|
||||
v-model="parameters"
|
||||
v-model:value="parameters"
|
||||
:add-label="t('storageClass.longhorn.addLabel')"
|
||||
:read-allowed="false"
|
||||
:mode="mode"
|
||||
|
||||
@ -209,7 +209,7 @@ export default {
|
||||
<div class="content">
|
||||
<div class="mb-20">
|
||||
<RadioGroup
|
||||
v-model="restoreNewVm"
|
||||
v-model:value="restoreNewVm"
|
||||
name="model"
|
||||
:options="[true,false]"
|
||||
:labels="[t('harvester.backup.restore.createNew'), t('harvester.backup.restore.replaceExisting')]"
|
||||
@ -221,7 +221,7 @@ export default {
|
||||
<div class="row">
|
||||
<div class="col span-6">
|
||||
<LabeledSelect
|
||||
v-model="namespace"
|
||||
v-model:value="namespace"
|
||||
:disabled="!restoreNewVm"
|
||||
:label="t('nameNsDescription.namespace.label')"
|
||||
:options="namespaces"
|
||||
@ -230,7 +230,7 @@ export default {
|
||||
|
||||
<div class="col span-6">
|
||||
<LabeledInput
|
||||
v-model="name"
|
||||
v-model:value="name"
|
||||
:disabled="!restoreNewVm"
|
||||
:label="t('harvester.backup.restore.virtualMachineName')"
|
||||
:placeholder="t('nameNsDescription.name.placeholder')"
|
||||
@ -240,7 +240,7 @@ export default {
|
||||
</div>
|
||||
|
||||
<LabeledSelect
|
||||
v-model="backupName"
|
||||
v-model:value="backupName"
|
||||
class="mb-20"
|
||||
:label="t('harvester.backup.restore.backup')"
|
||||
:options="backupOption"
|
||||
@ -248,14 +248,14 @@ export default {
|
||||
|
||||
<Checkbox
|
||||
v-if="restoreNewVm"
|
||||
v-model="restoreResource.spec.keepMacAddress"
|
||||
v-model:value="restoreResource.spec.keepMacAddress"
|
||||
type="checkbox"
|
||||
:label="t('harvester.backup.restore.keepMacAddress')"
|
||||
/>
|
||||
|
||||
<LabeledSelect
|
||||
v-if="!restoreNewVm"
|
||||
v-model="deletionPolicy"
|
||||
v-model:value="deletionPolicy"
|
||||
:label="t('harvester.backup.restore.deletePreviousVolumes')"
|
||||
:options="deletionPolicyOption"
|
||||
/>
|
||||
@ -271,7 +271,7 @@ export default {
|
||||
flex-grow: 1;
|
||||
flex-direction: column;
|
||||
|
||||
::v-deep .radio-group {
|
||||
:deep() .radio-group {
|
||||
display: flex;
|
||||
.radio-container {
|
||||
margin-right: 30px;
|
||||
@ -291,7 +291,7 @@ export default {
|
||||
margin-bottom: -$space-m;
|
||||
padding: $space-s $space-m;
|
||||
|
||||
::v-deep .spacer-small {
|
||||
:deep() .spacer-small {
|
||||
padding: 0px;
|
||||
}
|
||||
}
|
||||
|
||||
@ -280,7 +280,7 @@ export default {
|
||||
>
|
||||
<NameNsDescription
|
||||
ref="nd"
|
||||
v-model="value"
|
||||
v-model:value="value"
|
||||
:mode="mode"
|
||||
:label="t('generic.name')"
|
||||
name-key="spec.displayName"
|
||||
@ -295,7 +295,7 @@ export default {
|
||||
>
|
||||
<RadioGroup
|
||||
v-if="isCreate"
|
||||
v-model="value.spec.sourceType"
|
||||
v-model:value="value.spec.sourceType"
|
||||
name="model"
|
||||
:options="[
|
||||
'download',
|
||||
@ -311,7 +311,7 @@ export default {
|
||||
<div class="col span-12">
|
||||
<LabeledInput
|
||||
v-if="!isCreate"
|
||||
v-model="value.spec.sourceType"
|
||||
v-model:value="value.spec.sourceType"
|
||||
:mode="mode"
|
||||
class="mb-20"
|
||||
:disabled="isEdit"
|
||||
@ -320,7 +320,7 @@ export default {
|
||||
|
||||
<LabeledInput
|
||||
v-if="value.spec.sourceType === 'download'"
|
||||
v-model="value.spec.url"
|
||||
v-model:value="value.spec.url"
|
||||
:mode="mode"
|
||||
:disabled="isEdit"
|
||||
class="mb-20 labeled-input--tooltip"
|
||||
@ -332,7 +332,7 @@ export default {
|
||||
<div v-else>
|
||||
<LabeledInput
|
||||
v-if="isView"
|
||||
v-model="imageName"
|
||||
v-model:value="imageName"
|
||||
:mode="mode"
|
||||
class="mt-20"
|
||||
label-key="harvester.image.fileName"
|
||||
@ -368,7 +368,7 @@ export default {
|
||||
|
||||
<LabeledInput
|
||||
v-if="value.spec.sourceType === 'download'"
|
||||
v-model="value.spec.checksum"
|
||||
v-model:value="value.spec.checksum"
|
||||
:mode="mode"
|
||||
:disabled="isEdit"
|
||||
label-key="harvester.image.checksum"
|
||||
@ -387,7 +387,7 @@ export default {
|
||||
<div class="row">
|
||||
<div class="col span-6">
|
||||
<LabeledSelect
|
||||
v-model="storageClassName"
|
||||
v-model:value="storageClassName"
|
||||
:options="storageClassOptions"
|
||||
:label="t('harvester.storage.storageClass.label')"
|
||||
:mode="mode"
|
||||
@ -408,28 +408,28 @@ export default {
|
||||
:pad-left="false"
|
||||
:read-allowed="false"
|
||||
@focusKey="focusKey"
|
||||
@input="value.setLabels($event)"
|
||||
@update:value="value.setLabels($event)"
|
||||
>
|
||||
<template #value="{row, keyName, valueName, queueUpdate}">
|
||||
<Select
|
||||
v-if="internalAnnotations(row)"
|
||||
v-model="row[valueName]"
|
||||
v-model:value="row[valueName]"
|
||||
:mode="mode"
|
||||
:searchable="true"
|
||||
:clearable="false"
|
||||
:options="calculateOptions(row[keyName])"
|
||||
@input="queueUpdate"
|
||||
@update:value="queueUpdate"
|
||||
/>
|
||||
<input
|
||||
v-else
|
||||
v-model="row[valueName]"
|
||||
v-model:value="row[valueName]"
|
||||
:disabled="isView"
|
||||
:type="'text'"
|
||||
:placeholder="t('keyValue.valuePlaceholder')"
|
||||
autocorrect="off"
|
||||
autocapitalize="off"
|
||||
spellcheck="false"
|
||||
@input="queueUpdate"
|
||||
@update:value="queueUpdate"
|
||||
/>
|
||||
</template>
|
||||
</KeyValue>
|
||||
|
||||
@ -220,7 +220,7 @@ export default {
|
||||
@finish="saveVMT"
|
||||
>
|
||||
<NameNsDescription
|
||||
v-model="templateValue"
|
||||
v-model:value="templateValue"
|
||||
:mode="realTemplateMode"
|
||||
name-label="harvester.vmTemplate.nameNsDescription.name"
|
||||
:namespaced="true"
|
||||
@ -228,7 +228,7 @@ export default {
|
||||
|
||||
<Checkbox
|
||||
v-if="templateId"
|
||||
v-model="isDefaultVersion"
|
||||
v-model:value="isDefaultVersion"
|
||||
class="mb-20"
|
||||
:label="t('tableHeaders.defaultVersion')"
|
||||
type="checkbox"
|
||||
@ -241,7 +241,7 @@ export default {
|
||||
|
||||
<div class="mb-20">
|
||||
<SSHKey
|
||||
v-model="sshKey"
|
||||
v-model:value="sshKey"
|
||||
:create-namespace="true"
|
||||
:namespace="templateValue.metadata.namespace"
|
||||
:disable-create="isView"
|
||||
@ -252,11 +252,11 @@ export default {
|
||||
</Tab>
|
||||
|
||||
<Tab name="Volume" :label="t('harvester.tab.volume')" :weight="-1">
|
||||
<Volume v-model="diskRows" :mode="mode" :namespace="value.metadata.namespace" :existing-volume-disabled="true" />
|
||||
<Volume v-model:value="diskRows" :mode="mode" :namespace="value.metadata.namespace" :existing-volume-disabled="true" />
|
||||
</Tab>
|
||||
|
||||
<Tab name="Network" :label="t('harvester.tab.network')" :weight="-2">
|
||||
<Network v-model="networkRows" :mode="mode" />
|
||||
<Network v-model:value="networkRows" :mode="mode" />
|
||||
</Tab>
|
||||
|
||||
<Tab
|
||||
@ -266,7 +266,6 @@ export default {
|
||||
>
|
||||
<template #default="{active}">
|
||||
<NodeScheduling
|
||||
:key="active"
|
||||
:mode="mode"
|
||||
:value="spec.template.spec"
|
||||
:nodes="nodesIdOptions"
|
||||
@ -277,7 +276,6 @@ export default {
|
||||
<Tab :label="t('harvester.tab.vmScheduling')" name="vmScheduling" :weight="-90">
|
||||
<template #default="{active}">
|
||||
<PodAffinity
|
||||
:key="active"
|
||||
:mode="mode"
|
||||
:value="spec.template.spec"
|
||||
:nodes="nodes"
|
||||
@ -292,7 +290,7 @@ export default {
|
||||
<div class="row mb-20">
|
||||
<div class="col span-6">
|
||||
<LabeledSelect
|
||||
v-model="runStrategy"
|
||||
v-model:value="runStrategy"
|
||||
label-key="harvester.virtualMachine.runStrategy"
|
||||
:options="RunStrategys"
|
||||
:mode="mode"
|
||||
@ -301,7 +299,7 @@ export default {
|
||||
|
||||
<div class="col span-6">
|
||||
<LabeledSelect
|
||||
v-model="osType"
|
||||
v-model:value="osType"
|
||||
label-key="harvester.virtualMachine.osType"
|
||||
:mode="mode"
|
||||
:options="OS"
|
||||
@ -325,7 +323,7 @@ export default {
|
||||
</div>
|
||||
<div class="col span-6">
|
||||
<UnitInput
|
||||
v-model="terminationGracePeriodSeconds"
|
||||
v-model:value="terminationGracePeriodSeconds"
|
||||
:suffix="terminationGracePeriodSeconds == 1 ? 'Second' : 'Seconds'"
|
||||
:label="t('harvester.virtualMachine.terminationGracePeriodSeconds.label')"
|
||||
:mode="mode"
|
||||
@ -347,7 +345,7 @@ export default {
|
||||
|
||||
<div class="spacer"></div>
|
||||
<Checkbox
|
||||
v-model="installUSBTablet"
|
||||
v-model:value="installUSBTablet"
|
||||
class="check"
|
||||
type="checkbox"
|
||||
:label="t('harvester.virtualMachine.enableUsb')"
|
||||
@ -355,7 +353,7 @@ export default {
|
||||
/>
|
||||
|
||||
<Checkbox
|
||||
v-model="installAgent"
|
||||
v-model:value="installAgent"
|
||||
class="check"
|
||||
type="checkbox"
|
||||
label-key="harvester.virtualMachine.installAgent"
|
||||
@ -363,7 +361,7 @@ export default {
|
||||
/>
|
||||
|
||||
<Checkbox
|
||||
v-model="tpmEnabled"
|
||||
v-model:value="tpmEnabled"
|
||||
class="check"
|
||||
type="checkbox"
|
||||
label-key="harvester.virtualMachine.advancedOptions.tpm"
|
||||
@ -371,7 +369,7 @@ export default {
|
||||
/>
|
||||
|
||||
<Checkbox
|
||||
v-model="efiEnabled"
|
||||
v-model:value="efiEnabled"
|
||||
class="check"
|
||||
type="checkbox"
|
||||
:label="t('harvester.virtualMachine.efiEnabled')"
|
||||
@ -380,7 +378,7 @@ export default {
|
||||
|
||||
<Checkbox
|
||||
v-if="efiEnabled"
|
||||
v-model="secureBoot"
|
||||
v-model:value="secureBoot"
|
||||
class="check"
|
||||
type="checkbox"
|
||||
:label="t('harvester.virtualMachine.secureBoot')"
|
||||
@ -411,7 +409,7 @@ export default {
|
||||
:mode="mode"
|
||||
:read-allowed="false"
|
||||
:value-can-be-empty="true"
|
||||
@input="value.setInstanceLabels($event)"
|
||||
@update:value="value.setInstanceLabels($event)"
|
||||
/>
|
||||
</template>
|
||||
</Labels>
|
||||
|
||||
@ -206,7 +206,7 @@ export default {
|
||||
<div class="content">
|
||||
<div class="mb-20">
|
||||
<RadioGroup
|
||||
v-model="restoreNewVm"
|
||||
v-model:value="restoreNewVm"
|
||||
name="model"
|
||||
:options="[true,false]"
|
||||
:labels="[t('harvester.backup.restore.createNew'), t('harvester.backup.restore.replaceExisting')]"
|
||||
@ -218,7 +218,7 @@ export default {
|
||||
<div class="row">
|
||||
<div class="col span-6">
|
||||
<LabeledSelect
|
||||
v-model="namespace"
|
||||
v-model:value="namespace"
|
||||
:disabled="true"
|
||||
:label="t('nameNsDescription.namespace.label')"
|
||||
:options="namespaces"
|
||||
@ -227,7 +227,7 @@ export default {
|
||||
|
||||
<div class="col span-6">
|
||||
<LabeledInput
|
||||
v-model="name"
|
||||
v-model:value="name"
|
||||
:disabled="!restoreNewVm"
|
||||
:label="t('harvester.backup.restore.virtualMachineName')"
|
||||
:placeholder="t('nameNsDescription.name.placeholder')"
|
||||
@ -236,9 +236,9 @@ export default {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<LabeledSelect v-model="snapshotName" class="mb-20" :label="t('harvester.vmSnapshot.snapshot')" :options="snapshotOption" />
|
||||
<LabeledSelect v-model:value="snapshotName" class="mb-20" :label="t('harvester.vmSnapshot.snapshot')" :options="snapshotOption" />
|
||||
|
||||
<LabeledSelect v-if="!restoreNewVm" v-model="deletionPolicy" :label="t('harvester.backup.restore.deletePreviousVolumes')" :options="deletionPolicyOption" />
|
||||
<LabeledSelect v-if="!restoreNewVm" v-model:value="deletionPolicy" :label="t('harvester.backup.restore.deletePreviousVolumes')" :options="deletionPolicyOption" />
|
||||
</div>
|
||||
|
||||
<Footer mode="create" class="footer" :errors="errors" @save="saveRestore" @done="done" />
|
||||
@ -251,7 +251,7 @@ export default {
|
||||
flex-grow: 1;
|
||||
flex-direction: column;
|
||||
|
||||
::v-deep .radio-group {
|
||||
:deep() .radio-group {
|
||||
display: flex;
|
||||
.radio-container {
|
||||
margin-right: 30px;
|
||||
@ -271,7 +271,7 @@ export default {
|
||||
margin-bottom: -$space-m;
|
||||
padding: $space-s $space-m;
|
||||
|
||||
::v-deep .spacer-small {
|
||||
:deep() .spacer-small {
|
||||
padding: 0px;
|
||||
}
|
||||
}
|
||||
|
||||
@ -272,7 +272,7 @@ export default {
|
||||
<NameNsDescription :value="value" :namespaced="true" :mode="mode" />
|
||||
|
||||
<ResourceTabs
|
||||
v-model="value"
|
||||
v-model:value="value"
|
||||
class="mt-15"
|
||||
:need-conditions="false"
|
||||
:need-related="false"
|
||||
@ -281,41 +281,41 @@ export default {
|
||||
>
|
||||
<Tab name="basic" :label="t('harvester.volume.tabs.basics')" :weight="3" class="bordered-table">
|
||||
<LabeledSelect
|
||||
v-model="source"
|
||||
v-model:value="source"
|
||||
:label="t('harvester.volume.source')"
|
||||
:options="sourceOption"
|
||||
:disabled="!isCreate"
|
||||
required
|
||||
:mode="mode"
|
||||
class="mb-20"
|
||||
@input="update"
|
||||
@update:value="update"
|
||||
/>
|
||||
|
||||
<LabeledSelect
|
||||
v-if="isVMImage"
|
||||
v-model="imageId"
|
||||
v-model:value="imageId"
|
||||
:label="t('harvester.volume.image')"
|
||||
:options="imageOption"
|
||||
:disabled="!isCreate"
|
||||
required
|
||||
:mode="mode"
|
||||
class="mb-20"
|
||||
@input="update"
|
||||
@update:value="update"
|
||||
/>
|
||||
|
||||
<LabeledSelect
|
||||
v-if="source === 'blank'"
|
||||
v-model="value.spec.storageClassName"
|
||||
v-model:value="value.spec.storageClassName"
|
||||
:options="storageClassOptions"
|
||||
:label="t('harvester.storage.storageClass.label')"
|
||||
:mode="mode"
|
||||
class="mb-20"
|
||||
:disabled="!isCreate"
|
||||
@input="update"
|
||||
@update:value="update"
|
||||
/>
|
||||
|
||||
<UnitInput
|
||||
v-model="storage"
|
||||
v-model:value="storage"
|
||||
v-int-number
|
||||
:label="t('harvester.volume.size')"
|
||||
:input-exponent="3"
|
||||
@ -324,15 +324,15 @@ export default {
|
||||
:mode="mode"
|
||||
required
|
||||
class="mb-20"
|
||||
@input="update"
|
||||
@update:value="update"
|
||||
/>
|
||||
</Tab>
|
||||
<Tab v-if="!isCreate" name="details" :label="t('harvester.volume.tabs.details')" :weight="2.5" class="bordered-table">
|
||||
<LabeledInput v-model="frontendDisplay" class="mb-20" :mode="mode" :disabled="true" :label="t('harvester.volume.frontend')" />
|
||||
<LabeledInput v-model="attachedNode" class="mb-20" :mode="mode" :disabled="true" :label="t('harvester.volume.attachedNode')" />
|
||||
<LabeledInput v-model="endpoint" class="mb-20" :mode="mode" :disabled="true" :label="t('harvester.volume.endpoint')" />
|
||||
<LabeledInput v-model:value="frontendDisplay" class="mb-20" :mode="mode" :disabled="true" :label="t('harvester.volume.frontend')" />
|
||||
<LabeledInput v-model:value="attachedNode" class="mb-20" :mode="mode" :disabled="true" :label="t('harvester.volume.attachedNode')" />
|
||||
<LabeledInput v-model:value="endpoint" class="mb-20" :mode="mode" :disabled="true" :label="t('harvester.volume.endpoint')" />
|
||||
<LabeledSelect
|
||||
v-model="diskTags"
|
||||
v-model:value="diskTags"
|
||||
:multiple="true"
|
||||
:label="t('harvester.volume.diskTags')"
|
||||
:options="[]"
|
||||
@ -341,7 +341,7 @@ export default {
|
||||
class="mb-20"
|
||||
/>
|
||||
<LabeledSelect
|
||||
v-model="nodeTags"
|
||||
v-model:value="nodeTags"
|
||||
:multiple="true"
|
||||
:label="t('harvester.volume.nodeTags')"
|
||||
:options="[]"
|
||||
@ -349,9 +349,9 @@ export default {
|
||||
:mode="mode"
|
||||
class="mb-20"
|
||||
/>
|
||||
<LabeledInput v-model="lastBackup" class="mb-20" :mode="mode" :disabled="true" :label="t('harvester.volume.lastBackup')" />
|
||||
<LabeledInput v-model="lastBackupAt" class="mb-20" :mode="mode" :disabled="true" :label="t('harvester.volume.lastBackupAt')" />
|
||||
<LabeledInput v-model="replicasNumber" class="mb-20" :mode="mode" :disabled="true" :label="t('harvester.volume.replicasNumber')" />
|
||||
<LabeledInput v-model:value="lastBackup" class="mb-20" :mode="mode" :disabled="true" :label="t('harvester.volume.lastBackup')" />
|
||||
<LabeledInput v-model:value="lastBackupAt" class="mb-20" :mode="mode" :disabled="true" :label="t('harvester.volume.lastBackupAt')" />
|
||||
<LabeledInput v-model:value="replicasNumber" class="mb-20" :mode="mode" :disabled="true" :label="t('harvester.volume.replicasNumber')" />
|
||||
</Tab>
|
||||
<Tab v-if="!isCreate" name="instances" :label="t('harvester.volume.tabs.snapshots')" :weight="2" class="bordered-table">
|
||||
<SortableTable
|
||||
@ -360,12 +360,12 @@ export default {
|
||||
default-sort-by="age"
|
||||
:rows="value.relatedVolumeSnapshotCounts"
|
||||
key-field="_key"
|
||||
v-on="$listeners"
|
||||
|
||||
/>
|
||||
</Tab>
|
||||
<Tab v-if="!isCreate && value.spec.dataSource" name="datasource" :label="t('harvester.volume.tabs.datasource')" :weight="1" class="bordered-table">
|
||||
<LabeledInput v-model="dataSourceKind" class="mb-20" :mode="mode" :disabled="true" :label="t('harvester.volume.kind')" />
|
||||
<LabeledInput v-model="value.spec.dataSource.name" :mode="mode" :disabled="true" :label="t('nameNsDescription.name.label')" />
|
||||
<LabeledInput v-model:value="dataSourceKind" class="mb-20" :mode="mode" :disabled="true" :label="t('harvester.volume.kind')" />
|
||||
<LabeledInput v-model:value="value.spec.dataSource.name" :mode="mode" :disabled="true" :label="t('nameNsDescription.name.label')" />
|
||||
</Tab>
|
||||
</ResourceTabs>
|
||||
</CruResource>
|
||||
|
||||
@ -62,7 +62,7 @@ export default {
|
||||
>
|
||||
<NameNsDescription :value="value" :namespaced="true" :mode="mode" />
|
||||
<ResourceTabs
|
||||
v-model="value"
|
||||
v-model:value="value"
|
||||
class="mt-15"
|
||||
:need-conditions="false"
|
||||
:need-related="false"
|
||||
@ -72,17 +72,17 @@ export default {
|
||||
<Tab name="basics" :label="t('harvester.virtualMachine.detail.tabs.basics')" class="bordered-table">
|
||||
<div class="row">
|
||||
<div class="col span-12">
|
||||
<LabeledInput v-model="size" :label="t('harvester.snapshot.size')" class="mt-20" :disabled="true" />
|
||||
<LabeledInput v-model:value="size" :label="t('harvester.snapshot.size')" class="mt-20" :disabled="true" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col span-12">
|
||||
<LabeledInput v-model="targetVolume" :label="t('harvester.snapshot.targetVolume')" class="mt-20" :disabled="true" />
|
||||
<LabeledInput v-model:value="targetVolume" :label="t('harvester.snapshot.targetVolume')" class="mt-20" :disabled="true" />
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="isImageVolume" class="row">
|
||||
<div class="col span-12">
|
||||
<LabeledInput v-model="imageName" :label="t('harvester.snapshot.image')" class="mt-20" :disabled="true" />
|
||||
<LabeledInput v-model:value="imageName" :label="t('harvester.snapshot.image')" class="mt-20" :disabled="true" />
|
||||
</div>
|
||||
</div>
|
||||
</Tab>
|
||||
|
||||
@ -141,7 +141,7 @@ export default {
|
||||
<template>
|
||||
<div class="vm__credentials-users">
|
||||
<LabeledSelect
|
||||
v-model="selectedUser"
|
||||
v-model:value="selectedUser"
|
||||
:options="userOptions"
|
||||
:label="t('harvester.virtualMachine.accessCredentials.injectSSH.users')"
|
||||
:taggable="multiple"
|
||||
@ -167,7 +167,7 @@ export default {
|
||||
|
||||
<template #content>
|
||||
<LabeledInput
|
||||
v-model="newUsername"
|
||||
v-model:value="newUsername"
|
||||
:label="t('harvester.virtualMachine.input.username')"
|
||||
class="mb-20"
|
||||
required
|
||||
|
||||
@ -152,7 +152,7 @@ export default {
|
||||
<div>
|
||||
<Banner class="mb-20" color="info" :label="t('harvester.virtualMachine.accessCredentials.tips')" />
|
||||
|
||||
<div v-for="(row, i) in rows" :key="row.id">
|
||||
<div v-for="(row, i) in rows" :key="i">
|
||||
<InfoBox class="volume-source">
|
||||
<button v-if="isEdit" type="button" class="role-link btn btn-sm remove-vol" @click="remove(row)">
|
||||
<i class="icon icon-x" />
|
||||
@ -165,7 +165,7 @@ export default {
|
||||
<div>
|
||||
<component
|
||||
:is="componentFor(row.source)"
|
||||
v-model="rows[i]"
|
||||
v-model:value="rows[i]"
|
||||
:rows="rows"
|
||||
:resource="resource"
|
||||
:user-options="userOptions"
|
||||
|
||||
@ -61,10 +61,10 @@ export default {
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="row" @input="update">
|
||||
<div class="row" @update:value="update">
|
||||
<div class="col span-6">
|
||||
<AccessCredentialsUsers
|
||||
v-model="value.username"
|
||||
v-model:value="value.username"
|
||||
:resource="resource"
|
||||
:user-options="userOptions"
|
||||
:multiple="false"
|
||||
@ -76,7 +76,7 @@ export default {
|
||||
<div class="col span-6">
|
||||
<Password
|
||||
ref="password"
|
||||
v-model="value.newPassword"
|
||||
v-model:value="value.newPassword"
|
||||
:mode="mode"
|
||||
:disabled="mode !== 'edit'"
|
||||
:label="t('harvester.virtualMachine.input.password')"
|
||||
|
||||
@ -61,7 +61,7 @@ export default {
|
||||
<div class="columns row">
|
||||
<div class="col span-6">
|
||||
<AccessCredentialsUsers
|
||||
v-model="value.users"
|
||||
v-model:value="value.users"
|
||||
:resource="resource"
|
||||
:user-options="userOptions"
|
||||
:mode="mode"
|
||||
@ -72,7 +72,7 @@ export default {
|
||||
</div>
|
||||
<div class="col span-6">
|
||||
<SSHKey
|
||||
v-model="value.sshkeys"
|
||||
v-model:value="value.sshkeys"
|
||||
class="mb-20"
|
||||
:namespace="resource.metadata.namespace"
|
||||
:mode="mode"
|
||||
|
||||
@ -117,7 +117,7 @@ export default {
|
||||
|
||||
<LabeledSelect
|
||||
v-if="!isView"
|
||||
v-model="id"
|
||||
v-model:value="id"
|
||||
class="mb-20"
|
||||
:options="options"
|
||||
:disabled="viewCode"
|
||||
@ -127,7 +127,7 @@ export default {
|
||||
<div class="resource-yaml">
|
||||
<YamlEditor
|
||||
ref="yaml"
|
||||
v-model="yamlScript"
|
||||
v-model:value="yamlScript"
|
||||
class="yaml-editor"
|
||||
:editor-mode="editorMode"
|
||||
/>
|
||||
@ -138,7 +138,7 @@ export default {
|
||||
<style lang="scss" scoped>
|
||||
$yaml-height: 200px;
|
||||
|
||||
::v-deep .resource-yaml {
|
||||
:deep() .resource-yaml {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
@ -200,7 +200,7 @@ export default {
|
||||
<div class="mb-20">
|
||||
<DataTemplate
|
||||
ref="userTemplate"
|
||||
v-model="userScript"
|
||||
v-model:value="userScript"
|
||||
type="user"
|
||||
:view-code="viewCode"
|
||||
:mode="mode"
|
||||
@ -215,7 +215,7 @@ export default {
|
||||
<div class="mb-20">
|
||||
<DataTemplate
|
||||
ref="networkTemplate"
|
||||
v-model="networkScript"
|
||||
v-model:value="networkScript"
|
||||
type="network"
|
||||
:view-code="viewCode"
|
||||
:mode="mode"
|
||||
@ -240,7 +240,7 @@ export default {
|
||||
|
||||
<template #content>
|
||||
<LabeledInput
|
||||
v-model="cloudTemplateName"
|
||||
v-model:value="cloudTemplateName"
|
||||
:label="t('harvester.virtualMachine.input.name')"
|
||||
class="mb-20"
|
||||
required
|
||||
@ -251,7 +251,7 @@ export default {
|
||||
<div class="resource-yaml">
|
||||
<YamlEditor
|
||||
ref="createTemplate"
|
||||
v-model="cloudTemplate"
|
||||
v-model:value="cloudTemplate"
|
||||
class="yaml-editor"
|
||||
:editor-mode="editorMode"
|
||||
/>
|
||||
@ -270,7 +270,7 @@ $yaml-height: 350px;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
::v-deep .resource-yaml {
|
||||
:deep() .resource-yaml {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
@ -77,7 +77,7 @@ export default {
|
||||
<div class="col span-6">
|
||||
<InputOrDisplay name="CPU" :value="cupDisplay" :mode="mode" class="mb-10">
|
||||
<UnitInput
|
||||
v-model="localCpu"
|
||||
v-model:value="localCpu"
|
||||
v-int-number
|
||||
label="CPU"
|
||||
suffix="C"
|
||||
@ -86,7 +86,7 @@ export default {
|
||||
:disabled="disabled"
|
||||
:mode="mode"
|
||||
class="mb-20"
|
||||
@input="change"
|
||||
@update:value="change"
|
||||
/>
|
||||
</InputOrDisplay>
|
||||
</div>
|
||||
@ -94,7 +94,7 @@ export default {
|
||||
<div class="col span-6">
|
||||
<InputOrDisplay :name="t('harvester.virtualMachine.input.memory')" :value="memoryDisplay" :mode="mode" class="mb-10">
|
||||
<UnitInput
|
||||
v-model="localMemory"
|
||||
v-model:value="localMemory"
|
||||
v-int-number
|
||||
:label="t('harvester.virtualMachine.input.memory')"
|
||||
:mode="mode"
|
||||
@ -105,7 +105,7 @@ export default {
|
||||
:disabled="disabled"
|
||||
required
|
||||
class="mb-20"
|
||||
@input="change"
|
||||
@update:value="change"
|
||||
/>
|
||||
</InputOrDisplay>
|
||||
</div>
|
||||
|
||||
@ -198,12 +198,12 @@ export default {
|
||||
:mode="mode"
|
||||
>
|
||||
<LabeledInput
|
||||
v-model="value.name"
|
||||
v-model:value="value.name"
|
||||
:label="t('harvester.fields.name')"
|
||||
required
|
||||
:mode="mode"
|
||||
:disabled="isDisabled"
|
||||
@input="update"
|
||||
@update:value="update"
|
||||
/>
|
||||
</InputOrDisplay>
|
||||
</div>
|
||||
@ -218,13 +218,13 @@ export default {
|
||||
:mode="mode"
|
||||
>
|
||||
<LabeledSelect
|
||||
v-model="value.model"
|
||||
v-model:value="value.model"
|
||||
:label="t('harvester.fields.model')"
|
||||
:disabled="isDisabled"
|
||||
:options="modelOption"
|
||||
:mode="mode"
|
||||
required
|
||||
@input="update"
|
||||
@update:value="update"
|
||||
/>
|
||||
</InputOrDisplay>
|
||||
</div>
|
||||
@ -241,13 +241,13 @@ export default {
|
||||
:mode="mode"
|
||||
>
|
||||
<LabeledSelect
|
||||
v-model="value.networkName"
|
||||
v-model:value="value.networkName"
|
||||
:label="t('harvester.fields.network')"
|
||||
:options="allNetworkOption"
|
||||
:mode="mode"
|
||||
required
|
||||
:disabled="isDisabled"
|
||||
@input="updateNetworkName"
|
||||
@update:value="updateNetworkName"
|
||||
/>
|
||||
</InputOrDisplay>
|
||||
</div>
|
||||
@ -262,12 +262,12 @@ export default {
|
||||
:mode="mode"
|
||||
>
|
||||
<LabeledSelect
|
||||
v-model="value.type"
|
||||
v-model:value="value.type"
|
||||
:label="t('harvester.fields.type')"
|
||||
:options="typeOption"
|
||||
:mode="mode"
|
||||
required
|
||||
@input="update"
|
||||
@update:value="update"
|
||||
/>
|
||||
</InputOrDisplay>
|
||||
</div>
|
||||
@ -292,11 +292,11 @@ export default {
|
||||
:mode="mode"
|
||||
>
|
||||
<LabeledInput
|
||||
v-model="value.macAddress"
|
||||
v-model:value="value.macAddress"
|
||||
label-key="harvester.fields.macAddress"
|
||||
:mode="mode"
|
||||
:tooltip="t('harvester.virtualMachine.volume.macTip')"
|
||||
@input="update"
|
||||
@update:value="update"
|
||||
/>
|
||||
</InputOrDisplay>
|
||||
</div>
|
||||
|
||||
@ -125,7 +125,7 @@ export default {
|
||||
|
||||
<template>
|
||||
<div>
|
||||
<InfoBox v-for="(row, i) in rows" :key="i" class="infoBox">
|
||||
<InfoBox v-for="(row, i) in rows" :key="i">
|
||||
<button v-if="!isView" type="button" class="role-link remove-vol" @click="remove(row)">
|
||||
<i class="icon icon-x" />
|
||||
</button>
|
||||
@ -133,8 +133,7 @@ export default {
|
||||
<h3> {{ t('harvester.virtualMachine.network.title') }} </h3>
|
||||
|
||||
<Base
|
||||
:key="rows[i].rowKeyId"
|
||||
v-model="rows[i]"
|
||||
v-model:value="rows[i]"
|
||||
:rows="rows"
|
||||
:mode="mode"
|
||||
:is-single="isSingle"
|
||||
|
||||
@ -82,18 +82,16 @@ export default {
|
||||
</div>
|
||||
<div>{{ t('harvester.pci.matrixHostName') }}</div>
|
||||
</div>
|
||||
<div v-for="nodeName in allNodeNames" :key="nodeName" class="node-label">
|
||||
<div v-for="(nodeName, i) in allNodeNames" :key="i" >
|
||||
<span> {{ nodeName }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div v-for="deviceCRD in enabledDevices" :key="deviceCRD.metadata.name" class="device-col">
|
||||
<div v-for="(deviceCRD, i) in enabledDevices" :key="i" >
|
||||
<div v-clean-tooltip="deviceTooltip(deviceCRD)" class="compat-cell device-label" :class="{'text-muted': noneAvailable(deviceCRD)}">
|
||||
{{ deviceCRD.metadata.name }}
|
||||
</div>
|
||||
<div
|
||||
v-for="nodeName in allNodeNames"
|
||||
:key="nodeName"
|
||||
class="compat-cell"
|
||||
v-for="(nodeName, i) in allNodeNames" :key="i" class="compat-cell"
|
||||
:class="{'has-device': nodeHasDevice(nodeName, deviceCRD)}"
|
||||
/>
|
||||
</div>
|
||||
|
||||
@ -226,7 +226,7 @@ export default {
|
||||
<div class="row">
|
||||
<div class="col span-6">
|
||||
<LabeledSelect
|
||||
v-model="selectedDevices"
|
||||
v-model:value="selectedDevices"
|
||||
label="Available PCI Devices"
|
||||
searchable
|
||||
multiple
|
||||
@ -244,7 +244,7 @@ export default {
|
||||
<div class="col span-12 text-muted">
|
||||
Compatible hosts:
|
||||
<!-- eslint-disable-next-line vue/no-parsing-error -->
|
||||
<span v-for="(node, idx) in compatibleNodes" :key="node">{{ node }}{{ idx < compatibleNodes.length-1 ? ', ' : '' }}</span>
|
||||
<span v-for="(node, idx) in compatibleNodes" :key="idx">{{ node }}{{ idx < compatibleNodes.length-1 ? ', ' : '' }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else-if="selectedDevices.length" class="text-error">
|
||||
|
||||
@ -38,13 +38,13 @@ export default {
|
||||
|
||||
<template>
|
||||
<UnitInput
|
||||
v-model="memory"
|
||||
v-model:value="memory"
|
||||
v-int-number
|
||||
:label="t('harvester.virtualMachine.input.reservedMemory')"
|
||||
:mode="mode"
|
||||
:input-exponent="2"
|
||||
:increment="1024"
|
||||
:output-modifier="true"
|
||||
@input="change"
|
||||
@update:value="change"
|
||||
/>
|
||||
</template>
|
||||
|
||||
@ -239,7 +239,7 @@ export default {
|
||||
<template>
|
||||
<div>
|
||||
<LabeledSelect
|
||||
v-model="checkedSsh"
|
||||
v-model:value="checkedSsh"
|
||||
:label="t('harvester.virtualMachine.input.sshKey')"
|
||||
:taggable="true"
|
||||
:mode="mode"
|
||||
@ -247,7 +247,7 @@ export default {
|
||||
:searchable="searchable"
|
||||
:disabled="disabled"
|
||||
:options="sshOption"
|
||||
@input="update"
|
||||
@update:value="update"
|
||||
/>
|
||||
|
||||
<ModalWithCard
|
||||
@ -264,7 +264,7 @@ export default {
|
||||
|
||||
<template #content>
|
||||
<LabeledInput
|
||||
v-model="sshName"
|
||||
v-model:value="sshName"
|
||||
:label="t('harvester.virtualMachine.input.name')"
|
||||
class="mb-20"
|
||||
required
|
||||
@ -272,7 +272,7 @@ export default {
|
||||
/>
|
||||
|
||||
<LabeledInput
|
||||
v-model="publicKey"
|
||||
v-model:value="publicKey"
|
||||
:label="t('harvester.virtualMachine.input.sshKeyValue')"
|
||||
:min-height="160"
|
||||
class="mb-20"
|
||||
|
||||
@ -169,7 +169,7 @@ export default {
|
||||
<div class="row">
|
||||
<div class="col span-6">
|
||||
<LabeledSelect
|
||||
v-model="selectedDevices"
|
||||
v-model:value="selectedDevices"
|
||||
label="Available vGPU Devices"
|
||||
searchable
|
||||
multiple
|
||||
@ -187,7 +187,7 @@ export default {
|
||||
<div class="col span-12 text-muted">
|
||||
Compatible hosts:
|
||||
<!-- eslint-disable-next-line vue/no-parsing-error -->
|
||||
<span v-for="(node, idx) in compatibleNodes" :key="node">{{ node }}{{ idx < compatibleNodes.length-1 ? ', ' : '' }}</span>
|
||||
<span v-for="(node, idx) in compatibleNodes" :key="idx">{{ node }}{{ idx < compatibleNodes.length-1 ? ', ' : '' }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else-if="selectedDevices.length" class="text-error">
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user