Commit c7ca8aa0 authored by wangzhengkun's avatar wangzhengkun
Browse files

feat(oceanstor): 修改创建oceanstor的storageclass参数

(cherry picked from commit 1d43b1ed)
parent 4589b11c
Showing with 115 additions and 28 deletions
+115 -28
......@@ -152,7 +152,7 @@
<th>volumeType</th>
<td>
<div class="clr-select-wrapper">
<select class="clr-select" [(ngModel)]="item.parameters['oceanstor_sc_volume']"
<select class="clr-select" [(ngModel)]="item.parameters['volumeType']"
name="oceanstor_sc_volume" required>
<option value="">{{"APP_DEFAULT_OPTION"|translate}}</option>
<option value="lun">lun</option>
......@@ -161,46 +161,65 @@
</div>
</td>
</tr>
<tr *ngIf="item.parameters['oceanstor_sc_volume']==='fs'">
<tr *ngIf="item.parameters['volumeType']==='fs'">
<th>authClient</th>
<td>
<input [size]="34" class="clr-input" name="authClient" placeholder="demo1,demo2"
[(ngModel)]="item.parameters['oceanstor_sc_client']" required>
<div class="clr-control-container">
<div class="clr-input-wrapper">
<input [size]="34" class="clr-input" name="authClient" placeholder="demo1,demo2"
[(ngModel)]="item.parameters['authClient']" required>
</div>
<span class="clr-subtext">{{'APP_OCEAN_STOR_AUTHCLIENT'|translate}}</span>
</div>
</td>
</tr>
<tr>
<th>allocType</th>
<td>
<div class="clr-select-wrapper">
<select class="clr-select" [(ngModel)]="item.parameters['oceanstor_sc_alloc']"
name="oceanstor_sc_alloc"
required>
<option value="">{{"APP_DEFAULT_OPTION"|translate}}</option>
<option value="thin">thin</option>
<option value="thick">thick</option>
</select>
<div class="clr-control-container">
<div class="clr-select-wrapper">
<select class="clr-select" [(ngModel)]="item.parameters['allocType']"
name="oceanstor_sc_alloc"
required>
<option value="">{{"APP_DEFAULT_OPTION"|translate}}</option>
<option value="thin">thin</option>
<option value="thick">thick</option>
</select>
</div>
</div>
</td>
</tr>
<tr>
<th>cloneFrom</th>
<td>
<input [size]="34" class="clr-input" name="cloneFrom"
[(ngModel)]="item.parameters['oceanstor_sc_clonefrom']">
<div class="clr-control-container">
<div class="clr-input-wrapper">
<input [size]="34" class="clr-input" name="cloneFrom"
[(ngModel)]="item.parameters['cloneFrom']">
</div>
<span class="clr-subtext">{{'APP_OCEAN_STOR_CLONEFROM'|translate}}</span>
</div>
</td>
</tr>
<tr>
<th>cloneSpeed</th>
<td>
<input [size]="34" class="clr-input" type="number" name="cloneSpeed"
[(ngModel)]="item.parameters['oceanstor_sc_clonespeed']" placeholder="1-4">
<div class="clr-control-container">
<div class="clr-input-wrapper">
<input [size]="34" class="clr-input" name="cloneSpeed"
[(ngModel)]="item.parameters['cloneSpeed']" placeholder="1-4">
</div>
<span class="clr-subtext">{{'APP_OCEAN_STOR_CLONSPEED'|translate}}</span>
</div>
</td>
</tr>
<tr *ngIf="item.parameters['oceanstor_sc_volume']==='lun'">
<th>fsType</th>
<td>
<div class="clr-select-wrapper">
<select class="clr-select" [(ngModel)]="item.parameters['oceanstor_sc_fs']"
<select class="clr-select" [(ngModel)]="item.parameters['fsType']"
name="oceanstor_sc_alloc">
<option value="">{{"APP_DEFAULT_OPTION"|translate}}</option>
<option value="ext2">ext2</option>
......@@ -208,15 +227,17 @@
<option value="ext4">ext4</option>
</select>
</div>
<span class="clr-subtext">{{'APP_OCEAN_STOR_FSTYPE'|translate}}</span>
</td>
</tr>
</tbody>
</table>
</form>
<app-modal-alert></app-modal-alert>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-outline" (click)="onCancel()">{{'APP_CANCEL'|translate}}</button>
<button type="button" class="btn btn-primary" (click)="onSubmit()"
[disabled]="isSubmitGoing || itemForm.invalid">{{'APP_COMMIT'|translate}}</button>
<button type="button" class="btn btn-outline" (click)="onCancel()" [disabled]="isSubmitGoing">{{'APP_CANCEL'|translate}}</button>
<button type="button" class="btn btn-primary" (click)="onSubmit()" [clrLoading]="isSubmitGoing"
[disabled]="itemForm.invalid">{{'APP_COMMIT'|translate}}</button>
</div>
</clr-modal>
import {Component, EventEmitter, Input, OnInit, Output, ViewChild} from '@angular/core';
import {CreateStorageClassRequest} from '../../storage';
import {NgForm} from '@angular/forms';
import {V1PersistentVolume, V1StorageClass} from '@kubernetes/client-node';
import {V1StorageClass} from '@kubernetes/client-node';
import {V1ObjectMeta} from '@kubernetes/client-node/dist/gen/model/v1ObjectMeta';
import {V1NFSVolumeSource} from '@kubernetes/client-node/dist/gen/model/v1NFSVolumeSource';
import {V1PersistentVolumeSpec} from '@kubernetes/client-node/dist/gen/model/v1PersistentVolumeSpec';
import {StorageProvisionerService} from '../../storage-provisioner/storage-provisioner.service';
import {StorageProvisioner} from '../../storage-provisioner/storage-provisioner';
import {Cluster} from '../../../../cluster';
import {KubernetesService} from '../../../../kubernetes.service';
import {ModalAlertService} from '../../../../../../shared/common-component/modal-alert/modal-alert.service';
import {TranslateService} from '@ngx-translate/core';
import {AlertLevels} from '../../../../../../layout/common-alert/alert';
@Component({
selector: 'app-storage-class-create',
......@@ -17,7 +18,10 @@ import {KubernetesService} from '../../../../kubernetes.service';
})
export class StorageClassCreateComponent implements OnInit {
constructor(private provisionerService: StorageProvisionerService, private kubernetesService: KubernetesService) {
constructor(private provisionerService: StorageProvisionerService,
private kubernetesService: KubernetesService,
private modalAlertService: ModalAlertService,
private translateService: TranslateService,) {
}
opened = false;
......@@ -91,6 +95,9 @@ export class StorageClassCreateComponent implements OnInit {
this.isSubmitGoing = false;
this.created.emit();
this.opened = false;
}, error => {
this.isSubmitGoing = false;
this.modalAlertService.showAlert(error.message, AlertLevels.ERROR);
});
}
......
......@@ -132,6 +132,7 @@
"APP_RESOURCE_POOL_HELPER": "Select the resource pool used to run the virtual machine, Resources is the default resource pool under cluster",
"APP_DATASTORE": "Datastore",
"APP_DATASTORE_HELPER": "Select the storage used to run the virtual machine, if you want to use vsan to dynamically create a PV in the k8s cluster, please select the storage that supports the vsan type",
"APP_UPDATE_DATASTORE_HELPER": "Storage can only be added",
"APP_TEMPLATE": "Template",
"APP_TEMPLATE_TYPE": "Template Type",
"APP_DEFAULT": "Defult",
......@@ -214,8 +215,11 @@
"APP_GATEWAY_HELPER": "example 172.16.10.254",
"APP_SUBNET_INVALID": "Subnet invalid",
"APP_SYSTEM": "System",
"APP_REGISTRY_PROTOCOL": "Registry Protocol",
"APP_REGISTRY_IP": "Registry IP",
"APP_SYSTEM_IP": "System IP",
"APP_SYSTEM_IP_HELPER": "Required, please fill in the IPV4 address of Kubeoperator",
"APP_SYSTEM_IP_HELPER": "Required, please fill in the IPV4 address of KubeOperator",
"APP_SYSTEM_PROTOCOL_HELPER": "Required, nexus access address, http or https",
"APP_SYSTEM_LANGUAGE_CN": "简体中文",
"APP_SYSTEM_LANGUAGE_US": "English",
"APP_SYSTEM_LANGUAGE": "Language",
......@@ -299,7 +303,10 @@
"APP_TOOLS": "Tools",
"APP_DATA": "Data",
"APP_RETENTION": "Retention",
"APP_EFK_CREATE_REPLICAS": "Make sure that the number of copies is less than or equal to the number of nodes!",
"APP_EFK_CREATE_REPLICAS": "Make sure that the number of copies is less than or equal to the number of nodes!",
"APP_TIPS": "Prompt information",
"APP_EFK_LOKI_CONDITION": "Elasticsearch and Loki do not support enabling at the same time!",
"APP_GRAFANA_CONDITION": "Please enable Prometheus as the default data source first!",
"APP_PREFIX": "Prefix",
"APP_INDEX": "Index",
"APP_REPLICAS": "Replicas",
......@@ -360,6 +367,8 @@
"APP_LABEL": "Label",
"Ready": "Ready",
"Waiting": "Waiting",
"Lost": "Lost",
"Creating": "Creating",
"APP_DOWNLOAD": "Download",
"APP_SECURITY": "CIS Scan",
"APP_LDAP_ADDRESS": "Address",
......@@ -582,5 +591,51 @@
"APP_MENU": "Menu",
"APP_RENAME": "Rename",
"APP_GPU_INFO": "GPU info",
"APP_MASTER_HELPER":"The number of master nodes must be 1 or 3"
"APP_ISTIO": "Istio",
"APP_ISTIO_ERROR_MSG": "Error Msg",
"APP_ISTIO_CPU_REQUEST": "CPU Requests(m)",
"APP_ISTIO_CPU_LIMIT": "CPU Limits(m)",
"APP_ISTIO_MEMERY_REQUEST": "Memory Requests(Mb)",
"APP_ISTIO_MEMERY_LIMIT": "Memory Limits(Mb)",
"APP_ISTIO_TRACE_SAMPLING": "TraceSampling",
"APP_ISTIO_GATEWAY_TYPE": "Gatewat type",
"APP_ISTIO_RESAVE": "Restore",
"APP_ISTIO_START_SUCCESS": "Enable cluster istio success",
"APP_ISTIO_STOP_SUCCESS": "Disable cluster istio success",
"APP_SYSTEM_LOG": "System Log",
"APP_MASTER_HELPER": "The number of master nodes must be 1 or 3",
"APP_IP_POOL": "IP Pool",
"APP_IP_POOL_STATUS": "IP usage",
"IP_AVAILABLE": "Available",
"IP_LOCK": "Lock",
"IP_USED": "Using",
"IP_REACHABLE": "Reachable",
"IP_PROMPT": "Occupied: Manually occupied; In use: There are machines using this IP in the host; Reachable: The host can be pinged;",
"IP_SYNC": "Start syncing, please wait",
"IP_STATUS": "IP usage",
"APP_DATASTORE_TYPE": "placement method",
"APP_DATASTORE_TYPE_USAGE": "By usage",
"APP_DATASTORE_TYPE_VALUE": "By remaining amount",
"APP_DATASTIORE_USAGE_HELPER": "Prefer datastore with low usage rate",
"APP_DATASTIORE_VALUE_HELPER": "Prefer datastore with more remaining volume",
"APP_DELETE_NS_ERR": "Delete failed, tool already exists in this namespace:",
"EnsureBackupETCD": "Backup Cluster",
"EnsureUpgradeRuntime": "Upgrade Runtime",
"EnsureUpgradeETCD": "Upgrade ETCD",
"EnsureUpgradeKubernetes": "Upgrade Kubernetes",
"EnsureUpdateCertificates": "Update Certificates",
"EnsureUpgradeTaskStart": "Scheduling Task",
"APP_CLUSTER_SETUP": "Cluster settings",
"APP_RUNTIME_SETUP": "Runtime settings",
"APP_CONTAINER_SETUP": "Container network settings",
"APP_COMPONENT_SETUP": "Component settings",
"APP_CONFIGUARTION_PREVIEW": "Configuration preview",
"APP_BASIC_CONFIGURATION": "Basic configuration",
"APP_CURRENT_VERSION": "Current Version",
"APP_UPGRADE_VERSION": "Upgrade Version",
"APP_BASIC_CONFIGURATION": "Basic configuration",
"APP_OCEAN_STOR_AUTHCLIENT": "Mandatory, support to enter the client host name, client IP address, client IP address segment or use \"*\" to indicate all client IP addresses\nSupport to specify multiple clients, separated by \";\" semicolon",
"APP_OCEAN_STOR_CLONEFROM": "Optional, the format is storage backend name. original volume name",
"APP_OCEAN_STOR_CLONSPEED": "Optional, default value 3, support 1~4, 4 is the fastes",
"APP_OCEAN_STOR_FSTYPE": "Optional, support ext2/ext3/ext4, default is ext4"
}
......@@ -586,5 +586,9 @@
"APP_RENAME": "重命名",
"APP_GPU_INFO": "显卡信息",
"APP_HOST_IMPORT_FILE_ERROR": "不支持的文件格式",
"APP_MASTER_HELPER": "Master 节点的数量必须为1或者3"
"APP_MASTER_HELPER": "Master 节点的数量必须为1或者3",
"APP_OCEAN_STOR_AUTHCLIENT": "必选,支持输入客户端主机名称、客户 端IP地址、客户端IP地址段或使用“*” 表示全部客户端IP地址\n支持指定多个客户端,以\";\"分号分隔",
"APP_OCEAN_STOR_CLONEFROM": "可选,格式为 存储后端名.原卷名",
"APP_OCEAN_STOR_CLONSPEED": "可选,默认值3,支持1~4,4速度最快",
"APP_OCEAN_STOR_FSTYPE": "可选,支持ext2/ext3/ext4,默认为ext4"
}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment