Merge "feat: Update trove database"

This commit is contained in:
Zuul 2022-05-25 03:26:52 +00:00 committed by Gerrit Code Review
commit 1bb2c20d26
13 changed files with 564 additions and 19 deletions

View File

@ -26,6 +26,8 @@ const {
imageNameMessage,
instanceNameMessage,
swiftFilenameMessage,
databaseNameMessage,
databaseUserNameMessage,
} = nameMessageInfo;
const {
@ -38,6 +40,8 @@ const {
imageNameValidate,
instanceNameValidate,
swiftFileNameValidate,
databaseNameValidate,
databaseUserNameValidate,
} = nameTypeValidate;
export default class index extends Component {
@ -54,6 +58,8 @@ export default class index extends Component {
isImage,
isInstance,
isSwiftFile,
isDatabaseName,
isDatabaseUserName,
}) {
const uniqueNameValidate = (rule, value) => {
if (names && names.length && names.includes(value)) {
@ -82,6 +88,10 @@ export default class index extends Component {
validator = crontabNameValidate;
} else if (isSwiftFile) {
validator = swiftFileNameValidate;
} else if (isDatabaseName) {
validator = databaseNameValidate;
} else if (isDatabaseUserName) {
validator = databaseUserNameValidate;
}
const newRules = {
validator,
@ -101,6 +111,8 @@ export default class index extends Component {
isImage,
isInstance,
isSwiftFile,
isDatabaseName,
isDatabaseUserName,
}) {
if (withoutChinese) {
return nameMessageWithoutChinese;
@ -126,6 +138,12 @@ export default class index extends Component {
if (isSwiftFile) {
return swiftFilenameMessage;
}
if (isDatabaseName) {
return databaseNameMessage;
}
if (isDatabaseUserName) {
return databaseUserNameMessage;
}
return nameMessage;
}
@ -136,6 +154,8 @@ export default class index extends Component {
isFile = false,
isKeypair = false,
isSwiftFile = false,
isDatabaseName = false,
isDatabaseUserName = false,
isStack,
isCrontab,
isImage,
@ -162,6 +182,8 @@ export default class index extends Component {
isImage,
isInstance,
isSwiftFile,
isDatabaseName,
isDatabaseUserName,
});
const message = this.getMessage({
withoutChinese,
@ -172,6 +194,8 @@ export default class index extends Component {
isImage,
isInstance,
isSwiftFile,
isDatabaseName,
isDatabaseUserName,
});
const newFormItemProps = {
...rest,

View File

@ -32,6 +32,7 @@
"AKI - Amazon kernel image format": "AKI - Amazon kernel image format",
"AMI - Amazon server image format": "AMI - Amazon server image format",
"ANY": "ANY",
"API Address": "API Address",
"ARI - Amazon ramdisk image format": "ARI - Amazon ramdisk image format",
"ARM Architecture": "ARM Architecture",
"Abandon Stack": "Abandon Stack",
@ -45,6 +46,8 @@
"Access To": "Access To",
"Access Type": "Access Type",
"Access Type Setting": "Access Type Setting",
"Accessible on private network only": "Accessible on private network only",
"Accessible on the public internet": "Accessible on the public internet",
"Action": "Action",
"Action Log": "Action Log",
"Active": "Active",
@ -57,6 +60,7 @@
"Add Extra Info": "Add Extra Info",
"Add Extra Spec": "Add Extra Spec",
"Add IP": "Add IP",
"Add Label": "Add Label",
"Add Member": "Add Member",
"Add Metadata": "Add Metadata",
"Add NUMA Node": "Add NUMA Node",
@ -66,6 +70,7 @@
"Add Virtual LAN": "Add Virtual LAN",
"Add hosts to the aggregate or remove hosts from it. Hosts can be in multiple aggregates.": "Add hosts to the aggregate or remove hosts from it. Hosts can be in multiple aggregates.",
"Add network": "Add network",
"Additional Labels": "Additional Labels",
"Additional routes announced to the instance, one entry per line(e.g. 192.168.200.0/24,10.56.1.254)": "Additional routes announced to the instance, one entry per line(e.g. 192.168.200.0/24,10.56.1.254)",
"Additional routes announced to the instance, one entry per line(e.g. {ip})": "Additional routes announced to the instance, one entry per line(e.g. {ip})",
"Admin": "Admin",
@ -162,10 +167,14 @@
"Auth Algorithm": "Auth Algorithm",
"Auth Key": "Auth Key",
"Auto": "Auto",
"Auto Healing": "Auto Healing",
"Auto Inspect": "Auto Inspect",
"Auto Scaling": "Auto Scaling",
"Auto allocate mac address": "Auto allocate mac address",
"Auto scaling feature will be enabled": "Auto scaling feature will be enabled",
"Automatic backup": "Automatic backup",
"Automatically Assigned Address": "Automatically Assigned Address",
"Automatically repair unhealhty nodes": "Automatically repair unhealhty nodes",
"Availability Zone": "Availability Zone",
"Availability Zone Hints": "Availability Zone Hints",
"Availability Zone Info": "Availability Zone Info",
@ -253,6 +262,8 @@
"CIDR": "CIDR",
"CIDR Format Error(e.g. 192.168.0.0/24, 2001:DB8::/48)": "CIDR Format Error(e.g. 192.168.0.0/24, 2001:DB8::/48)",
"CIFS": "CIFS",
"COE": "COE",
"COE Version": "COE Version",
"CPU": "CPU",
"CPU Arch": "CPU Arch",
"CPU Cores": "CPU Cores",
@ -303,8 +314,13 @@
"Checksum": "Checksum",
"Chile": "Chile",
"China": "China",
"Choose a External Network ID": "Choose a External Network ID",
"Choose a Network Driver": "Choose a Network Driver",
"Choose a Private Network ID": "Choose a Private Network ID",
"Choose a Private Network at first": "Choose a Private Network at first",
"Choose a host to live migrate instance to. If not selected, the scheduler will auto select target host.": "Choose a host to live migrate instance to. If not selected, the scheduler will auto select target host.",
"Choose a host to migrate instance to. If not selected, the scheduler will auto select target host.": "Choose a host to migrate instance to. If not selected, the scheduler will auto select target host.",
"Choose an ingress controller": "Choose an ingress controller",
"Choosing a QoS policy can limit bandwidth and DSCP": "Choosing a QoS policy can limit bandwidth and DSCP",
"Christmas Island": "Christmas Island",
"Cidr": "Cidr",
@ -325,6 +341,20 @@
"Close external gateway": "Close external gateway",
"Cloud": "Cloud",
"Cloud Platform": "Cloud Platform",
"Cluster API": "Cluster API",
"Cluster Advanced": "Cluster Advanced",
"Cluster Create Timeout": "Cluster Create Timeout",
"Cluster Detail": "Cluster Detail",
"Cluster Distro": "Cluster Distro",
"Cluster Management": "Cluster Management",
"Cluster Name": "Cluster Name",
"Cluster Network": "Cluster Network",
"Cluster Size": "Cluster Size",
"Cluster Template": "Cluster Template",
"Cluster Template Detail": "Cluster Template Detail",
"Cluster Template Name": "Cluster Template Name",
"Cluster Type": "Cluster Type",
"Clusters": "Clusters",
"Cocos (Keeling) Islands": "Cocos (Keeling) Islands",
"Code": "Code",
"Cold Migrate": "Cold Migrate",
@ -381,7 +411,10 @@
"Container": "Container",
"Container Detail": "Container Detail",
"Container Format": "Container Format",
"Container Infra": "Container Infra",
"Container Name": "Container Name",
"Container Orchestration Engine": "Container Orchestration Engine",
"Container Version": "Container Version",
"Content": "Content",
"Content Type": "Content Type",
"Control Location": "Control Location",
@ -401,12 +434,15 @@
"Create Bandwidth Limit Rule": "Create Bandwidth Limit Rule",
"Create Bare Metal Node": "Create Bare Metal Node",
"Create Certificate": "Create Certificate",
"Create Cluster": "Create Cluster",
"Create Cluster Template": "Create Cluster Template",
"Create Complete": "Create Complete",
"Create Configurations": "Create Configurations",
"Create Container": "Create Container",
"Create DNAT Rule": "Create DNAT Rule",
"Create DNAT rule": "Create DNAT rule",
"Create DSCP Marking Rule": "Create DSCP Marking Rule",
"Create Database": "Create Database",
"Create Default Pool": "Create Default Pool",
"Create Domain": "Create Domain",
"Create Encryption": "Create Encryption",
@ -424,6 +460,7 @@
"Create Listener": "Create Listener",
"Create Loadbalancer": "Create Loadbalancer",
"Create Network": "Create Network",
"Create New Network": "Create New Network",
"Create Node": "Create Node",
"Create Port": "Create Port",
"Create Port Group": "Create Port Group",
@ -483,6 +520,7 @@
"Current Flavor": "Current Flavor",
"Current Host": "Current Host",
"Current Interface": "Current Interface",
"Current Master Flavor": "Current Master Flavor",
"Current Password": "Current Password",
"Current Path: ": "Current Path: ",
"Current Project": "Current Project",
@ -504,6 +542,7 @@
"Cut File": "Cut File",
"Cyprus": "Cyprus",
"Czech Republic": "Czech Republic",
"DC/OS": "DC/OS",
"DCCP": "DCCP",
"DEGRADED: One or more of the entitys components are in ERROR": "DEGRADED: One or more of the entitys components are in ERROR",
"DHCP": "DHCP",
@ -547,6 +586,8 @@
"Delete Bandwidth Egress Rules": "Delete Bandwidth Egress Rules",
"Delete Bandwidth Ingress Rules": "Delete Bandwidth Ingress Rules",
"Delete Certificate": "Delete Certificate",
"Delete Clusters": "Delete Clusters",
"Delete Clusters Templates": "Delete Clusters Templates",
"Delete Complete": "Delete Complete",
"Delete Configuration": "Delete Configuration",
"Delete Container": "Delete Container",
@ -594,6 +635,7 @@
"Delete Snapshot": "Delete Snapshot",
"Delete Static Route": "Delete Static Route",
"Delete Subnet": "Delete Subnet",
"Delete Template": "Delete Template",
"Delete User": "Delete User",
"Delete VPN": "Delete VPN",
"Delete VPN EndPoint Groups": "Delete VPN EndPoint Groups",
@ -640,6 +682,7 @@
"Disable Compute Service": "Disable Compute Service",
"Disable Gateway": "Disable Gateway",
"Disable Neutron Agent": "Disable Neutron Agent",
"Disable TLS": "Disable TLS",
"Disable compute host": "Disable compute host",
"Disabled": "Disabled",
"Disabling port security will turn off the security group policy protection and anti-spoofing protection on the port. General applicable scenarios: NFV or operation and maintenance Debug.": "Disabling port security will turn off the security group policy protection and anti-spoofing protection on the port. General applicable scenarios: NFV or operation and maintenance Debug.",
@ -648,6 +691,7 @@
"Disassociate Floating IP": "Disassociate Floating IP",
"Disassociate Floating Ip": "Disassociate Floating Ip",
"Disconnect Subnet": "Disconnect Subnet",
"Discovery URL": "Discovery URL",
"Disk": "Disk",
"Disk Format": "Disk Format",
"Disk Info": "Disk Info",
@ -659,6 +703,11 @@
"Do HH:mm": "Do HH:mm",
"Do not reset the normally mounted volume to the \"available\"、\"maintenance\" or \"error\" status. The reset state does not remove the volume from the instance. If you need to remove the volume from the instance, please go to the console of the corresponding project and use the \"detach\" operation.": "Do not reset the normally mounted volume to the \"available\"、\"maintenance\" or \"error\" status. The reset state does not remove the volume from the instance. If you need to remove the volume from the instance, please go to the console of the corresponding project and use the \"detach\" operation.",
"Do not set with a backend": "Do not set with a backend",
"Docker Storage Driver": "Docker Storage Driver",
"Docker Swarm": "Docker Swarm",
"Docker Swarm Mode": "Docker Swarm Mode",
"Docker Volume Size": "Docker Volume Size",
"Docker Volume Size (GB)": "Docker Volume Size (GB)",
"Domain": "Domain",
"Domain Detail": "Domain Detail",
"Domain Edit": "Domain Edit",
@ -740,13 +789,17 @@
"Enable Compute Service": "Enable Compute Service",
"Enable Domain": "Enable Domain",
"Enable HealthMonitor": "Enable HealthMonitor",
"Enable Load Balancer": "Enable Load Balancer",
"Enable Neutron Agent": "Enable Neutron Agent",
"Enable Project": "Enable Project",
"Enable QoS Policy": "Enable QoS Policy",
"Enable Registry": "Enable Registry",
"Enable Service": "Enable Service",
"Enable User": "Enable User",
"Enable compute host": "Enable compute host",
"Enabled": "Enabled",
"Enabled Load Balancer for Master Nodes": "Enabled Load Balancer for Master Nodes",
"Enabled Network": "Enabled Network",
"Encapsulation Mode": "Encapsulation Mode",
"Encrypted": "Encrypted",
"Encryption": "Encryption",
@ -794,6 +847,7 @@
"External IP(V4)": "External IP(V4)",
"External IP(V6)": "External IP(V6)",
"External Network": "External Network",
"External Network ID": "External Network ID",
"External Network Info": "External Network Info",
"External Port": "External Port",
"Extra Infos": "Extra Infos",
@ -821,13 +875,19 @@
"Fixed IP": "Fixed IP",
"Fixed IP Address": "Fixed IP Address",
"Fixed IPs": "Fixed IPs",
"Fixed Network": "Fixed Network",
"Fixed Subnet": "Fixed Subnet",
"Flavor": "Flavor",
"Flavor Detail": "Flavor Detail",
"Flavor ID": "Flavor ID",
"Flavor Info": "Flavor Info",
"Flavor Name": "Flavor Name",
"Flavor of Master Nodes": "Flavor of Master Nodes",
"Flavor of Worker Nodes": "Flavor of Worker Nodes",
"Flavors": "Flavors",
"Floating IP": "Floating IP",
"Floating IP Address": "Floating IP Address",
"Floating IP Enabled": "Floating IP Enabled",
"Floating IPs": "Floating IPs",
"Floating Ip": "Floating Ip",
"Floating Ip Address": "Floating Ip Address",
@ -899,7 +959,9 @@
"Guinea Bissau": "Guinea Bissau",
"Guyana": "Guyana",
"HDFS": "HDFS",
"HTTP Proxy": "HTTP Proxy",
"HTTP Version not supported (code: 505) ": "HTTP Version not supported (code: 505) ",
"HTTPS Proxy": "HTTPS Proxy",
"Haiti": "Haiti",
"Hard Reboot": "Hard Reboot",
"Hard Rebooting": "Hard Rebooting",
@ -910,11 +972,14 @@
"Health Monitor Name": "Health Monitor Name",
"Health Monitor Timeout": "Health Monitor Timeout",
"Health Monitor Type": "Health Monitor Type",
"Health Status": "Health Status",
"Health Status Reason": "Health Status Reason",
"HealthMonitor": "HealthMonitor",
"HealthMonitor Type": "HealthMonitor Type",
"Healthy": "Healthy",
"Heartbeat Timestamp": "Heartbeat Timestamp",
"Heterogeneous Computing": "Heterogeneous Computing",
"Hidden": "Hidden",
"Hide Advanced Options": "Hide Advanced Options",
"High Clock Speed": "High Clock Speed",
"Home": "Home",
@ -999,6 +1064,7 @@
"Image & OS": "Image & OS",
"Image Backup": "Image Backup",
"Image Detail": "Image Detail",
"Image ID": "Image ID",
"Image Info": "Image Info",
"Image Name": "Image Name",
"Image Pending Upload": "Image Pending Upload",
@ -1028,7 +1094,10 @@
"Indicates whether this VPN can only respond to connections or both respond to and initiate connections.": "Indicates whether this VPN can only respond to connections or both respond to and initiate connections.",
"Indonesia": "Indonesia",
"Infinity": "Infinity",
"Info": "Info",
"Info *": "Info *",
"Ingress": "Ingress",
"Ingress Controller": "Ingress Controller",
"Init Complete": "Init Complete",
"Init Failed": "Init Failed",
"Init In Progress": "Init In Progress",
@ -1039,6 +1108,7 @@
"Initiator Mode": "Initiator Mode",
"Input destination port or port range(example: 80 or 80:160)": "Input destination port or port range(example: 80 or 80:160)",
"Input source port or port range(example: 80 or 80:160)": "Input source port or port range(example: 80 or 80:160)",
"Insecure Registry": "Insecure Registry",
"Inspect Failed": "Inspect Failed",
"Inspecting": "Inspecting",
"Instance": "Instance",
@ -1150,10 +1220,12 @@
"Keypair Info": "Keypair Info",
"Keystone token is expired.": "token has expired, please check whether the server time is correct and confirm whether the token is valid",
"Killed": "Killed",
"Kubernetes": "Kubernetes",
"Kuwait": "Kuwait",
"Kyrgyzstan": "Kyrgyzstan",
"LB Algorithm": "LB Algorithm",
"LEAST_CONNECTIONS": "Least Connections",
"Labels": "Labels",
"Lao People's Democratic Republic": "Lao People's Democratic Republic",
"Large": "Large",
"Large(Optimal performance)": "Large(Optimal performance)",
@ -1251,6 +1323,12 @@
"Manually Specify": "Manually Specify",
"Marshall Islands": "Marshall Islands",
"Martinique": "Martinique",
"Master Addresses": "Master Addresses",
"Master Count": "Master Count",
"Master Flavor": "Master Flavor",
"Master Flavor ID": "Master Flavor ID",
"Master LB": "Master LB",
"Master LB Enabled": "Master LB Enabled",
"Mauritania": "Mauritania",
"Mauritius": "Mauritius",
"Max Avail": "Max Avail",
@ -1273,6 +1351,7 @@
"Memory Page Size": "Memory Page Size",
"Memory Usage": "Memory Usage",
"Memory usage Num (GB)": "Memory usage Num (GB)",
"Mesos": "Mesos",
"Message": "Message",
"Message Details": "Message Details",
"Message Queue Service": "Message Queue Service",
@ -1294,6 +1373,7 @@
"Min. Disk": "Min. Disk",
"Min. RAM": "Min. RAM",
"Minimum value is 68 for IPv4, and 1280 for IPv6.": "Minimum value is 68 for IPv4, and 1280 for IPv6.",
"Miscellaneous": "Miscellaneous",
"Missing IP Address": "Missing IP Address",
"Missing Port": "Missing Port",
"Missing Subnet": "Missing Subnet",
@ -1335,6 +1415,7 @@
"Network": "Network",
"Network Config": "Network Config",
"Network Detail": "Network Detail",
"Network Driver": "Network Driver",
"Network Dropped Packets": "Network Dropped Packets",
"Network Errors": "Network Errors",
"Network ID": "Network ID",
@ -1369,16 +1450,23 @@
"No": "No",
"No Console": "No Console",
"No Monitor": "No Monitor",
"No Proxy": "No Proxy",
"No Raid": "No Raid",
"No State": "No State",
"No Task": "No Task",
"No Vender": "No Vender",
"Node": "Node",
"Node Addresses": "Node Addresses",
"Node Count": "Node Count",
"Node Driver": "Node Driver",
"Node Flavor ID": "Node Flavor ID",
"Node ID/Name": "Node ID/Name",
"Node Info": "Node Info",
"Node Name": "Node Name",
"Node Num": "Node Num",
"Node Spec": "Node Spec",
"Node Spec *": "Node Spec *",
"Nodes": "Nodes",
"Norfolk Island": "Norfolk Island",
"Normal": "Normal",
"North Korea": "North Korea",
@ -1398,8 +1486,10 @@
"Nova Service": "Nova Service",
"Number Of Ports": "Number Of Ports",
"Number of GPU": "Number of GPU",
"Number of Master Nodes": "Number of Master Nodes",
"Number of Nodes": "Number of Nodes",
"Number of Usb Controller": "Number of Usb Controller",
"Number of Worker Nodes": "Number of Worker Nodes",
"OK": "OK",
"OS": "OS",
"OS Admin": "OS Admin",
@ -1443,6 +1533,8 @@
"Out of Sync": "Out of Sync",
"Outputs": "Outputs",
"Overlapping allocation pools: {pools}": "Overlapping allocation pools: {pools}",
"Overlay": "Overlay",
"Overlay2": "Overlay2",
"Owned Network": "Owned Network",
"Owned Network ID": "Owned Network ID",
"Owned Project": "Owned Project",
@ -1701,6 +1793,7 @@
"Recovering": "Recovering",
"Recycle Bin": "Recycle Bin",
"Region": "Region",
"Registry Enabled": "Registry Enabled",
"Related Resources": "Related Resources",
"Release": "Release",
"Release Fixed IP": "Release Fixed IP",
@ -1726,6 +1819,7 @@
"Reset To Initial Value": "Reset To Initial Value",
"Reset failed, please retry": "Reset failed, please retry",
"Resize": "Resize",
"Resize Cluster": "Resize Cluster",
"Resize Instance": "Resize Instance",
"Resized": "Resized",
"Resizing or Migrating": "Resizing or Migrating",
@ -1828,6 +1922,7 @@
"Server Group Detail": "Server Group Detail",
"Server Group Member": "Server Group Member",
"Server Status": "Server Status",
"Server Type": "Server Type",
"Service": "Service",
"Service Port ID": "Service Port ID",
"Service State": "Service State",
@ -1891,6 +1986,7 @@
"Size": "Size",
"Size (GB)": "Size (GB)",
"Size of image to launch": "Size of image to launch",
"Size: *": "Size: *",
"Slovakia (Slovak Republic)": "Slovakia (Slovak Republic)",
"Slovenia": "Slovenia",
"Slow Query": "Slow Query",
@ -1928,8 +2024,11 @@
"Specify whether future replicated instances will be created on the same hypervisor (affinity) or on different hypervisors (anti-affinity). This value is ignored if the instance to be launched is a replica.": "Specify whether future replicated instances will be created on the same hypervisor (affinity) or on different hypervisors (anti-affinity). This value is ignored if the instance to be launched is a replica.",
"Specs": "Specs",
"Sri Lanka": "Sri Lanka",
"Stack": "Stack",
"Stack Detail": "Stack Detail",
"Stack Events": "Stack Events",
"Stack Faults": "Stack Faults",
"Stack ID": "Stack ID",
"Stack Name": "Stack Name",
"Stack Resource": "Stack Resource",
"Stack Resource Type": "Stack Resource Type",
@ -1951,6 +2050,7 @@
"Static Routes": "Static Routes",
"Status": "Status",
"Status Code": "Status Code",
"Status Reason": "Status Reason",
"Stop": "Stop",
"Stop Instance": "Stop Instance",
"Stop auto refreshing data": "Stop auto refreshing data",
@ -2009,6 +2109,7 @@
"System is error, please try again later.": "System is error, please try again later.",
"TCP": "TCP",
"TCP Connections": "TCP Connections",
"TLS Disabled": "TLS Disabled",
"Tag is no longer than 60 characters": "Tag is no longer than 60 characters",
"Tags": "Tags",
"Tags Info": "Tags Info",
@ -2025,6 +2126,7 @@
"Template Name": "Template Name",
"Thailand": "Thailand",
"That is, after how many consecutive failures of the health check, the health check status of the back-end cloud server is changed from normal to abnormal": "That is, after how many consecutive failures of the health check, the health check status of the back-end cloud server is changed from normal to abnormal",
"The DNS nameserver to use for this cluster template": "The DNS nameserver to use for this cluster template",
"The Federation of Saint Kitts and Nevis": "The Federation of Saint Kitts and Nevis",
"The Provider is the encryption provider format (e.g. \"luks\")": "The Provider is the encryption provider format (e.g. \"luks\")",
"The Republic of Macedonia": "The Republic of Macedonia",
@ -2044,6 +2146,8 @@
"The feasible configuration of cloud-init or cloudbase-init service in the image is not synced to image's properties, so the Login Name is unknown.": "The feasible configuration of cloud-init or cloudbase-init service in the image is not synced to image's properties, so the Login Name is unknown.",
"The file with the same name will be overwritten.": "The file with the same name will be overwritten.",
"The format of the certificate content is: by \"----BEGIN CERTIFICATE-----\" as the beginning,\"-----END CERTIFICATE----\" as the end, 64 characters per line, the last line does not exceed 64 characters, and there cannot be blank lines.": "The format of the certificate content is: by \"----BEGIN CERTIFICATE-----\" as the beginning,\"-----END CERTIFICATE----\" as the end, 64 characters per line, the last line does not exceed 64 characters, and there cannot be blank lines.",
"The http_proxy address to use for nodes in cluster": "The http_proxy address to use for nodes in cluster",
"The https_proxy address to use for nodes in cluster": "The https_proxy address to use for nodes in cluster",
"The instance architecture diagram mainly shows the overall architecture composition of the instance. If you need to view the network topology of the instance, please go to: ": "The instance architecture diagram mainly shows the overall architecture composition of the instance. If you need to view the network topology of the instance, please go to: ",
"The instance deleted immediately cannot be restored": "The instance deleted immediately cannot be restored",
"The instance is not shut down, unable to restore.": "The instance is not shut down, unable to restore.",
@ -2056,6 +2160,8 @@
"The maximum transmission unit (MTU) value to address fragmentation. Minimum value is 68 for IPv4, and 1280 for IPv6.": "The maximum transmission unit (MTU) value to address fragmentation. Minimum value is 68 for IPv4, and 1280 for IPv6.",
"The name cannot be modified after creation": "The name cannot be modified after creation",
"The name of the physical network to which a port is connected": "The name of the physical network to which a port is connected",
"The name should contain letter or number, the length is 1 to 16, characters can only contain \"0-9, a-z, A-Z, -, _.\"": "The name should contain letter or number, the length is 1 to 16, characters can only contain \"0-9, a-z, A-Z, -, _.\"",
"The name should contain letter or number, the length is 2 to 64, characters can only contain \"0-9, a-z, A-Z, -, _.\"": "The name should contain letter or number, the length is 2 to 64, characters can only contain \"0-9, a-z, A-Z, -, _.\"",
"The name should start with upper letter or lower letter, and be a string of 1 to 128, characters can only contain \"0-9, a-z, A-Z, \"-'_()[].:^\".": "The name should start with upper letter or lower letter, and be a string of 1 to 128, characters can only contain \"0-9, a-z, A-Z, \"-'_()[].:^\".",
"The name should start with upper letter, lower letter or chinese, and be a string of 1 to 128, characters can only contain \"0-9, a-z, A-Z, \"-'_()[].\".": "The name should start with upper letter, lower letter or chinese, and be a string of 1 to 128, characters can only contain \"0-9, a-z, A-Z, \"-'_()[].\".",
"The name should start with upper letter, lower letter or chinese, and be a string of 1 to 128, characters can only contain \"0-9, a-z, A-Z, \"-'_()[].:^\".": "The name should start with upper letter, lower letter or chinese, and be a string of 1 to 128, characters can only contain \"0-9, a-z, A-Z, \"-'_()[].:^\".",
@ -2066,6 +2172,7 @@
"The name should start with upper letter, lower letter, and be a string of 2 to 255, characters can only contain \"0-9, a-z, A-Z, -, ., _\".": "The name should start with upper letter, lower letter, and be a string of 2 to 255, characters can only contain \"0-9, a-z, A-Z, -, ., _\".",
"The name should start with upper letter, lower letter, and be a string of 3 to 63, characters can only contain \"0-9, a-z, A-Z, -\".": "The name should start with upper letter, lower letter, and be a string of 3 to 63, characters can only contain \"0-9, a-z, A-Z, -\".",
"The new password cannot be identical to the current password.": "The new password cannot be identical to the current password.",
"The no_proxy address to use for nodes in cluster": "The no_proxy address to use for nodes in cluster",
"The number of vCPU cores should not exceed the maximum number of CPU cores of the physical node. Otherwise it will cause fail to schedule to any physical node when creating instance.": "The number of vCPU cores should not exceed the maximum number of CPU cores of the physical node. Otherwise it will cause fail to schedule to any physical node when creating instance.",
"The password must not be the same as the previous": "The password must not be the same as the previous",
"The password must not be the same as the previous two": "The password must not be the same as the previous two",
@ -2075,6 +2182,7 @@
"The private key content format is: with \"-----BEGIN RSA PRIVATE KEY-----\" as the beginning,\"-----END RSA PRIVATE KEY-----\" as the end, 64 characters per line, the last line does not exceed 64 characters, and there cannot be blank lines.": "The private key content format is: with \"-----BEGIN RSA PRIVATE KEY-----\" as the beginning,\"-----END RSA PRIVATE KEY-----\" as the end, 64 characters per line, the last line does not exceed 64 characters, and there cannot be blank lines.",
"The private key of the certificate, the extension of the private key is \"key\", you can directly enter the content of the private key file or upload a private key that conforms to the format document.": "The private key of the certificate, the extension of the private key is \"key\", you can directly enter the content of the private key file or upload a private key that conforms to the format document.",
"The resource class of the scheduled node needs to correspond to the resource class name of the flavor used by the ironic instance (for example, the resource class name of the scheduling node is baremetal.with-GPU, and the custom resource class name of the flavor is CUSTOM_BAREMETAL_WITH_GPU=1).": "The resource class of the scheduled node needs to correspond to the resource class name of the flavor used by the ironic instance (for example, the resource class name of the scheduling node is baremetal.with-GPU, and the custom resource class name of the flavor is CUSTOM_BAREMETAL_WITH_GPU=1).",
"The root and os_admin are default users and cannot be created!": "The root and os_admin are default users and cannot be created!",
"The security group is similar to the firewall function and is used to set up network access control. ": "The security group is similar to the firewall function and is used to set up network access control. ",
"The security group is similar to the firewall function for setting up network access control, or you can go to the console and create a new security group. (Note: The security group you selected will work on all virtual LANS on the instances.)": "The security group is similar to the firewall function for setting up network access control, or you can go to the console and create a new security group. (Note: The security group you selected will work on all virtual LANS on the instances.)",
"The selected VPC/ subnet does not have IPv6 enabled.": "The selected VPC/ subnet does not have IPv6 enabled.",
@ -2187,6 +2295,7 @@
"Up": "Up",
"Update Access": "Update Access",
"Update At": "Update At",
"Update Cluster Template": "Update Cluster Template",
"Update Complete": "Update Complete",
"Update Failed": "Update Failed",
"Update In Progress": "Update In Progress",
@ -2207,6 +2316,7 @@
"Usage Type": "Usage Type",
"Usb Controller": "Usb Controller",
"Use Type": "Use Type",
"Use an Existing Network": "Use an Existing Network",
"Used": "Used",
"Used IPs": "Used IPs",
"Used Local Storage (GB)": "Used Local Storage (GB)",
@ -2282,6 +2392,7 @@
"Volume": "Volume",
"Volume Backup": "Volume Backup",
"Volume Detail": "Volume Detail",
"Volume Driver": "Volume Driver",
"Volume ID": "Volume ID",
"Volume ID/Name": "Volume ID/Name",
"Volume Info": "Volume Info",
@ -2356,6 +2467,8 @@
"certificate": "certificate",
"cidr": "CIDR",
"cinder services": "cinder services",
"clusters": "clusters",
"clustertemplates": "clustertemplates",
"compute hosts": "compute hosts",
"compute services": "compute services",
"configurations": "configurations",
@ -2470,6 +2583,7 @@
"jump to the console": "jump to the console",
"keypair": "keypair",
"keypairs": "keypairs",
"labels": "labels",
"list page": "list page",
"listener": "listener",
"listeners": "listeners",
@ -2488,6 +2602,8 @@
"networks": "networks",
"neutron agent": "neutron agent",
"neutron agents": "neutron agents",
"nginx": "nginx",
"octavia": "octavia",
"online resize": "online resize",
"open external gateway": "open external gateway",
"out": "out",
@ -2563,6 +2679,7 @@
"the vpn gateway is in use": "the vpn gateway is in use",
"time / 24h": "time / 24h",
"to delete": "to delete",
"traefik": "traefik",
"transmit": "transmit",
"unlock instance": "unlock instance",
"unpause instance": "unpause instance",

View File

@ -32,6 +32,7 @@
"AKI - Amazon kernel image format": "AKI - Amazon 内核图像格式",
"AMI - Amazon server image format": "AMI - Amazon 服务器图像格式",
"ANY": "任何",
"API Address": "API地址",
"ARI - Amazon ramdisk image format": "ARI - Amazon ramdisk 映像格式",
"ARM Architecture": "ARM架构",
"Abandon Stack": "废弃堆栈",
@ -45,6 +46,8 @@
"Access To": "访问",
"Access Type": "访问类型",
"Access Type Setting": "访问类型设置",
"Accessible on private network only": "只能在专用网络上访问",
"Accessible on the public internet": "可在公共互联网上访问",
"Action": "操作",
"Action Log": "操作日志",
"Active": "运行中",
@ -57,6 +60,7 @@
"Add Extra Info": "添加额外信息",
"Add Extra Spec": "添加额外规格",
"Add IP": "增加IP",
"Add Label": "添加标签",
"Add Member": "添加成员",
"Add Metadata": "添加元数据",
"Add NUMA Node": "添加NUMA节点",
@ -66,6 +70,7 @@
"Add Virtual LAN": "添加虚拟网卡",
"Add hosts to the aggregate or remove hosts from it. Hosts can be in multiple aggregates.": "增加主机到这个集合。主机可以加入多个集合。",
"Add network": "添加网络",
"Additional Labels": "附加标签",
"Additional routes announced to the instance, one entry per line(e.g. 192.168.200.0/24,10.56.1.254)": "云主机额外路由,每行一条(例如: 192.168.200.0/24,10.56.1.254)",
"Additional routes announced to the instance, one entry per line(e.g. {ip})": "云主机额外路由,每行一条(例如: {ip})",
"Admin": "管理员",
@ -162,10 +167,14 @@
"Auth Algorithm": "授权算法",
"Auth Key": "密钥",
"Auto": "自动",
"Auto Healing": "自动修复",
"Auto Inspect": "自动检测",
"Auto Scaling": "自动缩放",
"Auto allocate mac address": "自动分配MAC地址",
"Auto scaling feature will be enabled": "将启用自动缩放功能",
"Automatic backup": "自动备份",
"Automatically Assigned Address": "自动分配地址",
"Automatically repair unhealhty nodes": "自动修复不健康的节点",
"Availability Zone": "可用域",
"Availability Zone Hints": "预期可用域",
"Availability Zone Info": "可用域信息",
@ -252,8 +261,10 @@
"CA Certificate": "CA证书",
"CIDR": "网络地址",
"CIDR Format Error(e.g. 192.168.0.0/24, 2001:DB8::/48)": "CIDR格式错误192.168.0.0/24, 2001:DB8::/48",
"CIFS": "",
"CPU": "",
"CIFS": "CIFS",
"COE": "COE",
"COE Version": "COE版本",
"CPU": "CPU",
"CPU Arch": "CPU架构",
"CPU Cores": "CPU核数",
"CPU Policy": "CPU策略",
@ -303,8 +314,13 @@
"Checksum": "校验和",
"Chile": "智利",
"China": "中国大陆",
"Choose a External Network ID": "选择外部网络 ID",
"Choose a Network Driver": "选择网络驱动程序",
"Choose a Private Network ID": "选择专用网络 ID",
"Choose a Private Network at first": "首先选择一个专用网络",
"Choose a host to live migrate instance to. If not selected, the scheduler will auto select target host.": "选择计算节点来热迁移云主机,如果没有选择,调度器会自动选择目标计算节点。",
"Choose a host to migrate instance to. If not selected, the scheduler will auto select target host.": "选择计算节点来迁移云主机,如果没有选择,调度器会自动选择目标计算节点。",
"Choose an ingress controller": "选择入口控制器",
"Choosing a QoS policy can limit bandwidth and DSCP": "选择QoS策略可以限制带宽和DSCP",
"Christmas Island": "圣延岛",
"Cidr": "网段",
@ -325,6 +341,20 @@
"Close external gateway": "关闭公网网关",
"Cloud": "云",
"Cloud Platform": "云平台",
"Cluster API": "集群API",
"Cluster Advanced": "集群高级",
"Cluster Create Timeout": "集群创建超时",
"Cluster Detail": "集群详情",
"Cluster Distro": "集群发行版",
"Cluster Management": "集群管理",
"Cluster Name": "集群名称",
"Cluster Network": "集群网络",
"Cluster Size": "集群大小",
"Cluster Template": "集群模板",
"Cluster Template Detail": "集群模板详情",
"Cluster Template Name": "集群模板名称",
"Cluster Type": "集群类型",
"Clusters": "集群",
"Cocos (Keeling) Islands": "科科斯群岛",
"Code": "编码",
"Cold Migrate": "冷迁移",
@ -381,7 +411,10 @@
"Container": "容器集群",
"Container Detail": "容器详情",
"Container Format": "容器格式",
"Container Infra": "容器基础设施",
"Container Name": "容器名称",
"Container Orchestration Engine": "容器编排引擎",
"Container Version": "容器版本",
"Content": "内容",
"Content Type": "内容类型",
"Control Location": "控制端",
@ -401,12 +434,15 @@
"Create Bandwidth Limit Rule": "创建带宽限制规则",
"Create Bare Metal Node": "创建裸机节点",
"Create Certificate": "创建证书",
"Create Cluster": "创建集群",
"Create Cluster Template": "创建集群模板",
"Create Complete": "创建完成",
"Create Configurations": "创建配置",
"Create Container": "创建容器",
"Create DNAT Rule": "创建DNAT规则",
"Create DNAT rule": "创建DNAT规则",
"Create DSCP Marking Rule": "创建DSCP标记规则",
"Create Database": "创建数据库",
"Create Default Pool": "创建资源池",
"Create Domain": "创建域",
"Create Encryption": "创建加密",
@ -424,6 +460,7 @@
"Create Listener": "创建监听器",
"Create Loadbalancer": "创建负载均衡",
"Create Network": "创建网络",
"Create New Network": "创建新网络",
"Create Node": "注册节点",
"Create Port": "创建端口",
"Create Port Group": "创建端口组",
@ -483,6 +520,7 @@
"Current Flavor": "当前配置",
"Current Host": "当前主机",
"Current Interface": "当前接口",
"Current Master Flavor": "当前主类型",
"Current Password": "原密码",
"Current Path: ": "当前路径:",
"Current Project": "当前项目",
@ -504,13 +542,14 @@
"Cut File": "剪切文件",
"Cyprus": "塞浦路斯",
"Czech Republic": "捷克",
"DCCP": "",
"DC/OS": "DC/OS",
"DCCP": "DCCP",
"DEGRADED: One or more of the entitys components are in ERROR": "降级:一个或多个实体的组件都处于错误状态",
"DHCP": "",
"DHCP": "DHCP",
"DHCP Agents": "DHCP服务",
"DISK IOPS": "硬盘IOPS",
"DISK Usage(%)": "硬盘使用率(%)",
"DNS": "",
"DNS": "DNS",
"DNS Assignment": "DNS指派",
"DNS Name": "DNS名称",
"DPD Action": "DPD动作",
@ -547,6 +586,8 @@
"Delete Bandwidth Egress Rules": "删除带宽出方向限制",
"Delete Bandwidth Ingress Rules": "删除带宽入方向限制",
"Delete Certificate": "删除证书",
"Delete Clusters": "删除集群",
"Delete Clusters Templates": "删除集群模板",
"Delete Complete": "删除完成",
"Delete Configuration": "删除配置",
"Delete Container": "删除容器",
@ -594,6 +635,7 @@
"Delete Snapshot": "删除快照",
"Delete Static Route": "删除静态路由",
"Delete Subnet": "删除子网",
"Delete Template": "删除模板",
"Delete User": "删除用户",
"Delete VPN": "删除VPN",
"Delete VPN EndPoint Groups": "删除VPN端点组",
@ -640,6 +682,7 @@
"Disable Compute Service": "禁用计算服务",
"Disable Gateway": "禁用网关",
"Disable Neutron Agent": "禁用网络服务",
"Disable TLS": "禁用TLS",
"Disable compute host": "禁用计算节点",
"Disabled": "已关闭",
"Disabling port security will turn off the security group policy protection and anti-spoofing protection on the port. General applicable scenarios: NFV or operation and maintenance Debug.": "禁用端口安全会关闭该端口上的安全组策略保护和anti-spoofing保护。一般的适用场景NFV或者运维Debug",
@ -648,6 +691,7 @@
"Disassociate Floating IP": "解绑浮动IP",
"Disassociate Floating Ip": "解绑浮动IP",
"Disconnect Subnet": "断开子网",
"Discovery URL": "发现网址",
"Disk": "硬盘",
"Disk Format": "硬盘格式",
"Disk Info": "硬盘信息",
@ -659,6 +703,11 @@
"Do HH:mm": "",
"Do not reset the normally mounted volume to the \"available\"、\"maintenance\" or \"error\" status. The reset state does not remove the volume from the instance. If you need to remove the volume from the instance, please go to the console of the corresponding project and use the \"detach\" operation.": "请勿将正常的挂载中的云硬盘重置为“可用”、“维护”或”错误“状态。重置状态并不会将云硬盘从云主机上卸载下来。如果您需要将云硬盘从云主机上移除,请进入相应项目的控制台使用“解绑”操作。",
"Do not set with a backend": "不设置后端",
"Docker Storage Driver": "Docker存储驱动程序",
"Docker Swarm": "Docker集群",
"Docker Swarm Mode": "Docker集群模式",
"Docker Volume Size": "Docker硬盘大小",
"Docker Volume Size (GB)": "Docker硬盘大小(GB)",
"Domain": "域",
"Domain Detail": "域详情",
"Domain Edit": "编辑域",
@ -740,13 +789,17 @@
"Enable Compute Service": "启用计算服务",
"Enable Domain": "启用域",
"Enable HealthMonitor": "启用健康检查",
"Enable Load Balancer": "启用负载均衡",
"Enable Neutron Agent": "启用网络服务",
"Enable Project": "启用项目",
"Enable QoS Policy": "启用QoS策略",
"Enable Registry": "启用注册表",
"Enable Service": "启用服务",
"Enable User": "启用用户",
"Enable compute host": "启用计算节点",
"Enabled": "启用",
"Enabled Load Balancer for Master Nodes": "主节点开启负载均衡",
"Enabled Network": "打开网络",
"Encapsulation Mode": "封装模式",
"Encrypted": "加密的",
"Encryption": "加密",
@ -794,13 +847,14 @@
"External IP(V4)": "外网IP(V4)",
"External IP(V6)": "外网IP(V6)",
"External Network": "外部网络",
"External Network ID": "外部网络ID",
"External Network Info": "外部网络信息",
"External Port": "源端口",
"Extra Infos": "额外信息",
"Extra Spec": "额外规格",
"Extra Specs": "额外规格",
"FAKE": "",
"FLAT": "",
"FAKE": "FAKE",
"FLAT": "FLAT",
"Fail Rollback": "失败回滚",
"Failed": "失败",
"Falkland Islands (Malvinas)": "福克兰群岛",
@ -821,13 +875,19 @@
"Fixed IP": "内网IP",
"Fixed IP Address": "内网IP地址",
"Fixed IPs": "内网IP",
"Fixed Network": "内网",
"Fixed Subnet": "内网子网",
"Flavor": "云主机类型",
"Flavor Detail": "云主机类型详情",
"Flavor ID": "云主机类型ID",
"Flavor Info": "配置信息",
"Flavor Name": "云主机类型名称",
"Flavor of Master Nodes": "主节点的云主机类型",
"Flavor of Worker Nodes": "工作节点的云主机类型",
"Flavors": "云主机类型",
"Floating IP": "浮动IP",
"Floating IP Address": "浮动IP地址",
"Floating IP Enabled": "启用浮动IP",
"Floating IPs": "浮动IP",
"Floating Ip": "浮动IP",
"Floating Ip Address": "浮动IP地址",
@ -898,23 +958,28 @@
"Guinea": "几内亚",
"Guinea Bissau": "几内亚比绍",
"Guyana": "圭亚那",
"HDFS": "",
"HDFS": "HDFS",
"HTTP Proxy": "HTTP代理",
"HTTP Version not supported (code: 505) ": "",
"HTTPS Proxy": "HTTPS代理",
"Haiti": "海地",
"Hard Reboot": "硬重启",
"Hard Rebooting": "硬重启中",
"Hash": "",
"Hash": "Hash",
"Health Monitor Delay": "检查间隔(秒)",
"Health Monitor Detail": "健康检查器详情",
"Health Monitor Max Retries": "最大重试次数",
"Health Monitor Name": "名称",
"Health Monitor Timeout": "检查超时时间(秒)",
"Health Monitor Type": "健康检查器类型",
"Health Status": "健康状况",
"Health Status Reason": "健康状况原因",
"HealthMonitor": "健康检查器",
"HealthMonitor Type": "健康检查类型",
"Healthy": "健康",
"Heartbeat Timestamp": "心跳时间戳",
"Heterogeneous Computing": "异构计算",
"Hidden": "隐藏",
"Hide Advanced Options": "隐藏高级选项",
"High Clock Speed": "高主频型",
"Home": "首页",
@ -999,6 +1064,7 @@
"Image & OS": "镜像和操作系统",
"Image Backup": "镜像备份",
"Image Detail": "镜像详情",
"Image ID": "镜像ID",
"Image Info": "镜像信息",
"Image Name": "镜像名称",
"Image Pending Upload": "",
@ -1028,7 +1094,10 @@
"Indicates whether this VPN can only respond to connections or both respond to and initiate connections.": "指示此VPN是仅响应连接还是同时响应和发起连接。",
"Indonesia": "印度尼西亚",
"Infinity": "无限制",
"Info": "信息",
"Info *": "信息 *",
"Ingress": "入口",
"Ingress Controller": "入口控制器",
"Init Complete": "初始化完成",
"Init Failed": "初始化失败",
"Init In Progress": "正在初始化",
@ -1039,6 +1108,7 @@
"Initiator Mode": "发起模式",
"Input destination port or port range(example: 80 or 80:160)": "目的端口或端口范围例如80 或 80:160",
"Input source port or port range(example: 80 or 80:160)": "源端口或源端口范围(例如: 80 或 80:160)",
"Insecure Registry": "不安全的注册表",
"Inspect Failed": "检查失败",
"Inspecting": "检查",
"Instance": "云主机",
@ -1150,10 +1220,12 @@
"Keypair Info": "密钥信息",
"Keystone token is expired.": "token已过期请检查服务器时间是否正确确认token是否有效",
"Killed": "终止",
"Kubernetes": "Kubernetes",
"Kuwait": "科威特",
"Kyrgyzstan": "吉尔吉斯",
"LB Algorithm": "算法",
"LEAST_CONNECTIONS": "最少连接",
"Labels": "标签",
"Lao People's Democratic Republic": "老挝",
"Large": "大",
"Large(Optimal performance)": "大(性能最优)",
@ -1251,6 +1323,12 @@
"Manually Specify": "手动指定",
"Marshall Islands": "马绍尔群岛",
"Martinique": "马提尼克岛",
"Master Addresses": "主地址",
"Master Count": "主数量",
"Master Flavor": "主类型",
"Master Flavor ID": "主类型ID",
"Master LB": "主LB",
"Master LB Enabled": "主LB启用",
"Mauritania": "毛里塔尼亚",
"Mauritius": "毛里求斯",
"Max Avail": "最大可用量",
@ -1273,6 +1351,7 @@
"Memory Page Size": "内存页大小",
"Memory Usage": "内存使用量",
"Memory usage Num (GB)": "内存用量 (GB)",
"Mesos": "Mesos",
"Message": "消息",
"Message Details": "消息详情",
"Message Queue Service": "消息队列服务",
@ -1294,6 +1373,7 @@
"Min. Disk": "最小硬盘大小",
"Min. RAM": "最小内存",
"Minimum value is 68 for IPv4, and 1280 for IPv6.": "对于IPv4最小值是68对于IPv6最小值是1280。",
"Miscellaneous": "Miscellaneous",
"Missing IP Address": "缺少IP地址",
"Missing Port": "未填写端口号",
"Missing Subnet": "未填写子网",
@ -1335,6 +1415,7 @@
"Network": "网络",
"Network Config": "网络配置",
"Network Detail": "网络详情",
"Network Driver": "网络驱动程序",
"Network Dropped Packets": "网络丢包率",
"Network Errors": "网络错误",
"Network ID": "网络ID",
@ -1369,16 +1450,23 @@
"No": "否",
"No Console": "",
"No Monitor": "无监控",
"No Proxy": "无代理",
"No Raid": "",
"No State": "无状态",
"No Task": "空闲",
"No Vender": "",
"Node": "节点",
"Node Addresses": "节点地址",
"Node Count": "节点数量",
"Node Driver": "节点驱动",
"Node Flavor ID": "节点类型ID",
"Node ID/Name": "节点ID/名称",
"Node Info": "节点信息",
"Node Name": "节点名称",
"Node Num": "节点总数",
"Node Spec": "节点规格",
"Node Spec *": "节点规格 *",
"Nodes": "节点",
"Norfolk Island": "诺福克岛",
"Normal": "正常",
"North Korea": "朝鲜",
@ -1398,8 +1486,10 @@
"Nova Service": "计算服务",
"Number Of Ports": "端口数量",
"Number of GPU": "GPU数量",
"Number of Master Nodes": "主节点数",
"Number of Nodes": "节点数量",
"Number of Usb Controller": "USB控制器数量",
"Number of Worker Nodes": "工作节点数",
"OK": "",
"OS": "操作系统",
"OS Admin": "镜像默认用户",
@ -1443,6 +1533,8 @@
"Out of Sync": "不同步",
"Outputs": "输出",
"Overlapping allocation pools: {pools}": "重叠的分配地址池: {pools}",
"Overlay": "覆盖",
"Overlay2": "覆盖2",
"Owned Network": "所属网络",
"Owned Network ID": "所属网络ID",
"Owned Project": "所属项目",
@ -1701,6 +1793,7 @@
"Recovering": "恢复中",
"Recycle Bin": "回收站",
"Region": "域",
"Registry Enabled": "启用注册表",
"Related Resources": "关联资源",
"Release": "释放",
"Release Fixed IP": "释放内网IP",
@ -1726,6 +1819,7 @@
"Reset To Initial Value": "重置为初始值",
"Reset failed, please retry": "重置失败,请重试",
"Resize": "修改配置",
"Resize Cluster": "调整集群大小",
"Resize Instance": "修改配置",
"Resized": "已修改配置",
"Resizing or Migrating": "正在修改配置/迁移",
@ -1827,7 +1921,8 @@
"Server Group": "云主机组",
"Server Group Detail": "云主机组详情",
"Server Group Member": "云主机组成员",
"Server Status": "",
"Server Status": "服务状态",
"Server Type": "服务类型",
"Service": "服务",
"Service Port ID": "服务端口ID",
"Service State": "服务状态",
@ -1891,6 +1986,7 @@
"Size": "容量",
"Size (GB)": "容量 (GB)",
"Size of image to launch": "启动的镜像大小",
"Size: *": "容量 *",
"Slovakia (Slovak Republic)": "斯洛伐克",
"Slovenia": "斯洛文尼亚",
"Slow Query": "",
@ -1928,8 +2024,11 @@
"Specify whether future replicated instances will be created on the same hypervisor (affinity) or on different hypervisors (anti-affinity). This value is ignored if the instance to be launched is a replica.": "指定未来的复制实例是在相同的管理程序(亲和)上创建还是在不同的管理程序(反亲和)上创建。如果要启动的实例是副本,则忽略此值。",
"Specs": "规格",
"Sri Lanka": "斯里兰卡",
"Stack": "堆栈",
"Stack Detail": "Stack堆栈详情",
"Stack Events": "部署日志",
"Stack Faults": "堆栈故障",
"Stack ID": "堆栈ID",
"Stack Name": "堆栈名称",
"Stack Resource": "堆栈资源",
"Stack Resource Type": "堆栈资源类型",
@ -1950,7 +2049,8 @@
"State": "状态",
"Static Routes": "静态路由",
"Status": "状态",
"Status Code": "",
"Status Code": "状态码",
"Status Reason": "状态原因",
"Stop": "关闭",
"Stop Instance": "关闭云主机",
"Stop auto refreshing data": "关闭自动刷新数据",
@ -2009,6 +2109,7 @@
"System is error, please try again later.": "系统出错,请稍后再试。",
"TCP": "",
"TCP Connections": "TCP连接数",
"TLS Disabled": "TLS禁用",
"Tag is no longer than 60 characters": "标签名长度不超过60个字符",
"Tags": "标签",
"Tags Info": "标签信息",
@ -2025,6 +2126,7 @@
"Template Name": "模板名称",
"Thailand": "泰国",
"That is, after how many consecutive failures of the health check, the health check status of the back-end cloud server is changed from normal to abnormal": "即健康检查连续失败多少次后,将后端云服务器的健康检查状态由正常改为不正常",
"The DNS nameserver to use for this cluster template": "用于此集群模板的 DNS 名称服务器",
"The Federation of Saint Kitts and Nevis": "圣基茨和尼维斯",
"The Provider is the encryption provider format (e.g. \"luks\")": "提供者是提供者加密格式(例如\"luks\"",
"The Republic of Macedonia": "马其顿",
@ -2044,6 +2146,8 @@
"The feasible configuration of cloud-init or cloudbase-init service in the image is not synced to image's properties, so the Login Name is unknown.": "镜像中的cloud-init或cloudbase-init服务的预制配置未同步至镜像属性, 登录名未知",
"The file with the same name will be overwritten.": "对同名文件将会进行文件覆盖操作。",
"The format of the certificate content is: by \"----BEGIN CERTIFICATE-----\" as the beginning,\"-----END CERTIFICATE----\" as the end, 64 characters per line, the last line does not exceed 64 characters, and there cannot be blank lines.": "证书内容格式为:以”-----BEGIN CERTIFICATE-----”作为开头,以“-----END CERTIFICATE----”作为结尾每行64字符最后一行不超过64字符不能有空行。",
"The http_proxy address to use for nodes in cluster": "用于集群中节点的 http_proxy 地址",
"The https_proxy address to use for nodes in cluster": "用于集群中节点的 https_proxy 地址",
"The instance architecture diagram mainly shows the overall architecture composition of the instance. If you need to view the network topology of the instance, please go to: ": "云主机架构图主要展示云主机的总体架构组成。如果需要查看云主机的网络拓扑,请转到:",
"The instance deleted immediately cannot be restored": "立即删除的云主机无法恢复",
"The instance is not shut down, unable to restore.": "云主机不处于关机状态,不支持恢复备份操作。",
@ -2056,6 +2160,8 @@
"The maximum transmission unit (MTU) value to address fragmentation. Minimum value is 68 for IPv4, and 1280 for IPv6.": "地址片段的最大传输单位。IPv4最小68IPv6最小1280。",
"The name cannot be modified after creation": "名称创建后不可修改",
"The name of the physical network to which a port is connected": "端口连接到的物理网络的名称",
"The name should contain letter or number, the length is 1 to 16, characters can only contain \"0-9, a-z, A-Z, -, _.\"": "名称应包含字母或数字,长度为 1 到 16且字符只能包含“0-9、a-z、A-Z、-、_”。",
"The name should contain letter or number, the length is 2 to 64, characters can only contain \"0-9, a-z, A-Z, -, _.\"": "名称应包含字母或数字,长度为 2 到 64且字符只能包含“0-9、a-z、A-Z、-、_”。",
"The name should start with upper letter or lower letter, and be a string of 1 to 128, characters can only contain \"0-9, a-z, A-Z, \"-'_()[].:^\".": "名称应以大写字母或小写字母开头最长为128字符且只包含“0-9, a-z, A-Z, \"'-_()[].:^”。",
"The name should start with upper letter, lower letter or chinese, and be a string of 1 to 128, characters can only contain \"0-9, a-z, A-Z, \"-'_()[].\".": "名称应以大写字母小写字母或中文开头最长为128字符且只包含“0-9, a-z, A-Z, \"'-_()[].”。",
"The name should start with upper letter, lower letter or chinese, and be a string of 1 to 128, characters can only contain \"0-9, a-z, A-Z, \"-'_()[].:^\".": "名称应以大写字母小写字母或中文开头最长为128字符且只包含“0-9, a-z, A-Z, \"'-_()[].:^”。",
@ -2066,6 +2172,7 @@
"The name should start with upper letter, lower letter, and be a string of 2 to 255, characters can only contain \"0-9, a-z, A-Z, -, ., _\".": "名称应以大写字母或小写字母开头最长为255字符且只包含“0-9, a-z, A-Z, -, ., _”。",
"The name should start with upper letter, lower letter, and be a string of 3 to 63, characters can only contain \"0-9, a-z, A-Z, -\".": "名称应以大写字母小写字母开头长度为3-63字符且只包含“0-9, a-z, A-Z, -”。",
"The new password cannot be identical to the current password.": "用户新密码不能与原密码相同。",
"The no_proxy address to use for nodes in cluster": "用于集群中节点的 no_proxy 地址",
"The number of vCPU cores should not exceed the maximum number of CPU cores of the physical node. Otherwise it will cause fail to schedule to any physical node when creating instance.": "vCPU核数不应该超过物理节点的最大CPU核数否则会导致云主机创建时无法调度到任何物理节点。",
"The password must not be the same as the previous": "新密码不能与以前的密码相同",
"The password must not be the same as the previous two": "用户新密码不能与重置前的密码一致",
@ -2075,6 +2182,7 @@
"The private key content format is: with \"-----BEGIN RSA PRIVATE KEY-----\" as the beginning,\"-----END RSA PRIVATE KEY-----\" as the end, 64 characters per line, the last line does not exceed 64 characters, and there cannot be blank lines.": "私钥内容格式为:以“-----BEGIN RSA PRIVATE KEY-----”,以“-----END RSA PRIVATE KEY-----”作为结尾每行64字符最后一行不超过64字符不能有空行。",
"The private key of the certificate, the extension of the private key is \"key\", you can directly enter the content of the private key file or upload a private key that conforms to the format document.": "证书的私钥私钥扩展名为”key”您可直接输入私钥文件内容或上传符合格式的私钥文件。",
"The resource class of the scheduled node needs to correspond to the resource class name of the flavor used by the ironic instance (for example, the resource class name of the scheduling node is baremetal.with-GPU, and the custom resource class name of the flavor is CUSTOM_BAREMETAL_WITH_GPU=1).": "被调度节点的资源类需要与裸机实例使用的云主机类型的资源类名称对应(比如:调度节点的资源类名称为 baremetal.with-GPU云主机类型的资源类名称为CUSTOM_BAREMETAL_WITH_GPU=1 )。",
"The root and os_admin are default users and cannot be created!": "root 和 os_admin 是默认用户,不能创建!",
"The security group is similar to the firewall function and is used to set up network access control. ": "安全组类似防火墙功能,用于设置网络访问控制。",
"The security group is similar to the firewall function for setting up network access control, or you can go to the console and create a new security group. (Note: The security group you selected will work on all virtual LANS on the instances.)": "安全组类似防火墙功能,用于设置网络访问控制,您也可以前往控制台新建安全组。(注:您所选的安全组将作用于云主机的全部虚拟网卡。)",
"The selected VPC/ subnet does not have IPv6 enabled.": "所选的VPC/子网未开通IPv6",
@ -2187,6 +2295,7 @@
"Up": "正常",
"Update Access": "访问控制",
"Update At": "更新于",
"Update Cluster Template": "更新集群模板",
"Update Complete": "更新完成",
"Update Failed": "更新失败",
"Update In Progress": "正在更新",
@ -2207,6 +2316,7 @@
"Usage Type": "使用类型",
"Usb Controller": "USB控制器",
"Use Type": "使用类型",
"Use an Existing Network": "使用现有网络",
"Used": "已使用",
"Used IPs": "已用IP",
"Used Local Storage (GB)": "已使用本地存储(GB)",
@ -2282,6 +2392,7 @@
"Volume": "云硬盘",
"Volume Backup": "云硬盘备份",
"Volume Detail": "云硬盘详情",
"Volume Driver": "云硬盘驱动",
"Volume ID": "云硬盘ID",
"Volume ID/Name": "云硬盘ID/名称",
"Volume Info": "云硬盘信息",
@ -2356,6 +2467,8 @@
"certificate": "证书",
"cidr": "CIDR",
"cinder services": "存储服务",
"clusters": "集群",
"clustertemplates": "集群模板",
"compute hosts": "计算节点",
"compute services": "计算服务",
"configurations": "配置",
@ -2470,6 +2583,7 @@
"jump to the console": "跳转到控制台",
"keypair": "密钥",
"keypairs": "密钥",
"labels": "标签",
"list page": "列表页",
"listener": "监听器",
"listeners": "监听器",
@ -2488,6 +2602,8 @@
"networks": "网络",
"neutron agent": "网络服务",
"neutron agents": "网络服务",
"nginx": "nginx",
"octavia": "octavia",
"online resize": "在线修改配置",
"open external gateway": "开启公网网关",
"out": "出",
@ -2563,6 +2679,7 @@
"the vpn gateway is in use": "VPN网关正在使用中",
"time / 24h": "次/24小时",
"to delete": "即将删除",
"traefik": "traefik",
"transmit": "发送",
"unlock instance": "解锁云主机",
"unpause instance": "恢复云主机",

View File

@ -13,8 +13,17 @@
// limitations under the License.
import DeleteDatabase from './DatabaseDelete';
import CreateDatabase from './DatabaseCreate';
const actionConfigs = {
rowActions: {
firstAction: DeleteDatabase,
},
batchActions: [DeleteDatabase],
primaryActions: [CreateDatabase],
};
const actionConfigsAdmin = {
rowActions: {
firstAction: DeleteDatabase,
},
@ -22,4 +31,4 @@ const actionConfigs = {
primaryActions: [],
};
export default actionConfigs;
export default { actionConfigs, actionConfigsAdmin };

View File

@ -0,0 +1,65 @@
// Copyright 2021 99cloud
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
import { inject, observer } from 'mobx-react';
import ModalAction from 'containers/Action/ModalAction';
import globalInstancesDatabases from 'stores/trove/instances-database';
export class DatabaseCreate extends ModalAction {
init() {
this.store = globalInstancesDatabases;
}
static id = 'create-database';
static title = t('Create Database');
get name() {
return t('Create Database');
}
static policy = 'trove:instance:extension:database:create';
static allowed() {
return Promise.resolve(true);
}
get formItems() {
return [
{
name: 'databaseName',
label: t('Name'),
type: 'input-name',
required: true,
isDatabaseName: true,
maxLength: 64,
},
];
}
onSubmit = (values) => {
const { id } = this.item;
return this.store.create(id, {
databases: [
{
character_set: 'utf8',
collate: 'utf8_general_ci',
name: values.databaseName,
},
],
});
};
}
export default inject('rootStore')(observer(DatabaseCreate));

View File

@ -22,6 +22,10 @@ export class Databases extends Base {
this.store = new InstancesDatabasesStore();
}
get rowKey() {
return 'name';
}
get name() {
return 'Databases';
}
@ -31,7 +35,10 @@ export class Databases extends Base {
}
get actionConfigs() {
return actions;
if (this.isAdminPage) {
return actions.actionConfigsAdmin;
}
return actions.actionConfigs;
}
get hideCustom() {

View File

@ -13,8 +13,17 @@
// limitations under the License.
import DeleteUser from './UserDelete';
import CreateUser from './UserCreate';
const actionConfigs = {
rowActions: {
firstAction: DeleteUser,
},
batchActions: [DeleteUser],
primaryActions: [CreateUser],
};
const actionConfigsAdmin = {
rowActions: {
firstAction: DeleteUser,
},
@ -22,4 +31,4 @@ const actionConfigs = {
primaryActions: [],
};
export default actionConfigs;
export default { actionConfigs, actionConfigsAdmin };

View File

@ -0,0 +1,105 @@
// Copyright 2021 99cloud
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
import { inject, observer } from 'mobx-react';
import ModalAction from 'containers/Action/ModalAction';
import globalInstancesUsersStore from 'stores/trove/instances-user';
import { InstancesDatabasesStore } from 'stores/trove/instances-database';
import { getPasswordOtherRule } from 'utils/validate';
export class UserCreate extends ModalAction {
async init() {
this.store = globalInstancesUsersStore;
this.databaseStore = new InstancesDatabasesStore();
await this.fetchDatabase();
}
static id = 'create-user';
static title = t('Create User');
get name() {
return t('Create User');
}
static policy = 'trove:instance:extension:user:create';
static allowed() {
return Promise.resolve(true);
}
fetchDatabase() {
const { id } = this.item;
this.databaseStore.fetchList({ id });
}
get database() {
return (this.databaseStore.list.data || []).map((it) => ({
label: it.name,
value: it.name,
key: it.name,
}));
}
get formItems() {
return [
{
name: 'userName',
label: t('Name'),
type: 'input-name',
required: true,
isDatabaseUserName: true,
maxLength: 16,
},
{
name: 'database',
label: t('Database'),
type: 'select',
options: this.database,
mode: 'multiple',
required: true,
},
{
name: 'password',
label: t('Password'),
type: 'input-password',
required: true,
otherRule: getPasswordOtherRule('password'),
},
{
name: 'confirmPassword',
label: t('Confirm Password'),
type: 'input-password',
required: true,
dependencies: ['password'],
otherRule: getPasswordOtherRule('confirmPassword'),
},
];
}
onSubmit = (values) => {
const { id } = this.item;
return this.store.create(id, {
users: [
{
databases: values.database.map((it) => ({ name: it })),
name: values.userName,
password: values.password,
},
],
});
};
}
export default inject('rootStore')(observer(UserCreate));

View File

@ -15,7 +15,6 @@
import Base from 'containers/List';
import { inject, observer } from 'mobx-react';
import { InstancesUsersStore } from 'stores/trove/instances-user';
import { get as _get } from 'lodash';
import actions from './UserAction';
export class Users extends Base {
@ -23,12 +22,19 @@ export class Users extends Base {
this.store = new InstancesUsersStore();
}
get rowKey() {
return 'name';
}
get name() {
return t('Users');
}
get actionConfigs() {
return actions;
if (this.isAdminPage) {
return actions.actionConfigsAdmin;
}
return actions.actionConfigs;
}
get policy() {
@ -52,7 +58,6 @@ export class Users extends Base {
{
title: t('Databases'),
dataIndex: 'databases',
render: (value) => _get(value, 'name', '-'),
},
];
};

View File

@ -14,6 +14,7 @@
import { inject, observer } from 'mobx-react';
import Base from 'components/Form';
import { getPasswordOtherRule } from 'utils/validate';
export class StepInitializeDatabases extends Base {
get title() {
@ -46,20 +47,33 @@ export class StepInitializeDatabases extends Base {
{
name: 'initialDatabases',
label: t('Initial Databases'),
type: 'input',
type: 'input-name',
required: true,
maxLength: 64,
isDatabaseName: true,
},
{
name: 'initialAdminUser',
label: t('Initial Admin User'),
type: 'input',
type: 'input-name',
required: true,
maxLength: 16,
isDatabaseUserName: true,
},
{
name: 'password',
label: t('Password'),
type: 'input-password',
required: true,
otherRule: getPasswordOtherRule('password'),
},
{
name: 'confirmPassword',
label: t('Confirm Password'),
type: 'input-password',
required: true,
dependencies: ['password'],
otherRule: getPasswordOtherRule('confirmPassword'),
},
];
}

View File

@ -36,6 +36,11 @@ export class InstancesDatabasesStore extends Base {
};
}
@action
async create(id, body) {
return this.submitting(this.client.create(id, body));
}
@action
async deleteDatabase({ id, name }) {
return this.submitting(this.client.delete(id, name));

View File

@ -36,6 +36,19 @@ export class InstancesUsersStore extends Base {
};
}
listDidFetch(items) {
if (items.length === 0) return items;
return items.map((it) => ({
...it,
databases: (it.databases || []).map((db) => db.name).join(' , ') || '-',
}));
}
@action
async create(id, body) {
return this.submitting(this.client.create(id, body));
}
@action
async deleteUser({ id, name }) {
return this.submitting(this.client.delete(id, name));

View File

@ -52,6 +52,8 @@ const swiftFileNameRegex =
/^[A-Za-z\u4e00-\u9fa5]+[A-Za-z\u4e00-\u9fa5\d-.]{2,62}$/;
const domainRegex =
/^[a-zA-Z0-9]([-a-zA-Z0-9]{0,62}[a-zA-Z0-9])?(\.[a-zA-Z0-9]([-a-zA-Z0-9]{0,62}[a-zA-Z0-9])?)*$/;
const databaseNameRegex = /^(?=.*[0-9a-zA-Z])[-_0-9a-zA-Z]{2,64}$/;
const databaseUserRegex = /^(?=.*[0-9a-zA-Z])[-_0-9a-zA-Z]{1,16}$/;
export const regex = {
cidr,
@ -81,6 +83,20 @@ export const isDomain = (value) => {
return false;
};
export const isDatabaseName = (value) => {
if (value && isString(value)) {
return databaseNameRegex.test(value);
}
return false;
};
export const isDatabaseUserName = (value) => {
if (value && isString(value)) {
return databaseUserRegex.test(value);
}
return false;
};
export const isPhoneNumber = (value) => isValidPhoneNumber(value);
export const isEmailNumber = (value) => emailRegex.test(value);
@ -329,6 +345,14 @@ const instanceNameMessage = t(
'The name should start with upper letter, lower letter or chinese, and be a string of 1 to 128, characters can only contain "0-9, a-z, A-Z, "-\'_.".'
);
const databaseNameMessage = t(
'The name should contain letter or number, the length is 2 to 64, characters can only contain "0-9, a-z, A-Z, -, _."'
);
const databaseUserNameMessage = t(
'The name should contain letter or number, the length is 1 to 16, characters can only contain "0-9, a-z, A-Z, -, _."'
);
export const nameMessageInfo = {
nameMessage,
nameMessageWithoutChinese,
@ -339,6 +363,8 @@ export const nameMessageInfo = {
imageNameMessage,
instanceNameMessage,
swiftFilenameMessage,
databaseNameMessage,
databaseUserNameMessage,
};
export const portMessage = t('Enter an integer value between 1 and 65535.');
@ -357,6 +383,33 @@ export const macAddressMessage = t(
const asciiMessage = t('Please enter a valid ASCII code');
export const databaseNameValidate = (rule, value) => {
if (!rule.required && value === undefined) {
return Promise.resolve(true);
}
if (isDatabaseName(value)) {
return Promise.resolve(true);
}
return Promise.reject(new Error(`${t('Invalid: ')}${databaseNameMessage}`));
};
export const databaseUserNameValidate = (rule, value) => {
if (!rule.required && value === undefined) {
return Promise.resolve(true);
}
if (['os_admin', 'root'].includes(value)) {
return Promise.reject(
t('The root and os_admin are default users and cannot be created!')
);
}
if (isDatabaseUserName(value)) {
return Promise.resolve(true);
}
return Promise.reject(
new Error(`${t('Invalid: ')}${databaseUserNameMessage}`)
);
};
export const phoneNumberValidate = (rule, value) => {
if (!rule.required && !value) {
return Promise.resolve(true);
@ -481,6 +534,8 @@ export const nameTypeValidate = {
imageNameValidate,
instanceNameValidate,
swiftFileNameValidate,
databaseNameValidate,
databaseUserNameValidate,
};
export const cidrAllValidate = (rule, value) => {