feature: Add other service monitor page

add other service monitor page

Change-Id: I1e17919d8d93bf5b46e8f399f1128addf3fbbd6c
This commit is contained in:
zhuyue 2021-11-29 15:43:14 +08:00
parent 7b27ee3445
commit b4e1789027
14 changed files with 1138 additions and 22 deletions

View File

@ -625,6 +625,14 @@ const renderMenu = (t) => {
children: [], children: [],
hasBreadcrumb: true, hasBreadcrumb: true,
}, },
{
path: '/monitor-center/other-service-admin',
name: t('Other Service'),
key: 'monitorOtherServiceAdmin',
level: 1,
children: [],
hasBreadcrumb: true,
},
], ],
}, },
{ {

View File

@ -108,6 +108,7 @@
"Any(Random)": "Any(Random)", "Any(Random)": "Any(Random)",
"Application Credentials": "Application Credentials", "Application Credentials": "Application Credentials",
"Application Template": "Application Template", "Application Template": "Application Template",
"Apply Latency(ms)": "Apply Latency(ms)",
"Applying": "Applying", "Applying": "Applying",
"Arch": "Arch", "Arch": "Arch",
"Architecture": "Architecture", "Architecture": "Architecture",
@ -161,6 +162,9 @@
"Availability zone refers to a physical area where power and network are independent of each other in the same area. In the same region, the availability zone and the availability zone can communicate with each other in the intranet, and the available zones can achieve fault isolation.": "Availability zone refers to a physical area where power and network are independent of each other in the same area. In the same region, the availability zone and the availability zone can communicate with each other in the intranet, and the available zones can achieve fault isolation.", "Availability zone refers to a physical area where power and network are independent of each other in the same area. In the same region, the availability zone and the availability zone can communicate with each other in the intranet, and the available zones can achieve fault isolation.": "Availability zone refers to a physical area where power and network are independent of each other in the same area. In the same region, the availability zone and the availability zone can communicate with each other in the intranet, and the available zones can achieve fault isolation.",
"Available": "Available", "Available": "Available",
"Available Zone": "Available Zone", "Available Zone": "Available Zone",
"Average OSD Apply Latency(ms)": "Average OSD Apply Latency(ms)",
"Average OSD Commit Latency(ms)": "Average OSD Commit Latency(ms)",
"Average PGs per OSD": "Average PGs per OSD",
"Awaiting Transfer": "Awaiting Transfer", "Awaiting Transfer": "Awaiting Transfer",
"Azerbaijan": "Azerbaijan", "Azerbaijan": "Azerbaijan",
"Back": "Back", "Back": "Back",
@ -238,8 +242,10 @@
"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)", "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)",
"CPU": "CPU", "CPU": "CPU",
"CPU Arch": "CPU Arch", "CPU Arch": "CPU Arch",
"CPU Cores": "CPU Cores",
"CPU Policy": "CPU Policy", "CPU Policy": "CPU Policy",
"CPU Thread Policy": "CPU Thread Policy", "CPU Thread Policy": "CPU Thread Policy",
"CPU Usage(%)": "CPU Usage(%)",
"CPU usage Num (Core)": "CPU usage Num (Core)", "CPU usage Num (Core)": "CPU usage Num (Core)",
"CPU value is { cpu }, NUMA CPU value is { totalCpu }, need to be equal. ": "CPU value is { cpu }, NUMA CPU value is { totalCpu }, need to be equal. ", "CPU value is { cpu }, NUMA CPU value is { totalCpu }, need to be equal. ": "CPU value is { cpu }, NUMA CPU value is { totalCpu }, need to be equal. ",
"CPU(Core)": "CPU(Core)", "CPU(Core)": "CPU(Core)",
@ -264,6 +270,7 @@
"Change Type": "Change Type", "Change Type": "Change Type",
"Change password": "Change password", "Change password": "Change password",
"Change type": "Change type", "Change type": "Change type",
"Channel": "Channel",
"Chassis ID": "Chassis ID", "Chassis ID": "Chassis ID",
"Check Can Live Migrate Destination": "Check Can Live Migrate Destination", "Check Can Live Migrate Destination": "Check Can Live Migrate Destination",
"Check Can Live Migrate Source": "Check Can Live Migrate Source", "Check Can Live Migrate Source": "Check Can Live Migrate Source",
@ -300,12 +307,14 @@
"Cold Migrate": "Cold Migrate", "Cold Migrate": "Cold Migrate",
"Colombia": "Colombia", "Colombia": "Colombia",
"Commas , are not allowed to be in a tag name in order to simplify requests that specify lists of tags": "Commas , are not allowed to be in a tag name in order to simplify requests that specify lists of tags", "Commas , are not allowed to be in a tag name in order to simplify requests that specify lists of tags": "Commas , are not allowed to be in a tag name in order to simplify requests that specify lists of tags",
"Commit Latency(ms)": "Commit Latency(ms)",
"Common Server": "Common Server", "Common Server": "Common Server",
"Comoros": "Comoros", "Comoros": "Comoros",
"Compute": "Compute", "Compute": "Compute",
"Compute Hosts": "Compute Hosts", "Compute Hosts": "Compute Hosts",
"Compute Live Migration": "Compute Live Migration", "Compute Live Migration": "Compute Live Migration",
"Compute Live Resize Instance": "Compute Live Resize Instance", "Compute Live Resize Instance": "Compute Live Resize Instance",
"Compute Node status": "Compute Node status",
"Compute Optimized": "Compute Optimized", "Compute Optimized": "Compute Optimized",
"Compute Optimized Info": "Compute Optimized Info", "Compute Optimized Info": "Compute Optimized Info",
"Compute Optimized Type": "Compute Optimized Type", "Compute Optimized Type": "Compute Optimized Type",
@ -335,6 +344,7 @@
"Confirming Resize or Migrate": "Confirming Resize or Migrate", "Confirming Resize or Migrate": "Confirming Resize or Migrate",
"Connect Subnet": "Connect Subnet", "Connect Subnet": "Connect Subnet",
"Connect router": "Connect router", "Connect router": "Connect router",
"Connected Threads": "Connected Threads",
"Connection Limit": "Connection Limit", "Connection Limit": "Connection Limit",
"Console": "Console", "Console": "Console",
"Console Interface": "Console Interface", "Console Interface": "Console Interface",
@ -432,6 +442,7 @@
"Cuba": "Cuba", "Cuba": "Cuba",
"Current Availability Zones": "Current Availability Zones", "Current Availability Zones": "Current Availability Zones",
"Current Compute Host": "Current Compute Host", "Current Compute Host": "Current Compute Host",
"Current Connections": "Current Connections",
"Current Flavor": "Current Flavor", "Current Flavor": "Current Flavor",
"Current Host": "Current Host", "Current Host": "Current Host",
"Current Interface": "Current Interface", "Current Interface": "Current Interface",
@ -442,6 +453,7 @@
"Current Project Network": "Current Project Network", "Current Project Network": "Current Project Network",
"Current Project QoS Policy": "Current Project QoS Policy", "Current Project QoS Policy": "Current Project QoS Policy",
"Current QoS policy name": "Current QoS policy name", "Current QoS policy name": "Current QoS policy name",
"Current Status": "Current Status",
"Current Storage Backend": "Current Storage Backend", "Current Storage Backend": "Current Storage Backend",
"Current data downloaded.": "Current data downloaded.", "Current data downloaded.": "Current data downloaded.",
"Custom": "Custom", "Custom": "Custom",
@ -459,6 +471,8 @@
"DEGRADED: One or more of the entitys components are in ERROR": "DEGRADED: One or more of the entitys components are in ERROR", "DEGRADED: One or more of the entitys components are in ERROR": "DEGRADED: One or more of the entitys components are in ERROR",
"DHCP": "DHCP", "DHCP": "DHCP",
"DHCP Agents": "DHCP Agents", "DHCP Agents": "DHCP Agents",
"DISK IOPS": "DISK IOPS",
"DISK Usage(%)": "DISK Usage(%)",
"DNAT Rules": "DNAT Rules", "DNAT Rules": "DNAT Rules",
"DNS": "DNS", "DNS": "DNS",
"DNS Assignment": "DNS Assignment", "DNS Assignment": "DNS Assignment",
@ -581,6 +595,7 @@
"Disk Format": "Disk Format", "Disk Format": "Disk Format",
"Disk Info": "Disk Info", "Disk Info": "Disk Info",
"Disk Tag": "Disk Tag", "Disk Tag": "Disk Tag",
"Disk allocation (GB)": "Disk allocation (GB)",
"Disk size is limited by the min disk of flavor, image, etc.": "Disk size is limited by the min disk of flavor, image, etc.", "Disk size is limited by the min disk of flavor, image, etc.": "Disk size is limited by the min disk of flavor, image, etc.",
"Djibouti": "Djibouti", "Djibouti": "Djibouti",
"Do Build And Run Instance": "Do Build And Run Instance", "Do Build And Run Instance": "Do Build And Run Instance",
@ -697,6 +712,7 @@
"Ether Type": "Ether Type", "Ether Type": "Ether Type",
"Ethiopia": "Ethiopia", "Ethiopia": "Ethiopia",
"Event Time": "Event Time", "Event Time": "Event Time",
"Evictions": "Evictions",
"Execution Result": "Execution Result", "Execution Result": "Execution Result",
"Expand Advanced Options": "Expand Advanced Options", "Expand Advanced Options": "Expand Advanced Options",
"Expired Time": "Expired Time", "Expired Time": "Expired Time",
@ -727,6 +743,7 @@
"Fedora": "Fedora", "Fedora": "Fedora",
"Fiji": "Fiji", "Fiji": "Fiji",
"File": "File", "File": "File",
"File System Free Space": "File System Free Space",
"Filename": "Filename", "Filename": "Filename",
"Files: {names}": "Files: {names}", "Files: {names}": "Files: {names}",
"Fill In The Parameters": "Fill In The Parameters", "Fill In The Parameters": "Fill In The Parameters",
@ -769,6 +786,7 @@
"Format": "Format", "Format": "Format",
"Forward Slash / is not allowed to be in a tag name": "Forward Slash / is not allowed to be in a tag name", "Forward Slash / is not allowed to be in a tag name": "Forward Slash / is not allowed to be in a tag name",
"France": "France", "France": "France",
"Free": "Free",
"FreeBSD": "FreeBSD", "FreeBSD": "FreeBSD",
"French Guiana": "French Guiana", "French Guiana": "French Guiana",
"French Polynesia": "French Polynesia", "French Polynesia": "French Polynesia",
@ -834,6 +852,10 @@
"Host": "Host", "Host": "Host",
"Host Aggregate": "Host Aggregate", "Host Aggregate": "Host Aggregate",
"Host Aggregates": "Host Aggregates", "Host Aggregates": "Host Aggregates",
"Host Average Network IO": "Host Average Network IO",
"Host CPU Usage": "Host CPU Usage",
"Host Disk Average IOPS": "Host Disk Average IOPS",
"Host Memory Usage": "Host Memory Usage",
"Host Routes": "Host Routes", "Host Routes": "Host Routes",
"Host Routes Format Error(e.g. 192.168.200.0/24,10.56.1.254)": "Host Routes Format Error(e.g. 192.168.200.0/24,10.56.1.254)", "Host Routes Format Error(e.g. 192.168.200.0/24,10.56.1.254)": "Host Routes Format Error(e.g. 192.168.200.0/24,10.56.1.254)",
"Host Routes Format Error(e.g. ::0a38:01fe/24,::0a38:01fe)": "Host Routes Format Error(e.g. ::0a38:01fe/24,::0a38:01fe)", "Host Routes Format Error(e.g. ::0a38:01fe/24,::0a38:01fe)": "Host Routes Format Error(e.g. ::0a38:01fe/24,::0a38:01fe)",
@ -914,6 +936,7 @@
"Import Keypair": "Import Keypair", "Import Keypair": "Import Keypair",
"Import Metadata": "Import Metadata", "Import Metadata": "Import Metadata",
"Import metadata": "Import metadata", "Import metadata": "Import metadata",
"In Cluster": "In Cluster",
"In Use": "In Use", "In Use": "In Use",
"In general, administrator for Windows,root for Linux, please fill by image uploading.": "In general, administrator for Windows,root for Linux, please fill by image uploading.", "In general, administrator for Windows,root for Linux, please fill by image uploading.": "In general, administrator for Windows,root for Linux, please fill by image uploading.",
"In order to avoid data loss, the instance will shut down and interrupt your business. Please confirm carefully.": "In order to avoid data loss, the instance will shut down and interrupt your business. Please confirm carefully.", "In order to avoid data loss, the instance will shut down and interrupt your business. Please confirm carefully.": "In order to avoid data loss, the instance will shut down and interrupt your business. Please confirm carefully.",
@ -956,6 +979,7 @@
"Instance \"{ name }\" status is not in paused, can not unpause it.": "Instance \"{ name }\" status is not in paused, can not unpause it.", "Instance \"{ name }\" status is not in paused, can not unpause it.": "Instance \"{ name }\" status is not in paused, can not unpause it.",
"Instance \"{ name }\" status is not in suspended, can not resume it.": "Instance \"{ name }\" status is not in suspended, can not resume it.", "Instance \"{ name }\" status is not in suspended, can not resume it.": "Instance \"{ name }\" status is not in suspended, can not resume it.",
"Instance \"{ name }\" status is not shutoff, can not start it.": "Instance \"{ name }\" status is not shutoff, can not start it.", "Instance \"{ name }\" status is not shutoff, can not start it.": "Instance \"{ name }\" status is not shutoff, can not start it.",
"Instance Addr": "Instance Addr",
"Instance Architecture": "Instance Architecture", "Instance Architecture": "Instance Architecture",
"Instance Detail": "Instance Detail", "Instance Detail": "Instance Detail",
"Instance IP": "Instance IP", "Instance IP": "Instance IP",
@ -980,6 +1004,7 @@
"Invalid IP Address and Port": "Invalid IP Address and Port", "Invalid IP Address and Port": "Invalid IP Address and Port",
"Invalid Mac Address. Please Use \":\" as separator.": "Invalid Mac Address. Please Use \":\" as separator.", "Invalid Mac Address. Please Use \":\" as separator.": "Invalid Mac Address. Please Use \":\" as separator.",
"Invalid Tag Value: {tag}": "Invalid Tag Value: {tag}", "Invalid Tag Value: {tag}": "Invalid Tag Value: {tag}",
"Invalid combination": "Invalid combination",
"Invalid: ": "Invalid: ", "Invalid: ": "Invalid: ",
"Invalid: Allocation Pools Format Error(e.g. 192.168.1.2,192.168.1.200) and start ip should be less than end ip": "Invalid: Allocation Pools Format Error(e.g. 192.168.1.2,192.168.1.200) and start ip should be less than end ip", "Invalid: Allocation Pools Format Error(e.g. 192.168.1.2,192.168.1.200) and start ip should be less than end ip": "Invalid: Allocation Pools Format Error(e.g. 192.168.1.2,192.168.1.200) and start ip should be less than end ip",
"Invalid: Allocation Pools Format Error(e.g. fd00:dead:beef:58::9,fd00:dead:beef:58::13) and start ip should be less than end ip": "Invalid: Allocation Pools Format Error(e.g. fd00:dead:beef:58::9,fd00:dead:beef:58::13) and start ip should be less than end ip", "Invalid: Allocation Pools Format Error(e.g. fd00:dead:beef:58::9,fd00:dead:beef:58::13) and start ip should be less than end ip": "Invalid: Allocation Pools Format Error(e.g. fd00:dead:beef:58::9,fd00:dead:beef:58::13) and start ip should be less than end ip",
@ -1020,6 +1045,7 @@
"It is unreachable for all floating ips.": "It is unreachable for all floating ips.", "It is unreachable for all floating ips.": "It is unreachable for all floating ips.",
"It is unreachable for this floating ip.": "It is unreachable for this floating ip.", "It is unreachable for this floating ip.": "It is unreachable for this floating ip.",
"Italy": "Italy", "Italy": "Italy",
"Items in Cache": "Items in Cache",
"Jamaica": "Jamaica", "Jamaica": "Jamaica",
"Japan": "Japan", "Japan": "Japan",
"Jordan": "Jordan", "Jordan": "Jordan",
@ -1045,10 +1071,12 @@
"Large": "Large", "Large": "Large",
"Large(Optimal performance)": "Large(Optimal performance)", "Large(Optimal performance)": "Large(Optimal performance)",
"Last 2 Weeks": "Last 2 Weeks", "Last 2 Weeks": "Last 2 Weeks",
"Last 24H Status": "Last 24H Status",
"Last 7 Days": "Last 7 Days", "Last 7 Days": "Last 7 Days",
"Last Day": "Last Day", "Last Day": "Last Day",
"Last Hour": "Last Hour", "Last Hour": "Last Hour",
"Last Updated": "Last Updated", "Last Updated": "Last Updated",
"Last week alarm trend": "Last week alarm trend",
"Latvia": "Latvia", "Latvia": "Latvia",
"Leave Maintenance Mode": "Leave Maintenance Mode", "Leave Maintenance Mode": "Leave Maintenance Mode",
"Lebanon": "Lebanon", "Lebanon": "Lebanon",
@ -1131,6 +1159,7 @@
"Martinique": "Martinique", "Martinique": "Martinique",
"Mauritania": "Mauritania", "Mauritania": "Mauritania",
"Mauritius": "Mauritius", "Mauritius": "Mauritius",
"Max Avail": "Max Avail",
"Max BandWidth": "Max BandWidth", "Max BandWidth": "Max BandWidth",
"Max Burst": "Max Burst", "Max Burst": "Max Burst",
"Max Retries": "Max Retries", "Max Retries": "Max Retries",
@ -1147,6 +1176,7 @@
"Memory": "Memory", "Memory": "Memory",
"Memory Optimized": "Memory Optimized", "Memory Optimized": "Memory Optimized",
"Memory Page": "Memory Page", "Memory Page": "Memory Page",
"Memory Usage": "Memory Usage",
"Memory usage Num (GB": "Memory usage Num (GB", "Memory usage Num (GB": "Memory usage Num (GB",
"Message": "Message", "Message": "Message",
"Message Queue Service": "Message Queue Service", "Message Queue Service": "Message Queue Service",
@ -1176,6 +1206,8 @@
"Moldova": "Moldova", "Moldova": "Moldova",
"Monaco": "Monaco", "Monaco": "Monaco",
"Mongolia": "Mongolia", "Mongolia": "Mongolia",
"Monitor Center": "Monitor Center",
"Monitor Overview": "Monitor Overview",
"Montenegro": "Montenegro", "Montenegro": "Montenegro",
"Montserrat": "Montserrat", "Montserrat": "Montserrat",
"More": "More", "More": "More",
@ -1185,6 +1217,7 @@
"Mozambique": "Mozambique", "Mozambique": "Mozambique",
"Multiple filter tags are separated by enter": "Multiple filter tags are separated by enter", "Multiple filter tags are separated by enter": "Multiple filter tags are separated by enter",
"My Role": "My Role", "My Role": "My Role",
"MySQL Actions": "MySQL Actions",
"Myanmar": "Myanmar", "Myanmar": "Myanmar",
"N/A": "N/A", "N/A": "N/A",
"NOOP": "NOOP", "NOOP": "NOOP",
@ -1202,18 +1235,22 @@
"Network": "Network", "Network": "Network",
"Network Config": "Network Config", "Network Config": "Network Config",
"Network Detail": "Network Detail", "Network Detail": "Network Detail",
"Network Dropped Packets": "Network Dropped Packets",
"Network Errors": "Network Errors",
"Network ID": "Network ID", "Network ID": "Network ID",
"Network Info": "Network Info", "Network Info": "Network Info",
"Network Interface": "Network Interface", "Network Interface": "Network Interface",
"Network Line": "Network Line", "Network Line": "Network Line",
"Network Name": "Network Name", "Network Name": "Network Name",
"Network Service": "Network Service", "Network Service": "Network Service",
"Network Traffic": "Network Traffic",
"Network topology page": "Network topology page", "Network topology page": "Network topology page",
"Networking": "Networking", "Networking": "Networking",
"Networking service:": "Networking service:", "Networking service:": "Networking service:",
"Networks": "Networks", "Networks": "Networks",
"Neutron Agent Detail": "Neutron Agent Detail", "Neutron Agent Detail": "Neutron Agent Detail",
"Neutron Agents": "Neutron Agents", "Neutron Agents": "Neutron Agents",
"Neutron Service": "Neutron Service",
"New Availability Zone": "New Availability Zone", "New Availability Zone": "New Availability Zone",
"New Caledonia": "New Caledonia", "New Caledonia": "New Caledonia",
"New Zealand": "New Zealand", "New Zealand": "New Zealand",
@ -1250,6 +1287,7 @@
"Note: Are you sure you need to modify the volume type?": "Note: Are you sure you need to modify the volume type?", "Note: Are you sure you need to modify the volume type?": "Note: Are you sure you need to modify the volume type?",
"Note: Please consider the container name carefully since it couldn't be changed after created.": "Note: Please consider the container name carefully since it couldn't be changed after created.", "Note: Please consider the container name carefully since it couldn't be changed after created.": "Note: Please consider the container name carefully since it couldn't be changed after created.",
"Note: The security group you use will act on all virtual adapters of the instance.": "Note: The security group you use will act on all virtual adapters of the instance.", "Note: The security group you use will act on all virtual adapters of the instance.": "Note: The security group you use will act on all virtual adapters of the instance.",
"Nova Service": "Nova Service",
"Number Of Ports": "Number Of Ports", "Number Of Ports": "Number Of Ports",
"Number of GPU": "Number of GPU", "Number of GPU": "Number of GPU",
"Number of Usb Controller": "Number of Usb Controller", "Number of Usb Controller": "Number of Usb Controller",
@ -1258,9 +1296,11 @@
"OS Admin": "OS Admin", "OS Admin": "OS Admin",
"OS Disk": "OS Disk", "OS Disk": "OS Disk",
"OS Version": "OS Version", "OS Version": "OS Version",
"OSDs": "OSDs",
"OSPF": "OSPF", "OSPF": "OSPF",
"Object Count": "Object Count", "Object Count": "Object Count",
"Object Storage": "Object Storage", "Object Storage": "Object Storage",
"Objects": "Objects",
"Off": "Off", "Off": "Off",
"Offline": "Offline", "Offline": "Offline",
"Oman": "Oman", "Oman": "Oman",
@ -1271,6 +1311,7 @@
"Online Resize": "Online Resize", "Online Resize": "Online Resize",
"Only a MAC address or an OpenFlow based datapath_id of the switch are accepted in this field": "Only a MAC address or an OpenFlow based datapath_id of the switch are accepted in this field", "Only a MAC address or an OpenFlow based datapath_id of the switch are accepted in this field": "Only a MAC address or an OpenFlow based datapath_id of the switch are accepted in this field",
"Open External Gateway": "Open External Gateway", "Open External Gateway": "Open External Gateway",
"OpenStack Service": "OpenStack Service",
"Operating Status": "Operating Status", "Operating Status": "Operating Status",
"Operating System": "Operating System", "Operating System": "Operating System",
"Operation Name": "Operation Name", "Operation Name": "Operation Name",
@ -1285,7 +1326,9 @@
"Origin File Name": "Origin File Name", "Origin File Name": "Origin File Name",
"Original Password": "Original Password", "Original Password": "Original Password",
"Other Protocol": "Other Protocol", "Other Protocol": "Other Protocol",
"Other Service": "Other Service",
"Others": "Others", "Others": "Others",
"Out Cluster": "Out Cluster",
"Outputs": "Outputs", "Outputs": "Outputs",
"Overlapping allocation pools: {pools}": "Overlapping allocation pools: {pools}", "Overlapping allocation pools: {pools}": "Overlapping allocation pools: {pools}",
"Owned Network": "Owned Network", "Owned Network": "Owned Network",
@ -1296,6 +1339,7 @@
"Ownership of a volume can be transferred from one project to another. The transfer process of the volume needs to perform the transfer operation in the original owner's project, and complete the \"accept\" operation in the receiver's project.": "Ownership of a volume can be transferred from one project to another. The transfer process of the volume needs to perform the transfer operation in the original owner's project, and complete the \"accept\" operation in the receiver's project.", "Ownership of a volume can be transferred from one project to another. The transfer process of the volume needs to perform the transfer operation in the original owner's project, and complete the \"accept\" operation in the receiver's project.": "Ownership of a volume can be transferred from one project to another. The transfer process of the volume needs to perform the transfer operation in the original owner's project, and complete the \"accept\" operation in the receiver's project.",
"PFS": "PFS", "PFS": "PFS",
"PGM": "PGM", "PGM": "PGM",
"PGs": "PGs",
"PING": "PING", "PING": "PING",
"PXE": "PXE", "PXE": "PXE",
"PXE Enabled": "PXE Enabled", "PXE Enabled": "PXE Enabled",
@ -1339,8 +1383,10 @@
"Phase1 Negotiation Mode": "Phase1 Negotiation Mode", "Phase1 Negotiation Mode": "Phase1 Negotiation Mode",
"Philippines": "Philippines", "Philippines": "Philippines",
"Phone": "Phone", "Phone": "Phone",
"Physical CPU Usage": "Physical CPU Usage",
"Physical Network": "Physical Network", "Physical Network": "Physical Network",
"Physical Node": "Physical Node", "Physical Node": "Physical Node",
"Physical Storage Usage": "Physical Storage Usage",
"Pitcairn": "Pitcairn", "Pitcairn": "Pitcairn",
"Placement service:": "Placement service:", "Placement service:": "Placement service:",
"Platform Info": "Platform Info", "Platform Info": "Platform Info",
@ -1417,6 +1463,7 @@
"Pool Info": "Pool Info", "Pool Info": "Pool Info",
"Pool Name": "Pool Name", "Pool Name": "Pool Name",
"Pool Protocol": "Pool Protocol", "Pool Protocol": "Pool Protocol",
"Pools": "Pools",
"Port": "Port", "Port": "Port",
"Port Detail": "Port Detail", "Port Detail": "Port Detail",
"Port Forwarding": "Port Forwarding", "Port Forwarding": "Port Forwarding",
@ -1475,6 +1522,8 @@
"Public Access": "Public Access", "Public Access": "Public Access",
"Public Image": "Public Image", "Public Image": "Public Image",
"Public Key": "Public Key", "Public Key": "Public Key",
"Published In": "Published In",
"Published Out": "Published Out",
"Puerto Rico": "Puerto Rico", "Puerto Rico": "Puerto Rico",
"QCOW2 - QEMU image format": "QCOW2 - QEMU image format", "QCOW2 - QEMU image format": "QCOW2 - QEMU image format",
"Qatar": "Qatar", "Qatar": "Qatar",
@ -1505,6 +1554,7 @@
"Ram value is { ram }, NUMA RAM value is { totalRam }, need to be equal. ": "Ram value is { ram }, NUMA RAM value is { totalRam }, need to be equal. ", "Ram value is { ram }, NUMA RAM value is { totalRam }, need to be equal. ": "Ram value is { ram }, NUMA RAM value is { totalRam }, need to be equal. ",
"Ramdisk ID": "Ramdisk ID", "Ramdisk ID": "Ramdisk ID",
"Ramdisk Image": "Ramdisk Image", "Ramdisk Image": "Ramdisk Image",
"Read And Write": "Read And Write",
"Reader": "Reader", "Reader": "Reader",
"Real Name": "Real Name", "Real Name": "Real Name",
"Reason": "Reason", "Reason": "Reason",
@ -1588,6 +1638,7 @@
"Root Disk": "Root Disk", "Root Disk": "Root Disk",
"Root directory": "Root directory", "Root directory": "Root directory",
"Router": "Router", "Router": "Router",
"Router Advertisements Mode": "Router Advertisements Mode",
"Router Detail": "Router Detail", "Router Detail": "Router Detail",
"Router External": "Router External", "Router External": "Router External",
"Router ID": "Router ID", "Router ID": "Router ID",
@ -1596,6 +1647,8 @@
"Rules": "Rules", "Rules": "Rules",
"Rules Number": "Rules Number", "Rules Number": "Rules Number",
"Running": "Running", "Running": "Running",
"Running Threads": "Running Threads",
"Running Time": "Running Time",
"Russia": "Russia", "Russia": "Russia",
"Rwanda": "Rwanda", "Rwanda": "Rwanda",
"SCTP": "SCTP", "SCTP": "SCTP",
@ -1639,6 +1692,7 @@
"Server Group": "Server Group", "Server Group": "Server Group",
"Server Group Detail": "Server Group Detail", "Server Group Detail": "Server Group Detail",
"Server Group Member": "Server Group Member", "Server Group Member": "Server Group Member",
"Server Status": "Server Status",
"Service": "Service", "Service": "Service",
"Service State": "Service State", "Service State": "Service State",
"Service Status": "Service Status", "Service Status": "Service Status",
@ -1673,6 +1727,7 @@
"Size": "Size", "Size": "Size",
"Slovakia (Slovak Republic)": "Slovakia (Slovak Republic)", "Slovakia (Slovak Republic)": "Slovakia (Slovak Republic)",
"Slovenia": "Slovenia", "Slovenia": "Slovenia",
"Slow Query": "Slow Query",
"Small": "Small", "Small": "Small",
"Small(Not recommended)": "Small(Not recommended)", "Small(Not recommended)": "Small(Not recommended)",
"Smart Scheduling": "Smart Scheduling", "Smart Scheduling": "Smart Scheduling",
@ -1737,9 +1792,16 @@
"Storage": "Storage", "Storage": "Storage",
"Storage Backend": "Storage Backend", "Storage Backend": "Storage Backend",
"Storage Capacity(GB)": "Storage Capacity(GB)", "Storage Capacity(GB)": "Storage Capacity(GB)",
"Storage Cluster": "Storage Cluster",
"Storage Cluster Bandwidth": "Storage Cluster Bandwidth",
"Storage Cluster IOPS": "Storage Cluster IOPS",
"Storage Cluster OSD Latency": "Storage Cluster OSD Latency",
"Storage Cluster Status": "Storage Cluster Status",
"Storage Cluster Usage": "Storage Cluster Usage",
"Storage IOPS": "Storage IOPS", "Storage IOPS": "Storage IOPS",
"Storage Interface": "Storage Interface", "Storage Interface": "Storage Interface",
"Storage Policy": "Storage Policy", "Storage Policy": "Storage Policy",
"Storage Pool Capacity Usage": "Storage Pool Capacity Usage",
"Storage Types": "Storage Types", "Storage Types": "Storage Types",
"Sub User": "Sub User", "Sub User": "Sub User",
"Subnet": "Subnet", "Subnet": "Subnet",
@ -1773,10 +1835,13 @@
"System Config": "System Config", "System Config": "System Config",
"System Disk": "System Disk", "System Disk": "System Disk",
"System Info": "System Info", "System Info": "System Info",
"System Load": "System Load",
"System Reader": "System Reader", "System Reader": "System Reader",
"System Running Time": "System Running Time",
"System Scope": "System Scope", "System Scope": "System Scope",
"System is error, please try again later.": "System is error, please try again later.", "System is error, please try again later.": "System is error, please try again later.",
"TCP": "TCP", "TCP": "TCP",
"TCP Connections": "TCP Connections",
"Tags": "Tags", "Tags": "Tags",
"Tags are not case sensitive": "Tags are not case sensitive", "Tags are not case sensitive": "Tags are not case sensitive",
"Taiwan": "Taiwan", "Taiwan": "Taiwan",
@ -1862,10 +1927,13 @@
"There is currently no file to paste.": "There is currently no file to paste.", "There is currently no file to paste.": "There is currently no file to paste.",
"This service will automatically query the configuration (CPU, memory, etc.) and mac address of the physical machine, and the ironic-inspector service will automatically register this information in the node information.": "This service will automatically query the configuration (CPU, memory, etc.) and mac address of the physical machine, and the ironic-inspector service will automatically register this information in the node information.", "This service will automatically query the configuration (CPU, memory, etc.) and mac address of the physical machine, and the ironic-inspector service will automatically register this information in the node information.": "This service will automatically query the configuration (CPU, memory, etc.) and mac address of the physical machine, and the ironic-inspector service will automatically register this information in the node information.",
"This will delete all child objects of the load balancer.": "This will delete all child objects of the load balancer.", "This will delete all child objects of the load balancer.": "This will delete all child objects of the load balancer.",
"Threads Activity Trends": "Threads Activity Trends",
"Time Interval: ": "Time Interval: ", "Time Interval: ": "Time Interval: ",
"Timeout(Mininte)": "Timeout(Mininte)", "Timeout(Mininte)": "Timeout(Mininte)",
"Timeout(s)": "Timeout(s)", "Timeout(s)": "Timeout(s)",
"To open": "To open", "To open": "To open",
"Today CPU usage > 80% alert": "Today CPU usage > 80% alert",
"Today Memory usage > 80% alert": "Today Memory usage > 80% alert",
"Togo": "Togo", "Togo": "Togo",
"Tokelau": "Tokelau", "Tokelau": "Tokelau",
"Tonga": "Tonga", "Tonga": "Tonga",
@ -1873,7 +1941,14 @@
"Topic": "Topic", "Topic": "Topic",
"Topology": "Topology", "Topology": "Topology",
"Total": "Total", "Total": "Total",
"Total Capacity": "Total Capacity",
"Total Connections": "Total Connections",
"Total Consumers": "Total Consumers",
"Total Exchanges": "Total Exchanges",
"Total IPs": "Total IPs", "Total IPs": "Total IPs",
"Total Message": "Total Message",
"Total Queues": "Total Queues",
"Total Ram": "Total Ram",
"Total {total} items": "Total {total} items", "Total {total} items": "Total {total} items",
"Trait Properties": "Trait Properties", "Trait Properties": "Trait Properties",
"Traits": "Traits", "Traits": "Traits",
@ -1945,6 +2020,7 @@
"Upload progress": "Upload progress", "Upload progress": "Upload progress",
"Uploading": "Uploading", "Uploading": "Uploading",
"Uruguay": "Uruguay", "Uruguay": "Uruguay",
"Usage": "Usage",
"Usage Type": "Usage Type", "Usage Type": "Usage Type",
"Usb Controller": "Usb Controller", "Usb Controller": "Usb Controller",
"Use Type": "Use Type", "Use Type": "Use Type",
@ -2076,6 +2152,7 @@
"associate floating ip": "associate floating ip", "associate floating ip": "associate floating ip",
"attach interface": "attach interface", "attach interface": "attach interface",
"availability zones": "availability zones", "availability zones": "availability zones",
"available": "available",
"backup": "backup", "backup": "backup",
"backup gigabytes (GiB)": "backup gigabytes (GiB)", "backup gigabytes (GiB)": "backup gigabytes (GiB)",
"backups": "backups", "backups": "backups",
@ -2189,7 +2266,9 @@
"hypervisor": "hypervisor", "hypervisor": "hypervisor",
"image": "image", "image": "image",
"images": "images", "images": "images",
"in": "in",
"ingress": "ingress", "ingress": "ingress",
"insert": "insert",
"instance": "instance", "instance": "instance",
"instance snapshot": "instance snapshot", "instance snapshot": "instance snapshot",
"instance: {name}.": "instance: {name}.", "instance: {name}.": "instance: {name}.",
@ -2217,6 +2296,7 @@
"neutron agents": "neutron agents", "neutron agents": "neutron agents",
"online resize": "online resize", "online resize": "online resize",
"open external gateway": "open external gateway", "open external gateway": "open external gateway",
"out": "out",
"paste files to folder": "paste files to folder", "paste files to folder": "paste files to folder",
"pause instance": "pause instance", "pause instance": "pause instance",
"phone": "phone", "phone": "phone",
@ -2232,8 +2312,10 @@
"qoS policy": "qoS policy", "qoS policy": "qoS policy",
"qos specs": "qos specs", "qos specs": "qos specs",
"quota set to -1 means there is no quota limit on the current resource": "quota set to -1 means there is no quota limit on the current resource", "quota set to -1 means there is no quota limit on the current resource": "quota set to -1 means there is no quota limit on the current resource",
"read": "read",
"reboot instance": "reboot instance", "reboot instance": "reboot instance",
"rebuild instance": "rebuild instance", "rebuild instance": "rebuild instance",
"receive": "receive",
"recover instance": "recover instance", "recover instance": "recover instance",
"recycle bins": "recycle bins", "recycle bins": "recycle bins",
"release fixed ip": "release fixed ip", "release fixed ip": "release fixed ip",
@ -2267,17 +2349,22 @@
"storage backend": "storage backend", "storage backend": "storage backend",
"subnets": "subnets", "subnets": "subnets",
"suspend instance": "suspend instance", "suspend instance": "suspend instance",
"tab tables": "tab tables",
"the Republic of Abkhazia": "the Republic of Abkhazia", "the Republic of Abkhazia": "the Republic of Abkhazia",
"the folder is not empty": "the folder is not empty", "the folder is not empty": "the folder is not empty",
"the policy is in use": "the policy is in use", "the policy is in use": "the policy is in use",
"the router has connected subnet": "the router has connected subnet", "the router has connected subnet": "the router has connected subnet",
"the vpn gateway is in use": "the vpn gateway is in use", "the vpn gateway is in use": "the vpn gateway is in use",
"time / 24h": "time / 24h",
"to delete": "to delete", "to delete": "to delete",
"transmit": "transmit",
"unlock instance": "unlock instance", "unlock instance": "unlock instance",
"unpause instance": "unpause instance", "unpause instance": "unpause instance",
"unshelve instance": "unshelve instance", "unshelve instance": "unshelve instance",
"update": "update",
"update status": "update status", "update status": "update status",
"update template": "update template", "update template": "update template",
"used": "used",
"user": "user", "user": "user",
"user group": "user group", "user group": "user group",
"user groups": "user groups", "user groups": "user groups",
@ -2299,6 +2386,7 @@
"vpn IPsec policy": "vpn IPsec policy", "vpn IPsec policy": "vpn IPsec policy",
"vpn endpoint groups": "vpn endpoint groups", "vpn endpoint groups": "vpn endpoint groups",
"vpn services": "vpn services", "vpn services": "vpn services",
"write": "write",
"{ size } GB": "{ size } GB", "{ size } GB": "{ size } GB",
"{ size } KB": "{ size } KB", "{ size } KB": "{ size } KB",
"{ size } MB": "{ size } MB", "{ size } MB": "{ size } MB",

View File

@ -7,15 +7,15 @@
"1. The name of the custom resource class property should start with CUSTOM_, can only contain uppercase letters A ~ Z, numbers 0 ~ 9 or underscores, and the length should not exceed 255 characters (for example: CUSTOM_BAREMETAL_SMALL).": "1. 自定义资源属性的命名应该以 CUSTOM_ 开头、只能包含大写字母A ~ Z、数字0 ~ 9或下划线、长度不超过255个字符比如CUSTOM_BAREMETAL_SMALL。", "1. The name of the custom resource class property should start with CUSTOM_, can only contain uppercase letters A ~ Z, numbers 0 ~ 9 or underscores, and the length should not exceed 255 characters (for example: CUSTOM_BAREMETAL_SMALL).": "1. 自定义资源属性的命名应该以 CUSTOM_ 开头、只能包含大写字母A ~ Z、数字0 ~ 9或下划线、长度不超过255个字符比如CUSTOM_BAREMETAL_SMALL。",
"1. The name of the trait should start with CUSTOM_, can only contain uppercase letters A ~ Z, numbers 0 ~ 9 or underscores, and the length should not exceed 255 characters (for example: CUSTOM_TRAIT1).": "1. 特性的命名应该以 CUSTOM_ 开头、只能包含大写字母A ~ Z、数字0 ~ 9或下划线、长度不超过255个字符比如CUSTOM_TRAIT1。", "1. The name of the trait should start with CUSTOM_, can only contain uppercase letters A ~ Z, numbers 0 ~ 9 or underscores, and the length should not exceed 255 characters (for example: CUSTOM_TRAIT1).": "1. 特性的命名应该以 CUSTOM_ 开头、只能包含大写字母A ~ Z、数字0 ~ 9或下划线、长度不超过255个字符比如CUSTOM_TRAIT1。",
"1. The volume associated with the backup is available.": "1. 备份关联的云硬盘处于可用状态。", "1. The volume associated with the backup is available.": "1. 备份关联的云硬盘处于可用状态。",
"10s": "", "10s": "10秒",
"1D": "", "1D": "1天",
"1H": "", "1H": "1小时",
"1min": "", "1min": "1分钟",
"2. The trait of the scheduled node needs to correspond to the trait of the flavor used by the ironic instance; by injecting the necessary traits into the ironic instance, the computing service will only schedule the instance to the bare metal node with all the necessary traits (for example, the ironic instance which use the flavor that has CUSTOM_TRAIT1 as a necessary trait, can be scheduled to the node which has the trait of CUSTOM_TRAIT1).": "2. 被调度节点的特性需要与裸机实例使用的云主机类型的特性对应;通过给裸机实例注入必需特性,计算服务将只调度实例到具有所有必需特性的裸金属节点(比如:调度节点的有 CUSTOM_TRAIT1 特性, 云主机类型添加CUSTOM_TRAIT1为必要特性可以调度到此节点。", "2. The trait of the scheduled node needs to correspond to the trait of the flavor used by the ironic instance; by injecting the necessary traits into the ironic instance, the computing service will only schedule the instance to the bare metal node with all the necessary traits (for example, the ironic instance which use the flavor that has CUSTOM_TRAIT1 as a necessary trait, can be scheduled to the node which has the trait of CUSTOM_TRAIT1).": "2. 被调度节点的特性需要与裸机实例使用的云主机类型的特性对应;通过给裸机实例注入必需特性,计算服务将只调度实例到具有所有必需特性的裸金属节点(比如:调度节点的有 CUSTOM_TRAIT1 特性, 云主机类型添加CUSTOM_TRAIT1为必要特性可以调度到此节点。",
"2. The volume associated with the backup has been mounted, and the instance is shut down.": "2. 备份关联的云硬盘已被挂载,且云主机处于关机状态。", "2. The volume associated with the backup has been mounted, and the instance is shut down.": "2. 备份关联的云硬盘已被挂载,且云主机处于关机状态。",
"2. To ensure the integrity of the data, it is recommended that you suspend the write operation of all files when creating a backup.": "2. 为了保证数据的完整性,建议您在创建备份时暂停所有文件的写操作。", "2. To ensure the integrity of the data, it is recommended that you suspend the write operation of all files when creating a backup.": "2. 为了保证数据的完整性,建议您在创建备份时暂停所有文件的写操作。",
"2. You can customize the resource class name of the flavor, but it needs to correspond to the resource class of the scheduled node (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).": "2. 你可以自定义云主机类型的资源类名称,但需要与被调度节点的资源类对应;(比如:调度节点的资源类名称为 baremetal.with-GPU云主机类型的自定义资源类名称为CUSTOM_BAREMETAL_WITH_GPU。", "2. You can customize the resource class name of the flavor, but it needs to correspond to the resource class of the scheduled node (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).": "2. 你可以自定义云主机类型的资源类名称,但需要与被调度节点的资源类对应;(比如:调度节点的资源类名称为 baremetal.with-GPU云主机类型的自定义资源类名称为CUSTOM_BAREMETAL_WITH_GPU。",
"5min": "", "5min": "5分钟",
"8 to 16 characters, at least one uppercase letter, one lowercase letter, one number and one special character.": "8个到16个字符至少一个大写字母一个小写字母一个数字和一个特殊字符。", "8 to 16 characters, at least one uppercase letter, one lowercase letter, one number and one special character.": "8个到16个字符至少一个大写字母一个小写字母一个数字和一个特殊字符。",
"8 to 16 characters, at least one uppercase letter, one lowercase letter, one number.": "8个到16个字符至少一个大写字母一个小写字母一个数字。", "8 to 16 characters, at least one uppercase letter, one lowercase letter, one number.": "8个到16个字符至少一个大写字母一个小写字母一个数字。",
"A DNAT rule has been created for this port of this IP, please choose another port.": "此IP的这个端口已经创建了DNAT规则请选择另一个端口。", "A DNAT rule has been created for this port of this IP, please choose another port.": "此IP的这个端口已经创建了DNAT规则请选择另一个端口。",
@ -108,6 +108,7 @@
"Any(Random)": "任意(随机)", "Any(Random)": "任意(随机)",
"Application Credentials": "应用凭证", "Application Credentials": "应用凭证",
"Application Template": "应用模板", "Application Template": "应用模板",
"Apply Latency(ms)": "应用延迟(毫秒)",
"Applying": "使用中", "Applying": "使用中",
"Arch": "", "Arch": "",
"Architecture": "架构", "Architecture": "架构",
@ -161,6 +162,9 @@
"Availability zone refers to a physical area where power and network are independent of each other in the same area. In the same region, the availability zone and the availability zone can communicate with each other in the intranet, and the available zones can achieve fault isolation.": "可用区是指在同一地域内,电力和网络互相独立的物理区域。在同一地域内可用区与可用区之间内网互通,可用区之间能做到故障隔离。", "Availability zone refers to a physical area where power and network are independent of each other in the same area. In the same region, the availability zone and the availability zone can communicate with each other in the intranet, and the available zones can achieve fault isolation.": "可用区是指在同一地域内,电力和网络互相独立的物理区域。在同一地域内可用区与可用区之间内网互通,可用区之间能做到故障隔离。",
"Available": "可用", "Available": "可用",
"Available Zone": "可用域", "Available Zone": "可用域",
"Average OSD Apply Latency(ms)": "平均OSD应用延迟(ms)",
"Average OSD Commit Latency(ms)": "平均OSD提交延迟(ms)",
"Average PGs per OSD": "每个OSD平均PG数量",
"Awaiting Transfer": "等待转让", "Awaiting Transfer": "等待转让",
"Azerbaijan": "阿塞拜疆", "Azerbaijan": "阿塞拜疆",
"Back": "返回", "Back": "返回",
@ -238,13 +242,15 @@
"CIDR Format Error(e.g. 192.168.0.0/24, 2001:DB8::/48)": "CIDR格式错误192.168.0.0/24, 2001:DB8::/48", "CIDR Format Error(e.g. 192.168.0.0/24, 2001:DB8::/48)": "CIDR格式错误192.168.0.0/24, 2001:DB8::/48",
"CPU": "", "CPU": "",
"CPU Arch": "CPU架构", "CPU Arch": "CPU架构",
"CPU Cores": "CPU核数",
"CPU Policy": "CPU策略", "CPU Policy": "CPU策略",
"CPU Thread Policy": "CPU线程策略", "CPU Thread Policy": "CPU线程策略",
"CPU Usage(%)": "CPU使用率(%)",
"CPU usage Num (Core)": "CPU使用量 (核)", "CPU usage Num (Core)": "CPU使用量 (核)",
"CPU value is { cpu }, NUMA CPU value is { totalCpu }, need to be equal. ": "CPU核数是 { cpu }NUMA节点的CPU核数是{ totalCpu },需要一致。", "CPU value is { cpu }, NUMA CPU value is { totalCpu }, need to be equal. ": "CPU核数是 { cpu }NUMA节点的CPU核数是{ totalCpu },需要一致。",
"CPU(Core)": "CPU核数", "CPU(Core)": "CPU核数",
"CPU/memory can only be increased or expanded online, and cannot be decreased or reduced online.": "CPU/内存均只能在线增或扩展,不能在线减少或缩小。", "CPU/memory can only be increased or expanded online, and cannot be decreased or reduced online.": "CPU/内存均只能在线增或扩展,不能在线减少或缩小。",
"Cache Service": "", "Cache Service": "缓存服务",
"Cameroon": "喀麦隆", "Cameroon": "喀麦隆",
"Can add { number } {name}": "还可添加 { number } {name}", "Can add { number } {name}": "还可添加 { number } {name}",
"Canada": "加拿大", "Canada": "加拿大",
@ -264,6 +270,7 @@
"Change Type": "修改类型", "Change Type": "修改类型",
"Change password": "修改密码", "Change password": "修改密码",
"Change type": "修改类型", "Change type": "修改类型",
"Channel": "",
"Chassis ID": "机架ID", "Chassis ID": "机架ID",
"Check Can Live Migrate Destination": "检查可以热迁移目标", "Check Can Live Migrate Destination": "检查可以热迁移目标",
"Check Can Live Migrate Source": "检查可以热迁移源", "Check Can Live Migrate Source": "检查可以热迁移源",
@ -300,12 +307,14 @@
"Cold Migrate": "冷迁移", "Cold Migrate": "冷迁移",
"Colombia": "哥伦比亚", "Colombia": "哥伦比亚",
"Commas , are not allowed to be in a tag name in order to simplify requests that specify lists of tags": "标记名称中不允许使用逗号“,”,以简化指定标记列表的请求", "Commas , are not allowed to be in a tag name in order to simplify requests that specify lists of tags": "标记名称中不允许使用逗号“,”,以简化指定标记列表的请求",
"Commit Latency(ms)": "提交延迟(毫秒)",
"Common Server": "云主机", "Common Server": "云主机",
"Comoros": "科摩罗", "Comoros": "科摩罗",
"Compute": "计算", "Compute": "计算",
"Compute Hosts": "计算节点", "Compute Hosts": "计算节点",
"Compute Live Migration": "计算热迁移", "Compute Live Migration": "计算热迁移",
"Compute Live Resize Instance": "完成在线配置调整", "Compute Live Resize Instance": "完成在线配置调整",
"Compute Node status": "计算节点状态",
"Compute Optimized": "计算型", "Compute Optimized": "计算型",
"Compute Optimized Info": "计算优化信息", "Compute Optimized Info": "计算优化信息",
"Compute Optimized Type": "计算优化型", "Compute Optimized Type": "计算优化型",
@ -335,6 +344,7 @@
"Confirming Resize or Migrate": "确认修改配置/迁移", "Confirming Resize or Migrate": "确认修改配置/迁移",
"Connect Subnet": "连接子网", "Connect Subnet": "连接子网",
"Connect router": "连接路由", "Connect router": "连接路由",
"Connected Threads": "",
"Connection Limit": "连接限制", "Connection Limit": "连接限制",
"Console": "控制台", "Console": "控制台",
"Console Interface": "Console接口", "Console Interface": "Console接口",
@ -432,6 +442,7 @@
"Cuba": "古巴", "Cuba": "古巴",
"Current Availability Zones": "当前可用域", "Current Availability Zones": "当前可用域",
"Current Compute Host": "当前计算节点", "Current Compute Host": "当前计算节点",
"Current Connections": "",
"Current Flavor": "当前配置", "Current Flavor": "当前配置",
"Current Host": "当前主机", "Current Host": "当前主机",
"Current Interface": "当前接口", "Current Interface": "当前接口",
@ -442,6 +453,7 @@
"Current Project Network": "当前项目网络", "Current Project Network": "当前项目网络",
"Current Project QoS Policy": "当前项目QoS策略", "Current Project QoS Policy": "当前项目QoS策略",
"Current QoS policy name": "当前QoS策略名称", "Current QoS policy name": "当前QoS策略名称",
"Current Status": "当前状态",
"Current Storage Backend": "当前存储后端", "Current Storage Backend": "当前存储后端",
"Current data downloaded.": "当前数据已完成下载。", "Current data downloaded.": "当前数据已完成下载。",
"Custom": "自定义", "Custom": "自定义",
@ -459,6 +471,8 @@
"DEGRADED: One or more of the entitys components are in ERROR": "降级:一个或多个实体的组件都处于错误状态", "DEGRADED: One or more of the entitys components are in ERROR": "降级:一个或多个实体的组件都处于错误状态",
"DHCP": "", "DHCP": "",
"DHCP Agents": "DHCP服务", "DHCP Agents": "DHCP服务",
"DISK IOPS": "硬盘IOPS",
"DISK Usage(%)": "硬盘使用率(%)",
"DNAT Rules": "DNAT规则", "DNAT Rules": "DNAT规则",
"DNS": "", "DNS": "",
"DNS Assignment": "DNS指派", "DNS Assignment": "DNS指派",
@ -475,7 +489,7 @@
"Data Source Type": "数据源类型", "Data Source Type": "数据源类型",
"Database": "数据库", "Database": "数据库",
"Database Instance": "数据库实例", "Database Instance": "数据库实例",
"Database Service": "", "Database Service": "数据库服务",
"Deactivated": "已取消激活", "Deactivated": "已取消激活",
"Debian": "", "Debian": "",
"Dedicated": "专用", "Dedicated": "专用",
@ -581,6 +595,7 @@
"Disk Format": "硬盘格式", "Disk Format": "硬盘格式",
"Disk Info": "硬盘信息", "Disk Info": "硬盘信息",
"Disk Tag": "硬盘标签", "Disk Tag": "硬盘标签",
"Disk allocation (GB)": "云硬盘分配量 (GB)",
"Disk size is limited by the min disk of flavor, image, etc.": "根磁盘大小受云主机类型、镜像等的最小磁盘限制。", "Disk size is limited by the min disk of flavor, image, etc.": "根磁盘大小受云主机类型、镜像等的最小磁盘限制。",
"Djibouti": "吉布提", "Djibouti": "吉布提",
"Do Build And Run Instance": "构建并运行实例", "Do Build And Run Instance": "构建并运行实例",
@ -697,6 +712,7 @@
"Ether Type": "以太网类型", "Ether Type": "以太网类型",
"Ethiopia": "埃塞俄比亚", "Ethiopia": "埃塞俄比亚",
"Event Time": "发生时间", "Event Time": "发生时间",
"Evictions": "",
"Execution Result": "执行结果", "Execution Result": "执行结果",
"Expand Advanced Options": "展开高级选项", "Expand Advanced Options": "展开高级选项",
"Expired Time": "到期时间", "Expired Time": "到期时间",
@ -727,6 +743,7 @@
"Fedora": "", "Fedora": "",
"Fiji": "斐济", "Fiji": "斐济",
"File": "文件", "File": "文件",
"File System Free Space": "文件系统可用空间",
"Filename": "文件名", "Filename": "文件名",
"Files: {names}": "文件:{names}", "Files: {names}": "文件:{names}",
"Fill In The Parameters": "参数填写", "Fill In The Parameters": "参数填写",
@ -769,6 +786,7 @@
"Format": "规格", "Format": "规格",
"Forward Slash / is not allowed to be in a tag name": "标记名称中不允许使用正斜杠“ /”", "Forward Slash / is not allowed to be in a tag name": "标记名称中不允许使用正斜杠“ /”",
"France": "法国", "France": "法国",
"Free": "空闲",
"FreeBSD": "", "FreeBSD": "",
"French Guiana": "法属圭亚那", "French Guiana": "法属圭亚那",
"French Polynesia": "法属玻里尼西亚", "French Polynesia": "法属玻里尼西亚",
@ -822,7 +840,7 @@
"Health Monitor Type": "健康检查器类型", "Health Monitor Type": "健康检查器类型",
"HealthMonitor": "健康检查器", "HealthMonitor": "健康检查器",
"HealthMonitor Type": "健康检查类型", "HealthMonitor Type": "健康检查类型",
"Healthy": "", "Healthy": "健康",
"Heartbeat Timestamp": "心跳时间戳", "Heartbeat Timestamp": "心跳时间戳",
"Heterogeneous Computing": "异构计算", "Heterogeneous Computing": "异构计算",
"Hide Advanced Options": "隐藏高级选项", "Hide Advanced Options": "隐藏高级选项",
@ -834,6 +852,10 @@
"Host": "主机", "Host": "主机",
"Host Aggregate": "主机集合", "Host Aggregate": "主机集合",
"Host Aggregates": "主机集合", "Host Aggregates": "主机集合",
"Host Average Network IO": "主机平均网络进出宽带",
"Host CPU Usage": "主机CPU使用率",
"Host Disk Average IOPS": "主机平均硬盘IOPS",
"Host Memory Usage": "主机内存使用率",
"Host Routes": "主机路由", "Host Routes": "主机路由",
"Host Routes Format Error(e.g. 192.168.200.0/24,10.56.1.254)": "无效:主机路由格式错误(例如: 192.168.200.0/24,10.56.1.254)", "Host Routes Format Error(e.g. 192.168.200.0/24,10.56.1.254)": "无效:主机路由格式错误(例如: 192.168.200.0/24,10.56.1.254)",
"Host Routes Format Error(e.g. ::0a38:01fe/24,::0a38:01fe)": "无效:主机路由格式错误(例如: ::0a38:01fe/24,::0a38:01fe))", "Host Routes Format Error(e.g. ::0a38:01fe/24,::0a38:01fe)": "无效:主机路由格式错误(例如: ::0a38:01fe/24,::0a38:01fe))",
@ -914,6 +936,7 @@
"Import Keypair": "导入密钥", "Import Keypair": "导入密钥",
"Import Metadata": "导入元数据", "Import Metadata": "导入元数据",
"Import metadata": "导入元数据", "Import metadata": "导入元数据",
"In Cluster": "集群中",
"In Use": "使用中", "In Use": "使用中",
"In general, administrator for Windows,root for Linux, please fill by image uploading.": "一般情况下Windows为administratorLinux为root请根据上传的镜像正确填写。", "In general, administrator for Windows,root for Linux, please fill by image uploading.": "一般情况下Windows为administratorLinux为root请根据上传的镜像正确填写。",
"In order to avoid data loss, the instance will shut down and interrupt your business. Please confirm carefully.": "为了避免数据丢失,云主机将关机中断您的业务,请仔细确认。", "In order to avoid data loss, the instance will shut down and interrupt your business. Please confirm carefully.": "为了避免数据丢失,云主机将关机中断您的业务,请仔细确认。",
@ -956,6 +979,7 @@
"Instance \"{ name }\" status is not in paused, can not unpause it.": "云主机\"{ name }\"状态不是暂停中,无法取消暂停。", "Instance \"{ name }\" status is not in paused, can not unpause it.": "云主机\"{ name }\"状态不是暂停中,无法取消暂停。",
"Instance \"{ name }\" status is not in suspended, can not resume it.": "云主机\"{ name }\"状态不是挂起中,无法恢复。", "Instance \"{ name }\" status is not in suspended, can not resume it.": "云主机\"{ name }\"状态不是挂起中,无法恢复。",
"Instance \"{ name }\" status is not shutoff, can not start it.": "云主机\"{ name }\"状态不是关闭,无法启动。", "Instance \"{ name }\" status is not shutoff, can not start it.": "云主机\"{ name }\"状态不是关闭,无法启动。",
"Instance Addr": "所在主机",
"Instance Architecture": "云主机架构图", "Instance Architecture": "云主机架构图",
"Instance Detail": "云主机详情", "Instance Detail": "云主机详情",
"Instance IP": "云主机IP", "Instance IP": "云主机IP",
@ -980,6 +1004,7 @@
"Invalid IP Address and Port": "无效的IP地址和端口成员已存在", "Invalid IP Address and Port": "无效的IP地址和端口成员已存在",
"Invalid Mac Address. Please Use \":\" as separator.": "无效的Mac地址。请使用\":\"作为分隔符。", "Invalid Mac Address. Please Use \":\" as separator.": "无效的Mac地址。请使用\":\"作为分隔符。",
"Invalid Tag Value: {tag}": "非法的Tag值: {tag}", "Invalid Tag Value: {tag}": "非法的Tag值: {tag}",
"Invalid combination": "无效的组合",
"Invalid: ": "无效:", "Invalid: ": "无效:",
"Invalid: Allocation Pools Format Error(e.g. 192.168.1.2,192.168.1.200) and start ip should be less than end ip": "无效:分配池格式错误(例如: 192.168.1.2,192.168.1.200), 开始IP不能大于结束IP", "Invalid: Allocation Pools Format Error(e.g. 192.168.1.2,192.168.1.200) and start ip should be less than end ip": "无效:分配池格式错误(例如: 192.168.1.2,192.168.1.200), 开始IP不能大于结束IP",
"Invalid: Allocation Pools Format Error(e.g. fd00:dead:beef:58::9,fd00:dead:beef:58::13) and start ip should be less than end ip": "无效:分配池格式错误(例如: fd00:dead:beef:58::9,fd00:dead:beef:58::13), 开始IP不能大于结束IP", "Invalid: Allocation Pools Format Error(e.g. fd00:dead:beef:58::9,fd00:dead:beef:58::13) and start ip should be less than end ip": "无效:分配池格式错误(例如: fd00:dead:beef:58::9,fd00:dead:beef:58::13), 开始IP不能大于结束IP",
@ -1020,6 +1045,7 @@
"It is unreachable for all floating ips.": "对所有浮动IP来说这是不可达的。", "It is unreachable for all floating ips.": "对所有浮动IP来说这是不可达的。",
"It is unreachable for this floating ip.": "对于此浮动IP而言这是不可达的。", "It is unreachable for this floating ip.": "对于此浮动IP而言这是不可达的。",
"Italy": "意大利", "Italy": "意大利",
"Items in Cache": "",
"Jamaica": "牙买加", "Jamaica": "牙买加",
"Japan": "日本", "Japan": "日本",
"Jordan": "约旦", "Jordan": "约旦",
@ -1044,11 +1070,13 @@
"Lao People's Democratic Republic": "老挝", "Lao People's Democratic Republic": "老挝",
"Large": "大", "Large": "大",
"Large(Optimal performance)": "大(性能最优)", "Large(Optimal performance)": "大(性能最优)",
"Last 2 Weeks": "", "Last 2 Weeks": "近两周",
"Last 7 Days": "", "Last 24H Status": "最近24H",
"Last Day": "", "Last 7 Days": "近7天",
"Last Hour": "", "Last Day": "最近1天",
"Last Hour": "最近1小时",
"Last Updated": "最近更新", "Last Updated": "最近更新",
"Last week alarm trend": "最近一周告警趋势",
"Latvia": "拉脱维亚", "Latvia": "拉脱维亚",
"Leave Maintenance Mode": "退出维护模式", "Leave Maintenance Mode": "退出维护模式",
"Lebanon": "黎巴嫩", "Lebanon": "黎巴嫩",
@ -1131,6 +1159,7 @@
"Martinique": "马提尼克岛", "Martinique": "马提尼克岛",
"Mauritania": "毛里塔尼亚", "Mauritania": "毛里塔尼亚",
"Mauritius": "毛里求斯", "Mauritius": "毛里求斯",
"Max Avail": "最大可用量",
"Max BandWidth": "最大带宽", "Max BandWidth": "最大带宽",
"Max Burst": "最大突发", "Max Burst": "最大突发",
"Max Retries": "最大重试次数", "Max Retries": "最大重试次数",
@ -1147,9 +1176,10 @@
"Memory": "内存", "Memory": "内存",
"Memory Optimized": "内存型", "Memory Optimized": "内存型",
"Memory Page": "内存页", "Memory Page": "内存页",
"Memory Usage": "内存使用量",
"Memory usage Num (GB": "内存用量 (GB)", "Memory usage Num (GB": "内存用量 (GB)",
"Message": "消息", "Message": "消息",
"Message Queue Service": "", "Message Queue Service": "消息队列服务",
"Metadata": "元数据", "Metadata": "元数据",
"Metadata Definitions": "元数据定义", "Metadata Definitions": "元数据定义",
"Metadata Detail": "元数据详情", "Metadata Detail": "元数据详情",
@ -1176,6 +1206,8 @@
"Moldova": "摩尔多瓦", "Moldova": "摩尔多瓦",
"Monaco": "摩纳哥", "Monaco": "摩纳哥",
"Mongolia": "外蒙古", "Mongolia": "外蒙古",
"Monitor Center": "监控中心",
"Monitor Overview": "监控概览",
"Montenegro": "黑山共和国", "Montenegro": "黑山共和国",
"Montserrat": "蒙特塞拉特", "Montserrat": "蒙特塞拉特",
"More": "更多", "More": "更多",
@ -1185,6 +1217,7 @@
"Mozambique": "莫桑比克", "Mozambique": "莫桑比克",
"Multiple filter tags are separated by enter": "多个过滤标签用回车键分隔", "Multiple filter tags are separated by enter": "多个过滤标签用回车键分隔",
"My Role": "我的角色", "My Role": "我的角色",
"MySQL Actions": "",
"Myanmar": "缅甸", "Myanmar": "缅甸",
"N/A": "", "N/A": "",
"NOOP": "", "NOOP": "",
@ -1202,18 +1235,22 @@
"Network": "网络", "Network": "网络",
"Network Config": "网络配置", "Network Config": "网络配置",
"Network Detail": "网络详情", "Network Detail": "网络详情",
"Network Dropped Packets": "网络丢包率",
"Network Errors": "网络错误",
"Network ID": "网络ID", "Network ID": "网络ID",
"Network Info": "网络信息", "Network Info": "网络信息",
"Network Interface": "网卡", "Network Interface": "网卡",
"Network Line": "网络线路", "Network Line": "网络线路",
"Network Name": "网络名称", "Network Name": "网络名称",
"Network Service": "网络服务", "Network Service": "网络服务",
"Network Traffic": "网络流量",
"Network topology page": "网络拓扑页面", "Network topology page": "网络拓扑页面",
"Networking": "创建网络中", "Networking": "创建网络中",
"Networking service:": "网络服务(neutron):", "Networking service:": "网络服务(neutron):",
"Networks": "网络", "Networks": "网络",
"Neutron Agent Detail": "网络服务详情", "Neutron Agent Detail": "网络服务详情",
"Neutron Agents": "网络服务", "Neutron Agents": "网络服务",
"Neutron Service": "网络服务",
"New Availability Zone": "新可用域", "New Availability Zone": "新可用域",
"New Caledonia": "新喀里多尼亚", "New Caledonia": "新喀里多尼亚",
"New Zealand": "新西兰", "New Zealand": "新西兰",
@ -1250,6 +1287,7 @@
"Note: Are you sure you need to modify the volume type?": "注意:确定需要修改云硬盘类型?", "Note: Are you sure you need to modify the volume type?": "注意:确定需要修改云硬盘类型?",
"Note: Please consider the container name carefully since it couldn't be changed after created.": "注意:为容器取名需谨慎,因为创建后不可修改。", "Note: Please consider the container name carefully since it couldn't be changed after created.": "注意:为容器取名需谨慎,因为创建后不可修改。",
"Note: The security group you use will act on all virtual adapters of the instance.": "注:您所用的安全组将作用于云主机的全部虚拟网卡。", "Note: The security group you use will act on all virtual adapters of the instance.": "注:您所用的安全组将作用于云主机的全部虚拟网卡。",
"Nova Service": "计算服务",
"Number Of Ports": "端口数量", "Number Of Ports": "端口数量",
"Number of GPU": "GPU数量", "Number of GPU": "GPU数量",
"Number of Usb Controller": "USB控制器数量", "Number of Usb Controller": "USB控制器数量",
@ -1258,9 +1296,11 @@
"OS Admin": "镜像默认用户", "OS Admin": "镜像默认用户",
"OS Disk": "系统盘", "OS Disk": "系统盘",
"OS Version": "系统版本", "OS Version": "系统版本",
"OSDs": "",
"OSPF": "", "OSPF": "",
"Object Count": "对象数量", "Object Count": "",
"Object Storage": "对象存储", "Object Storage": "",
"Objects": "Object数量",
"Off": "关", "Off": "关",
"Offline": "离线", "Offline": "离线",
"Oman": "阿曼", "Oman": "阿曼",
@ -1271,6 +1311,7 @@
"Online Resize": "在线修改配置", "Online Resize": "在线修改配置",
"Only a MAC address or an OpenFlow based datapath_id of the switch are accepted in this field": "只可填写交换机的Mac地址或者交换机基于openflow的数据路径ID", "Only a MAC address or an OpenFlow based datapath_id of the switch are accepted in this field": "只可填写交换机的Mac地址或者交换机基于openflow的数据路径ID",
"Open External Gateway": "开启公网网关", "Open External Gateway": "开启公网网关",
"OpenStack Service": "OpenStack服务",
"Operating Status": "操作状态", "Operating Status": "操作状态",
"Operating System": "操作系统", "Operating System": "操作系统",
"Operation Name": "操作名称", "Operation Name": "操作名称",
@ -1285,7 +1326,9 @@
"Origin File Name": "原始文件名称", "Origin File Name": "原始文件名称",
"Original Password": "原始密码", "Original Password": "原始密码",
"Other Protocol": "其他协议", "Other Protocol": "其他协议",
"Other Service": "其他服务",
"Others": "其他", "Others": "其他",
"Out Cluster": "集群外",
"Outputs": "输出", "Outputs": "输出",
"Overlapping allocation pools: {pools}": "重叠的分配地址池: {pools}", "Overlapping allocation pools: {pools}": "重叠的分配地址池: {pools}",
"Owned Network": "所属网络", "Owned Network": "所属网络",
@ -1296,6 +1339,7 @@
"Ownership of a volume can be transferred from one project to another. The transfer process of the volume needs to perform the transfer operation in the original owner's project, and complete the \"accept\" operation in the receiver's project.": "卷的拥有权可以从一个项目转给另外一个。卷的转让过程需要在原拥有者的项目中执行转让操作,在接收者项目中完成“接受”操作。", "Ownership of a volume can be transferred from one project to another. The transfer process of the volume needs to perform the transfer operation in the original owner's project, and complete the \"accept\" operation in the receiver's project.": "卷的拥有权可以从一个项目转给另外一个。卷的转让过程需要在原拥有者的项目中执行转让操作,在接收者项目中完成“接受”操作。",
"PFS": "完全向前保密", "PFS": "完全向前保密",
"PGM": "", "PGM": "",
"PGs": "PG数量",
"PING": "", "PING": "",
"PXE": "", "PXE": "",
"PXE Enabled": "PXE启用", "PXE Enabled": "PXE启用",
@ -1339,8 +1383,10 @@
"Phase1 Negotiation Mode": "Phase1协商模式", "Phase1 Negotiation Mode": "Phase1协商模式",
"Philippines": "菲律宾", "Philippines": "菲律宾",
"Phone": "手机", "Phone": "手机",
"Physical CPU Usage": "物理CPU使用量",
"Physical Network": "物理网络", "Physical Network": "物理网络",
"Physical Node": "物理节点", "Physical Node": "物理节点",
"Physical Storage Usage": "物理存储使用量",
"Pitcairn": "皮特凯恩岛", "Pitcairn": "皮特凯恩岛",
"Placement service:": "放置服务(placement):", "Placement service:": "放置服务(placement):",
"Platform Info": "平台概况", "Platform Info": "平台概况",
@ -1417,6 +1463,7 @@
"Pool Info": "资源池信息", "Pool Info": "资源池信息",
"Pool Name": "资源池名称", "Pool Name": "资源池名称",
"Pool Protocol": "资源池协议", "Pool Protocol": "资源池协议",
"Pools": "",
"Port": "端口", "Port": "端口",
"Port Detail": "端口详情", "Port Detail": "端口详情",
"Port Forwarding": "端口转发", "Port Forwarding": "端口转发",
@ -1475,6 +1522,8 @@
"Public Access": "公开访问", "Public Access": "公开访问",
"Public Image": "公有镜像", "Public Image": "公有镜像",
"Public Key": "公钥", "Public Key": "公钥",
"Published In": "",
"Published Out": "",
"Puerto Rico": "波多黎各", "Puerto Rico": "波多黎各",
"QCOW2 - QEMU image format": "QCOW2-QEMU 镜像格式", "QCOW2 - QEMU image format": "QCOW2-QEMU 镜像格式",
"Qatar": "卡塔尔", "Qatar": "卡塔尔",
@ -1505,6 +1554,7 @@
"Ram value is { ram }, NUMA RAM value is { totalRam }, need to be equal. ": "内存是 { ram }MBNUMA节点的内存是{ totalRam }MB需要一致。", "Ram value is { ram }, NUMA RAM value is { totalRam }, need to be equal. ": "内存是 { ram }MBNUMA节点的内存是{ totalRam }MB需要一致。",
"Ramdisk ID": "内存盘ID", "Ramdisk ID": "内存盘ID",
"Ramdisk Image": "Ramdisk镜像", "Ramdisk Image": "Ramdisk镜像",
"Read And Write": "",
"Reader": "只读", "Reader": "只读",
"Real Name": "真实姓名", "Real Name": "真实姓名",
"Reason": "原因", "Reason": "原因",
@ -1588,6 +1638,7 @@
"Root Disk": "系统盘", "Root Disk": "系统盘",
"Root directory": "根目录", "Root directory": "根目录",
"Router": "路由器", "Router": "路由器",
"Router Advertisements Mode": "路由广播模式",
"Router Detail": "路由器详情", "Router Detail": "路由器详情",
"Router External": "外部网关", "Router External": "外部网关",
"Router ID": "路由器ID", "Router ID": "路由器ID",
@ -1596,6 +1647,8 @@
"Rules": "规则", "Rules": "规则",
"Rules Number": "规则数量", "Rules Number": "规则数量",
"Running": "运行中", "Running": "运行中",
"Running Threads": "",
"Running Time": "",
"Russia": "俄罗斯", "Russia": "俄罗斯",
"Rwanda": "卢旺达", "Rwanda": "卢旺达",
"SCTP": "", "SCTP": "",
@ -1639,6 +1692,7 @@
"Server Group": "云主机组", "Server Group": "云主机组",
"Server Group Detail": "云主机组详情", "Server Group Detail": "云主机组详情",
"Server Group Member": "云主机组成员", "Server Group Member": "云主机组成员",
"Server Status": "",
"Service": "服务", "Service": "服务",
"Service State": "服务状态", "Service State": "服务状态",
"Service Status": "管理状态", "Service Status": "管理状态",
@ -1673,6 +1727,7 @@
"Size": "容量", "Size": "容量",
"Slovakia (Slovak Republic)": "斯洛伐克", "Slovakia (Slovak Republic)": "斯洛伐克",
"Slovenia": "斯洛文尼亚", "Slovenia": "斯洛文尼亚",
"Slow Query": "",
"Small": "小", "Small": "小",
"Small(Not recommended)": "小(不推荐)", "Small(Not recommended)": "小(不推荐)",
"Smart Scheduling": "智能调度", "Smart Scheduling": "智能调度",
@ -1737,9 +1792,16 @@
"Storage": "存储", "Storage": "存储",
"Storage Backend": "存储后端", "Storage Backend": "存储后端",
"Storage Capacity(GB)": "存储容量(GB)", "Storage Capacity(GB)": "存储容量(GB)",
"Storage Cluster": "存储集群",
"Storage Cluster Bandwidth": "存储集群带宽",
"Storage Cluster IOPS": "存储集群IOPS",
"Storage Cluster OSD Latency": "存储集群OSD延迟",
"Storage Cluster Status": "存储集群状态",
"Storage Cluster Usage": "存储集群使用率",
"Storage IOPS": "存储IOPS", "Storage IOPS": "存储IOPS",
"Storage Interface": "Storage接口", "Storage Interface": "Storage接口",
"Storage Policy": "存储权限", "Storage Policy": "",
"Storage Pool Capacity Usage": "存储池容量使用情况",
"Storage Types": "存储类型", "Storage Types": "存储类型",
"Sub User": "组内用户列表", "Sub User": "组内用户列表",
"Subnet": "子网", "Subnet": "子网",
@ -1773,10 +1835,13 @@
"System Config": "系统配置", "System Config": "系统配置",
"System Disk": "系统盘", "System Disk": "系统盘",
"System Info": "系统信息", "System Info": "系统信息",
"System Load": "系统负载",
"System Reader": "系统只读权限", "System Reader": "系统只读权限",
"System Running Time": "",
"System Scope": "绑定系统范围", "System Scope": "绑定系统范围",
"System is error, please try again later.": "系统出错,请稍后再试。", "System is error, please try again later.": "系统出错,请稍后再试。",
"TCP": "", "TCP": "",
"TCP Connections": "TCP连接数",
"Tags": "标签", "Tags": "标签",
"Tags are not case sensitive": "标签不区分大小写", "Tags are not case sensitive": "标签不区分大小写",
"Taiwan": "台湾", "Taiwan": "台湾",
@ -1862,10 +1927,13 @@
"There is currently no file to paste.": "当前没有需要粘贴的文件。", "There is currently no file to paste.": "当前没有需要粘贴的文件。",
"This service will automatically query the configuration (CPU, memory, etc.) and mac address of the physical machine, and the ironic-inspector service will automatically register this information in the node information.": "此服务将对在对物理机的配置CPU、内存等和 mac 地址进行自动查询, 并且 ironic-inspector 服务会将这些信息自动注册入节点信息中。", "This service will automatically query the configuration (CPU, memory, etc.) and mac address of the physical machine, and the ironic-inspector service will automatically register this information in the node information.": "此服务将对在对物理机的配置CPU、内存等和 mac 地址进行自动查询, 并且 ironic-inspector 服务会将这些信息自动注册入节点信息中。",
"This will delete all child objects of the load balancer.": "这会删除所有LB下的资源", "This will delete all child objects of the load balancer.": "这会删除所有LB下的资源",
"Time Interval: ": "", "Threads Activity Trends": "",
"Time Interval: ": "时间间隔:",
"Timeout(Mininte)": "创建超时(分钟)", "Timeout(Mininte)": "创建超时(分钟)",
"Timeout(s)": "检查超时时间(秒)", "Timeout(s)": "检查超时时间(秒)",
"To open": "去开通", "To open": "去开通",
"Today CPU usage > 80% alert": "今日CPU使用率大于80%的告警",
"Today Memory usage > 80% alert": "今日内存使用率大于80%的告警",
"Togo": "多哥", "Togo": "多哥",
"Tokelau": "托克劳", "Tokelau": "托克劳",
"Tonga": "汤加", "Tonga": "汤加",
@ -1873,7 +1941,14 @@
"Topic": "", "Topic": "",
"Topology": "网络拓扑", "Topology": "网络拓扑",
"Total": "总计", "Total": "总计",
"Total Capacity": "总容量(GB)",
"Total Connections": "",
"Total Consumers": "",
"Total Exchanges": "",
"Total IPs": "所有IP", "Total IPs": "所有IP",
"Total Message": "",
"Total Queues": "",
"Total Ram": "总内存",
"Total {total} items": "总计:{total}", "Total {total} items": "总计:{total}",
"Trait Properties": "特性属性", "Trait Properties": "特性属性",
"Traits": "特性", "Traits": "特性",
@ -1945,6 +2020,7 @@
"Upload progress": "上传进度", "Upload progress": "上传进度",
"Uploading": "上传中", "Uploading": "上传中",
"Uruguay": "乌拉圭", "Uruguay": "乌拉圭",
"Usage": "使用率",
"Usage Type": "使用类型", "Usage Type": "使用类型",
"Usb Controller": "USB控制器", "Usb Controller": "USB控制器",
"Use Type": "使用类型", "Use Type": "使用类型",
@ -2033,7 +2109,7 @@
"Volume Type Detail": "云硬盘类型详情", "Volume Type Detail": "云硬盘类型详情",
"Wallis And Futuna Islands": "沃利斯和富图纳群岛", "Wallis And Futuna Islands": "沃利斯和富图纳群岛",
"Warn": "警告", "Warn": "警告",
"Warning": "", "Warning": "警告",
"Weight": "权重", "Weight": "权重",
"Weights": "权重", "Weights": "权重",
"Welcome": "欢迎", "Welcome": "欢迎",
@ -2076,6 +2152,7 @@
"associate floating ip": "绑定浮动IP", "associate floating ip": "绑定浮动IP",
"attach interface": "挂载网卡", "attach interface": "挂载网卡",
"availability zones": "可用域", "availability zones": "可用域",
"available": "可用",
"backup": "备份", "backup": "备份",
"backup gigabytes (GiB)": "备份容量(GiB)", "backup gigabytes (GiB)": "备份容量(GiB)",
"backups": "备份", "backups": "备份",
@ -2096,8 +2173,8 @@
"compute services": "计算服务", "compute services": "计算服务",
"confirm resize or migrate": "确认修改配置/迁移", "confirm resize or migrate": "确认修改配置/迁移",
"connect subnet": "连接子网", "connect subnet": "连接子网",
"container objects": "容器对象", "container objects": "",
"containers": "容器", "containers": "",
"create DSCP marking rule": "创建DSCP标记规则", "create DSCP marking rule": "创建DSCP标记规则",
"create a new network/subnet": "新建网络/子网", "create a new network/subnet": "新建网络/子网",
"create a new security group": "新建安全组", "create a new security group": "新建安全组",
@ -2189,7 +2266,9 @@
"hypervisor": "虚拟机管理器", "hypervisor": "虚拟机管理器",
"image": "镜像", "image": "镜像",
"images": "镜像", "images": "镜像",
"in": "进",
"ingress": "入方向", "ingress": "入方向",
"insert": "插入",
"instance": "云主机", "instance": "云主机",
"instance snapshot": "云主机快照", "instance snapshot": "云主机快照",
"instance: {name}.": "实例名称:{name}。", "instance: {name}.": "实例名称:{name}。",
@ -2217,7 +2296,8 @@
"neutron agents": "网络服务", "neutron agents": "网络服务",
"online resize": "在线修改配置", "online resize": "在线修改配置",
"open external gateway": "开启公网网关", "open external gateway": "开启公网网关",
"paste files to folder": "粘贴文件到文件夹下", "out": "出",
"paste files to folder": "",
"pause instance": "暂停云主机", "pause instance": "暂停云主机",
"phone": "手机", "phone": "手机",
"please select network": "请选择网络", "please select network": "请选择网络",
@ -2232,8 +2312,10 @@
"qoS policy": "QoS策略", "qoS policy": "QoS策略",
"qos specs": "QoS规格", "qos specs": "QoS规格",
"quota set to -1 means there is no quota limit on the current resource": "配额为设为 -1 时表示当前资源无配额限制", "quota set to -1 means there is no quota limit on the current resource": "配额为设为 -1 时表示当前资源无配额限制",
"read": "读",
"reboot instance": "重启云主机", "reboot instance": "重启云主机",
"rebuild instance": "重建云主机", "rebuild instance": "重建云主机",
"receive": "接收",
"recover instance": "恢复云主机", "recover instance": "恢复云主机",
"recycle bins": "回收站", "recycle bins": "回收站",
"release fixed ip": "释放内网IP", "release fixed ip": "释放内网IP",
@ -2267,17 +2349,22 @@
"storage backend": "存储后端", "storage backend": "存储后端",
"subnets": "子网", "subnets": "子网",
"suspend instance": "挂起云主机", "suspend instance": "挂起云主机",
"tab tables": "",
"the Republic of Abkhazia": "阿布哈兹", "the Republic of Abkhazia": "阿布哈兹",
"the folder is not empty": "文件夹非空", "the folder is not empty": "文件夹非空",
"the policy is in use": "策略正在使用中", "the policy is in use": "策略正在使用中",
"the router has connected subnet": "路由器有连接的子网", "the router has connected subnet": "路由器有连接的子网",
"the vpn gateway is in use": "VPN网关正在使用中", "the vpn gateway is in use": "VPN网关正在使用中",
"time / 24h": "次/24小时",
"to delete": "即将删除", "to delete": "即将删除",
"transmit": "发送",
"unlock instance": "解锁云主机", "unlock instance": "解锁云主机",
"unpause instance": "恢复云主机", "unpause instance": "恢复云主机",
"unshelve instance": "取消归档云主机", "unshelve instance": "取消归档云主机",
"update": "更新",
"update status": "更新状态", "update status": "更新状态",
"update template": "更新模板", "update template": "更新模板",
"used": "已使用",
"user": "用户", "user": "用户",
"user group": "用户组", "user group": "用户组",
"user groups": "用户组", "user groups": "用户组",
@ -2299,6 +2386,7 @@
"vpn IPsec policy": "VPN IPsec策略", "vpn IPsec policy": "VPN IPsec策略",
"vpn endpoint groups": "VPN端点组", "vpn endpoint groups": "VPN端点组",
"vpn services": "VPN网关", "vpn services": "VPN网关",
"write": "写",
"{ size } GB": "{ size } GB", "{ size } GB": "{ size } GB",
"{ size } KB": "{ size } KB", "{ size } KB": "{ size } KB",
"{ size } MB": "{ size } MB", "{ size } MB": "{ size } MB",

View File

@ -0,0 +1,151 @@
// 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 React, { Component } from 'react';
import { Col, Row } from 'antd';
import { observer } from 'mobx-react';
import { getSuitableValue } from 'resources/monitoring';
import { handleResponses } from 'components/PrometheusChart/utils/dataHandler';
import { merge } from 'lodash';
import { ChartType } from 'components/PrometheusChart/utils/utils';
import ChartCard from 'components/PrometheusChart/ChartCard';
@observer
class Charts extends Component {
constructor(props) {
super(props);
this.store = props.store;
}
renderChartCards() {
const baseConfig = {
span: 12,
constructorParams: {
requestType: 'range',
formatDataFn: handleResponses,
},
chartProps: {
height: 300,
scale: {
y: {
nice: true,
},
},
},
};
const chartLists = [
{
title: t('Current Connections'),
constructorParams: {
metricKey: 'memcacheService.currentConnections',
},
chartProps: {
chartType: ChartType.ONELINE,
scale: {
y: {
alias: t('Current Connections'),
},
},
},
},
{
title: t('Total Connections'),
constructorParams: {
metricKey: 'memcacheService.totalConnections',
},
chartProps: {
chartType: ChartType.ONELINE,
scale: {
y: {
alias: t('Total Connections'),
},
},
},
},
{
title: t('Read And Write'),
constructorParams: {
metricKey: 'memcacheService.readWriteBytesTotal',
modifyKeys: [t('read'), t('write')],
},
chartProps: {
chartType: ChartType.MULTILINE,
scale: {
y: {
formatter: (d) => getSuitableValue(d, 'traffic', 0),
},
},
},
},
{
title: t('Evictions'),
constructorParams: {
metricKey: 'memcacheService.evictions',
},
chartProps: {
chartType: ChartType.ONELINE,
scale: {
y: {
alias: t('Evictions'),
},
},
},
},
{
title: t('Items in Cache'),
constructorParams: {
metricKey: 'memcacheService.itemsInCache',
},
chartProps: {
chartType: ChartType.ONELINE,
scale: {
y: {
alias: t('Items in Cache'),
},
},
},
},
];
return (
<Row gutter={[16, 16]}>
{chartLists.map((chartProps) => {
const config = merge({}, baseConfig, chartProps);
const { span, ...rest } = config;
return (
<Col span={span} key={chartProps.constructorParams.metricKey}>
<ChartCard
{...rest}
currentRange={this.store.currentRange}
interval={this.store.interval}
params={{
instance: this.store.node.metric.instance,
}}
BaseContentConfig={this.props.BaseContentConfig}
/>
</Col>
);
})}
</Row>
);
}
render() {
if (this.store.isLoading) {
return null;
}
return <>{this.renderChartCards()}</>;
}
}
export default Charts;

View File

@ -0,0 +1,41 @@
// 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 React from 'react';
import { observer } from 'mobx-react';
import BaseContent from 'components/PrometheusChart/component/BaseContent';
import { getMemcacheNodes } from '../util';
import Charts from './Charts';
const Memcache = () => {
function renderChartCards(store) {
return (
<Charts
store={store}
BaseContentConfig={{
fetchNodesFunc: getMemcacheNodes,
}}
/>
);
}
return (
<BaseContent
renderChartCards={renderChartCards}
fetchNodesFunc={getMemcacheNodes}
/>
);
};
export default observer(Memcache);

View File

@ -0,0 +1,202 @@
// 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 React, { Component } from 'react';
import { Col, Row } from 'antd';
import styles from 'pages/monitor/containers/StorageCluster/index.less';
import { observer } from 'mobx-react';
import { formatUsedTime } from 'utils/index';
import { handleResponses } from 'components/PrometheusChart/utils/dataHandler';
import { get, merge } from 'lodash';
import BaseCard from 'components/PrometheusChart/BaseCard';
import { ChartType } from 'components/PrometheusChart/utils/utils';
import ChartCard from 'components/PrometheusChart/ChartCard';
@observer
class Charts extends Component {
constructor(props) {
super(props);
this.store = props.store;
}
renderTopCards() {
const baseConfig = {
span: 12,
constructorParams: {
requestType: 'current',
formatDataFn: handleResponses,
},
visibleHeight: 55,
renderContent: (store) => (
<div className={styles.topContent} style={{ height: 55 }}>
{get(store, 'data[0].y', 0)}
</div>
),
};
const chartLists = [
{
title: t('Running Time'),
span: 6,
constructorParams: {
metricKey: 'mysqlService.runningTime',
},
renderContent: (store) => (
<div className={styles.topContent} style={{ height: 55 }}>
{/* 转化为毫秒 */}
{formatUsedTime(get(store.data[0], 'y', 0) * 1000)}
</div>
),
},
{
title: t('Connected Threads'),
span: 6,
constructorParams: {
metricKey: 'mysqlService.connectedThreads',
},
},
{
title: t('Running Threads'),
span: 6,
constructorParams: {
metricKey: 'mysqlService.runningThreads',
},
},
{
title: t('Slow Query'),
span: 6,
constructorParams: {
metricKey: 'mysqlService.slowQuery',
},
},
];
return (
<Row gutter={[16, 16]}>
{chartLists.map((chartProps) => {
const config = merge({}, baseConfig, chartProps);
const { span, ...rest } = config;
return (
<Col span={span} key={chartProps.constructorParams.metricKey}>
<BaseCard
{...rest}
currentRange={this.store.currentRange}
interval={this.store.interval}
params={{
instance: this.store.node.metric.instance,
}}
/>
</Col>
);
})}
</Row>
);
}
renderChartCards() {
const baseConfig = {
span: 12,
constructorParams: {
requestType: 'range',
formatDataFn: handleResponses,
},
chartProps: {
height: 300,
scale: {
y: {
nice: true,
},
},
},
};
const chartLists = [
{
title: t('Threads Activity Trends'),
constructorParams: {
metricKey: 'mysqlService.threadsActivityTrends_connected',
},
chartProps: {
chartType: ChartType.ONELINE,
scale: {
y: {
alias: t('Threads Activity Trends'),
},
},
},
},
{
title: t('MySQL Actions'),
constructorParams: {
metricKey: 'mysqlService.mysqlActions',
modifyKeys: [t('delete'), t('insert'), t('update')],
},
chartProps: {
chartType: ChartType.MULTILINE,
scale: {
y: {
alias: t('MySQL Actions'),
},
},
},
},
{
title: t('Slow Query'),
constructorParams: {
metricKey: 'mysqlService.slowQueryChart',
},
chartProps: {
chartType: ChartType.ONELINE,
scale: {
y: {
alias: t('Slow Query'),
},
},
},
},
];
return (
<Row gutter={[16, 16]}>
{chartLists.map((chartProps) => {
const config = merge({}, baseConfig, chartProps);
const { span, ...rest } = config;
return (
<Col span={span} key={chartProps.constructorParams.metricKey}>
<ChartCard
{...rest}
currentRange={this.store.currentRange}
interval={this.store.interval}
params={{
instance: this.store.node.metric.instance,
}}
BaseContentConfig={this.props.BaseContentConfig}
/>
</Col>
);
})}
</Row>
);
}
render() {
if (this.store.isLoading) {
return null;
}
return (
<Row gutter={[16, 16]}>
<Col span={24}>{this.renderTopCards()}</Col>
<Col span={24}>{this.renderChartCards()}</Col>
</Row>
);
}
}
export default Charts;

View File

@ -0,0 +1,41 @@
// 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 React from 'react';
import { observer } from 'mobx-react';
import BaseContent from 'components/PrometheusChart/component/BaseContent';
import { getMysqlNodes } from '../util';
import Charts from './Charts';
const Mysql = () => {
function renderChartCards(store) {
return (
<Charts
store={store}
BaseContentConfig={{
fetchNodesFunc: getMysqlNodes,
}}
/>
);
}
return (
<BaseContent
renderChartCards={renderChartCards}
fetchNodesFunc={getMysqlNodes}
/>
);
};
export default observer(Mysql);

View File

@ -0,0 +1,232 @@
// 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 React, { Component } from 'react';
import { Col, Row } from 'antd';
import styles from 'pages/monitor/containers/StorageCluster/index.less';
import { observer } from 'mobx-react';
import { handleResponses } from 'components/PrometheusChart/utils/dataHandler';
import { get, merge } from 'lodash';
import BaseCard from 'components/PrometheusChart/BaseCard';
import { ChartType } from 'components/PrometheusChart/utils/utils';
import ChartCard from 'components/PrometheusChart/ChartCard';
@observer
class Charts extends Component {
constructor(props) {
super(props);
this.store = props.store;
}
renderTopCards() {
const baseConfig = {
constructorParams: {
requestType: 'current',
formatDataFn: handleResponses,
},
visibleHeight: 55,
renderContent: (store) => (
<div className={styles.topContent} style={{ height: 55 }}>
{get(store, 'data[0].y', 0)}
</div>
),
};
const chartLists = [
{
title: t('Server Status'),
span: 6,
constructorParams: {
metricKey: 'rabbitMQService.serviceStatus',
formatDataFn: (resps) => {
const tmp = {
up: 0,
down: 0,
};
const result = get(resps[0], 'data.result', []);
result.forEach((r) => {
parseInt(r.value[1], 10) === 1 ? (tmp.up += 1) : (tmp.down += 1);
});
return tmp;
},
},
renderContent: (store) => {
const { data } = store;
return (
<div className={styles.topContent} style={{ height: 55 }}>
<Row style={{ width: '100%', textAlign: 'center' }}>
<Col span={12}>{data.up + t('Up')}</Col>
<Col span={12}>{data.down + t('Down')}</Col>
</Row>
</div>
);
},
},
{
title: t('Connected Threads'),
constructorParams: {
metricKey: 'rabbitMQService.totalConnections',
},
},
{
title: t('Total Queues'),
constructorParams: {
metricKey: 'rabbitMQService.totalQueues',
},
},
{
title: t('Total Exchanges'),
constructorParams: {
metricKey: 'rabbitMQService.totalExchanges',
},
},
{
title: t('Total Consumers'),
constructorParams: {
metricKey: 'rabbitMQService.totalConsumers',
},
},
];
return (
<Row gutter={[16, 16]}>
{chartLists.map((chartProps) => {
const config = merge({}, baseConfig, chartProps);
const { span, ...rest } = config;
return (
<Col flex={1} key={chartProps.constructorParams.metricKey}>
<BaseCard
{...rest}
currentRange={this.store.currentRange}
interval={this.store.interval}
params={{
instance: this.store.node.metric.instance,
}}
/>
</Col>
);
})}
</Row>
);
}
renderChartCards() {
const baseConfig = {
span: 12,
constructorParams: {
requestType: 'range',
formatDataFn: handleResponses,
},
chartProps: {
height: 300,
scale: {
y: {
nice: true,
},
},
},
};
const chartLists = [
{
title: t('Published Out'),
constructorParams: {
metricKey: 'rabbitMQService.publishedOut',
},
chartProps: {
chartType: ChartType.ONELINE,
scale: {
y: {
alias: t('Published Out'),
},
},
},
},
{
title: t('Published In'),
constructorParams: {
metricKey: 'rabbitMQService.publishedIn',
},
chartProps: {
chartType: ChartType.ONELINE,
scale: {
y: {
alias: t('Published In'),
},
},
},
},
// {
// title: t('Total Message'),
// constructorParams: {
// metricKey: 'rabbitMQService.totalMessage',
// },
// chartProps: {
// chartType: ChartType.ONELINE,
// scale: {
// y: {
// alias: t('Total Message'),
// },
// },
// },
// },
{
title: t('Channel'),
constructorParams: {
metricKey: 'rabbitMQService.channel',
},
chartProps: {
chartType: ChartType.ONELINE,
scale: {
y: {
alias: t('Channel'),
},
},
},
},
];
return (
<Row gutter={[16, 16]}>
{chartLists.map((chartProps) => {
const config = merge({}, baseConfig, chartProps);
const { span, ...rest } = config;
return (
<Col span={span} key={chartProps.constructorParams.metricKey}>
<ChartCard
{...rest}
currentRange={this.store.currentRange}
interval={this.store.interval}
params={{
instance: this.store.node.metric.instance,
}}
BaseContentConfig={this.props.BaseContentConfig}
/>
</Col>
);
})}
</Row>
);
}
render() {
if (this.store.isLoading) {
return null;
}
return (
<Row gutter={[16, 16]}>
<Col span={24}>{this.renderTopCards()}</Col>
<Col span={24}>{this.renderChartCards()}</Col>
</Row>
);
}
}
export default Charts;

View File

@ -0,0 +1,41 @@
// 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 React from 'react';
import { observer } from 'mobx-react';
import BaseContent from 'components/PrometheusChart/component/BaseContent';
import Charts from './Charts';
import { getRabbitMQNodes } from '../util';
const RabbitMQ = () => {
function renderChartCards(store) {
return (
<Charts
store={store}
BaseContentConfig={{
fetchNodesFunc: getRabbitMQNodes,
}}
/>
);
}
return (
<BaseContent
renderChartCards={renderChartCards}
fetchNodesFunc={getRabbitMQNodes}
/>
);
};
export default observer(RabbitMQ);

View File

@ -0,0 +1,98 @@
// 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 { fetchPrometheus } from 'components/PrometheusChart/utils/utils';
import metricDict from 'components/PrometheusChart/metricDict';
import { get } from 'lodash';
import isEqual from 'react-fast-compare';
export const getMemcacheNodes = async () => {
const ret = await fetchPrometheus(
get(metricDict, 'memcacheService.currentConnections.url[0]'),
'current'
);
const {
data: { result: results = [] },
} = ret;
if (results.length === 0) {
return [
{
metric: {
instance: '',
},
},
];
}
return results.map((result) => ({
metric: {
instance: result.metric.instance,
},
}));
};
export const getRabbitMQNodes = async () => {
const response = await fetchPrometheus(
get(metricDict, 'rabbitMQService.serviceStatus.url[0]'),
'current'
);
const {
data: { result: results = [] },
} = response;
if (results.length === 0) {
return [
{
metric: {
instance: '',
},
},
];
}
const ret = [];
results.forEach((result) => {
const item = {
metric: {
instance: result.metric.instance,
},
};
if (!ret.find((i) => isEqual(i, item))) {
ret.push(item);
}
});
return ret;
};
export const getMysqlNodes = async () => {
const ret = await fetchPrometheus(
get(metricDict, 'mysqlService.runningTime.url[0]'),
'current'
);
const {
data: { result: results = [] },
} = ret;
if (results.length === 0) {
return [
{
metric: {
instance: '',
},
},
];
}
return results.map((result) => ({
metric: {
instance: result.metric.instance,
},
}));
};

View File

@ -0,0 +1,81 @@
// 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 React, { Component } from 'react';
import { observer } from 'mobx-react';
import { Radio } from 'antd';
import Mysql from './components/Mysql';
import RabbitMQ from './components/RabbitMQ';
import Memcache from './components/Memcache';
import styles from './index.less';
@observer
class OtherService extends Component {
constructor(props) {
super(props);
this.state = {
type: 'mysql',
};
}
handleTypeChange = (e) => {
this.setState({
type: e.target.value,
});
};
renderTypeSelect = () => {
const { type } = this.state;
return (
<Radio.Group onChange={this.handleTypeChange} value={type}>
<Radio.Button value="mysql">MySQL</Radio.Button>
<Radio.Button value="memcache">Memcache</Radio.Button>
<Radio.Button value="rabbitmq">RabbitMQ</Radio.Button>
</Radio.Group>
);
};
renderSelectTab = () => {
const { type } = this.state;
let Cmp = null;
switch (type) {
case 'mysql':
Cmp = Mysql;
break;
case 'memcache':
Cmp = Memcache;
break;
case 'rabbitmq':
Cmp = RabbitMQ;
break;
default:
Cmp = Mysql;
break;
}
return <Cmp />;
};
render() {
return (
<div className={styles.container}>
<div style={{ padding: '20px 20px 0 20px' }}>
{this.renderTypeSelect()}
</div>
<div className={styles.content}>{this.renderSelectTab()}</div>
</div>
);
}
}
export default OtherService;

View File

@ -0,0 +1,40 @@
.header {
font-size: 16px;
font-weight: 500;
color: rgba(0, 0, 0, 0.85);
line-height: 22px;
}
.list {
background-color: #ffffff;
box-shadow: 0px 0px 10px 0px rgba(0, 0, 0, 0.05);
.item {
height: 76px;
.title {
display: flex;
font-size: 16px;
font-weight: 400;
color: rgba(0, 0, 0, 0.65);
}
.status {
display: flex;
font-size: 14px;
font-weight: 400;
color: rgba(0, 0, 0, 0.65);
}
}
}
.container {
display: flex;
flex-direction: column;
height: 100%;
.content {
flex-grow: 1;
overflow: auto;
}
}

View File

@ -17,6 +17,7 @@ import E404 from 'pages/base/containers/404';
import PhysicalNode from '../containers/PhysicalNode'; import PhysicalNode from '../containers/PhysicalNode';
import StorageCluster from '../containers/StorageCluster'; import StorageCluster from '../containers/StorageCluster';
import OpenstackService from '../containers/OpenstackService'; import OpenstackService from '../containers/OpenstackService';
import OtherService from '../containers/OtherService';
import Overview from '../containers/Overview'; import Overview from '../containers/Overview';
const PATH = '/monitor-center'; const PATH = '/monitor-center';
@ -41,6 +42,11 @@ export default [
component: OpenstackService, component: OpenstackService,
exact: true, exact: true,
}, },
{
path: `${PATH}/other-service-admin`,
component: OtherService,
exact: true,
},
{ path: '*', component: E404 }, { path: '*', component: E404 },
], ],
}, },

View File

@ -455,7 +455,6 @@ export class CreateNetwork extends ModalAction {
}, },
], ],
hidden: ip_version !== 'ipv6', hidden: ip_version !== 'ipv6',
dependencies: ['ipv6_ra_mode'],
allowClear: true, allowClear: true,
}, },
{ {