CP-9370:Add network type and more error message for resource list report feature

Signed-off-by: Cheng Zhang <cheng.zhang@citrix.com>
This commit is contained in:
Cheng Zhang 2014-08-04 17:38:49 +08:00
parent 5eb82ae6de
commit f1c02cdc4e
7 changed files with 161 additions and 26 deletions

View File

@ -127,15 +127,23 @@ namespace XenAdmin.Actions
{
log.Warn(string.Format("Export of Pool {0} failed", this.Connection.Cache.Pools[0].Name), _exception);
log.DebugFormat("Progress of the action until exception: {0}", PercentComplete);
try
if (_exception is IOException)
{
File.Delete(_filename);
this.Description = string.Format(Messages.ACTION_EXPORT_DESCRIPTION_FAILED_OF_OPEN_FILE, _filename);
}
catch (Exception e)
else
{
log.Warn(string.Format("deleting file {0} failed", _filename), e);
try
{
File.Delete(_filename);
}
catch (Exception e)
{
log.Warn(string.Format("deleting file {0} failed", _filename), e);
}
this.Description = Messages.ACTION_EXPORT_DESCRIPTION_FAILED;
}
this.Description = Messages.ACTION_EXPORT_DESCRIPTION_FAILED;
throw new Exception(Description);
}
else
@ -254,13 +262,14 @@ namespace XenAdmin.Actions
private class NetworkInfo
{
public NetworkInfo(string name, string networkVlanID, string networkLinkStatus,
string NetworkMac, string NetworkMtu)
string NetworkMac, string NetworkMtu, string Type)
{
_name = name;
_vlanID = networkVlanID;
_linkStatus = networkLinkStatus;
_mac = NetworkMac;
_mtu = NetworkMtu;
_networkType = Type;
}
public virtual string Name
{
@ -282,11 +291,16 @@ namespace XenAdmin.Actions
{
get { return _mtu; }
}
public virtual string NetworkType
{
get { return _networkType; }
}
private string _name;
private string _vlanID;
private string _linkStatus;
private string _mac;
private string _mtu;
private string _networkType;
}
private class VMInfo
@ -586,7 +600,7 @@ namespace XenAdmin.Actions
throw new CancelledException();
string cpu_usage = PropertyAccessorHelper.hostCpuUsageStringByMetric(host, MetricUpdater);
string usage = PropertyAccessorHelper.hostMemoryUsageStringByMetric(host, MetricUpdater);
string usage = PropertyAccessorHelper.hostMemoryUsagePercentageStringByMetric(host, MetricUpdater);
string network_usage = PropertyAccessorHelper.hostNetworkUsageStringByMetric(host, MetricUpdater);
HostInfo buf = new HostInfo(host.name_label, host.address, host.uuid, cpu_usage,
@ -606,7 +620,7 @@ namespace XenAdmin.Actions
{
if (Cancelling)
throw new CancelledException();
if (network.other_config.ContainsKey("is_guest_installer_network"))
{
if (network.other_config["is_guest_installer_network"].ToLower() == "true")
@ -617,12 +631,23 @@ namespace XenAdmin.Actions
}
List<PIF> pifs = network.Connection.ResolveAll(network.PIFs);
string type;
if (Cancelling)
throw new CancelledException();
if (network.IsBond)
type = Messages.BOND;
else if (network.IsVLAN)
type = Messages.NETWORKPANEL_VLAN;
else if (pifs.Count != 0 && pifs[0].IsTunnelAccessPIF)
type = Messages.CHIN;
else
type = Messages.HYPHEN;
NetworkInfo buf;
if (pifs.Count != 0)
buf = new NetworkInfo(network.Name, Helpers.VlanString(pifs[0]), network.LinkStatusString, pifs[0].MAC, network.MTU.ToString());
buf = new NetworkInfo(network.Name, Helpers.VlanString(pifs[0]), network.LinkStatusString, pifs[0].MAC, network.MTU.ToString(), type);
else
buf = new NetworkInfo(network.Name, Messages.HYPHEN, network.LinkStatusString, Messages.HYPHEN, network.MTU.ToString());
buf = new NetworkInfo(network.Name, Messages.HYPHEN, network.LinkStatusString, Messages.HYPHEN, network.MTU.ToString(), type);
m_Networks.Add(buf);
@ -738,7 +763,7 @@ namespace XenAdmin.Actions
if (vbd != null && !vbd.IsCDROM && !vbd.IsFloppyDrive && vbd.bootable)
{
VDI vdi = vm.Connection.Resolve(vbd.VDI);
srInfo += vdi.name_label + ":" + vbd.Name + ":" + vdi.SizeText + ";";
srInfo += vdi.name_label + ":" + vdi.SizeText + ";";
}
}
if (srInfo.Length == 0)
@ -754,7 +779,7 @@ namespace XenAdmin.Actions
default_template_name = vm.other_config["base_template_name"];
VMInfo buf = new VMInfo(vm.Name, vm.uuid, PropertyAccessorHelper.vmCpuUsageStringByMetric(vm, MetricUpdater),
PropertyAccessorHelper.vmMemoryUsageStringByMetric(vm, MetricUpdater), srInfo, Convert.ToString(vm.VIFs.Count),
PropertyAccessorHelper.vmMemoryUsagePercentageStringByMetric(vm, MetricUpdater), srInfo, Convert.ToString(vm.VIFs.Count),
Convert.ToString(addresses), MacInfo, OSinfo, Convert.ToString(vm.power_state),
Convert.ToString(vm.RunningTime), running_on, default_template_name, vm.Description);
@ -841,8 +866,6 @@ namespace XenAdmin.Actions
fs = new FileStream(_filename, FileMode.Create);
fs.Write(bytes, 0, bytes.Length);
PercentComplete = 100;
if (fs != null)
fs.Close();
@ -1074,8 +1097,8 @@ namespace XenAdmin.Actions
{
FileStream fs = null;
List<string> items = new List<string>();
fs = new FileStream(_filename, FileMode.Create);
//pool information part
items.Add(Messages.POOL + ":" + Connection.Cache.Pools[0].Name);
ComposeCSVRow(ref fs, ref items);

View File

@ -110,6 +110,10 @@
<DataField>VlanID</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="NetworkType">
<DataField>NetworkType</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
</Fields>
<Query>
<DataSourceName>DummyDataSource</DataSourceName>
@ -2515,7 +2519,7 @@
<ZIndex>4</ZIndex>
<DataSetName>Report_NetworkInfo</DataSetName>
<Top>5.25cm</Top>
<Width>15cm</Width>
<Width>20.75cm</Width>
<Details>
<TableRows>
<TableRow>
@ -2541,7 +2545,7 @@
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<ZIndex>4</ZIndex>
<ZIndex>5</ZIndex>
<CanGrow>true</CanGrow>
<Value>=Fields!Name.Value</Value>
</Textbox>
@ -2568,7 +2572,7 @@
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<ZIndex>3</ZIndex>
<ZIndex>4</ZIndex>
<CanGrow>true</CanGrow>
<Value>=Fields!LinkStatus.Value</Value>
</Textbox>
@ -2595,7 +2599,7 @@
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<ZIndex>2</ZIndex>
<ZIndex>3</ZIndex>
<CanGrow>true</CanGrow>
<Value>=Fields!MAC.Value</Value>
</Textbox>
@ -2622,7 +2626,7 @@
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<ZIndex>1</ZIndex>
<ZIndex>2</ZIndex>
<CanGrow>true</CanGrow>
<Value>=Fields!MTU.Value</Value>
</Textbox>
@ -2642,11 +2646,30 @@
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<ZIndex>1</ZIndex>
<CanGrow>true</CanGrow>
<Value>=Fields!VlanID.Value</Value>
</Textbox>
</ReportItems>
</TableCell>
<TableCell>
<ReportItems>
<Textbox Name="NetworkType">
<rd:DefaultName>NetworkType</rd:DefaultName>
<Style>
<BorderStyle>
<Default>Solid</Default>
</BorderStyle>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<CanGrow>true</CanGrow>
<Value>=Fields!NetworkType.Value</Value>
</Textbox>
</ReportItems>
</TableCell>
</TableCells>
<Height>0.66667cm</Height>
</TableRow>
@ -2684,7 +2707,7 @@
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<ZIndex>9</ZIndex>
<ZIndex>11</ZIndex>
<CanGrow>true</CanGrow>
<Value>=Code.GetLabel("LBL_HOSTNAME")</Value>
</Textbox>
@ -2706,7 +2729,7 @@
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<ZIndex>8</ZIndex>
<ZIndex>10</ZIndex>
<CanGrow>true</CanGrow>
<Value>=Code.GetLabel("LBL_LINKSTATUS")</Value>
</Textbox>
@ -2734,7 +2757,7 @@
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<ZIndex>7</ZIndex>
<ZIndex>9</ZIndex>
<CanGrow>true</CanGrow>
<Value>=Code.GetLabel("LBL_MAC")</Value>
</Textbox>
@ -2763,7 +2786,7 @@
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<ZIndex>6</ZIndex>
<ZIndex>8</ZIndex>
<CanGrow>true</CanGrow>
<Value>=Code.GetLabel("LBL_MTU")</Value>
</Textbox>
@ -2792,12 +2815,40 @@
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<ZIndex>5</ZIndex>
<ZIndex>7</ZIndex>
<CanGrow>true</CanGrow>
<Value>=Code.GetLabel("LBL_VLAN")</Value>
</Textbox>
</ReportItems>
</TableCell>
<TableCell>
<ReportItems>
<Textbox Name="textbox39">
<rd:DefaultName>textbox39</rd:DefaultName>
<Style>
<BackgroundColor>Gray</BackgroundColor>
<BorderColor>
<Left>Black</Left>
</BorderColor>
<BorderStyle>
<Default>Solid</Default>
<Left>Solid</Left>
</BorderStyle>
<BorderWidth>
<Left>1pt</Left>
</BorderWidth>
<FontWeight>700</FontWeight>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<ZIndex>6</ZIndex>
<CanGrow>true</CanGrow>
<Value>=Code.GetLabel("LBL_STORAGETYPE")</Value>
</Textbox>
</ReportItems>
</TableCell>
</TableCells>
<Height>0.66667cm</Height>
</TableRow>
@ -2819,6 +2870,9 @@
<TableColumn>
<Width>3cm</Width>
</TableColumn>
<TableColumn>
<Width>5.75cm</Width>
</TableColumn>
</TableColumns>
<Height>1.33334cm</Height>
</Table>

View File

@ -780,6 +780,15 @@ namespace XenAdmin {
}
}
/// <summary>
/// Looks up a localized string similar to Export failed due to open destination file {0} failed.
/// </summary>
public static string ACTION_EXPORT_DESCRIPTION_FAILED_OF_OPEN_FILE {
get {
return ResourceManager.GetString("ACTION_EXPORT_DESCRIPTION_FAILED_OF_OPEN_FILE", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Export failed due to a header checksum mismatch. Please retry the export..
/// </summary>
@ -4989,6 +4998,15 @@ namespace XenAdmin {
}
}
/// <summary>
/// Looks up a localized string similar to Bond.
/// </summary>
public static string BOND {
get {
return ResourceManager.GetString("BOND", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Create Bond.
/// </summary>

View File

@ -357,6 +357,9 @@
<data name="ACTION_EXPORT_DESCRIPTION_FAILED" xml:space="preserve">
<value>エクスポートに失敗しました</value>
</data>
<data name="ACTION_EXPORT_DESCRIPTION_FAILED_OF_OPEN_FILE" xml:space="preserve">
<value>Export failed due to open destination file {0} failed</value>
</data>
<data name="ACTION_EXPORT_DESCRIPTION_HEADER_CHECKSUM_FAILED" xml:space="preserve">
<value>ヘッダーのチェックサムが一致しないため、エクスポートに失敗しました。もう一度エクスポートしてください。</value>
</data>
@ -1761,6 +1764,9 @@ CPU 使用率が {3} を超えるとアラートが送信されます。</value>
<data name="BIOS_STRINGS_COPIED" xml:space="preserve">
<value>BIOS 文字列のコピー</value>
</data>
<data name="BOND" xml:space="preserve">
<value>Bond</value>
</data>
<data name="BOND_CREATE" xml:space="preserve">
<value>ボンディングの作成</value>
</data>

View File

@ -357,6 +357,9 @@
<data name="ACTION_EXPORT_DESCRIPTION_FAILED" xml:space="preserve">
<value>Export failed</value>
</data>
<data name="ACTION_EXPORT_DESCRIPTION_FAILED_OF_OPEN_FILE" xml:space="preserve">
<value>Export failed due to open destination file {0} failed</value>
</data>
<data name="ACTION_EXPORT_DESCRIPTION_HEADER_CHECKSUM_FAILED" xml:space="preserve">
<value>Export failed due to a header checksum mismatch. Please retry the export.</value>
</data>
@ -1818,6 +1821,9 @@ This is a potentially dangerous operation and is not allowed.</value>
<data name="BIOS_STRINGS_COPIED" xml:space="preserve">
<value>BIOS strings copied</value>
</data>
<data name="BOND" xml:space="preserve">
<value>Bond</value>
</data>
<data name="BOND_CREATE" xml:space="preserve">
<value>Create Bond</value>
</data>

View File

@ -357,6 +357,9 @@
<data name="ACTION_EXPORT_DESCRIPTION_FAILED" xml:space="preserve">
<value>导出失败</value>
</data>
<data name="ACTION_EXPORT_DESCRIPTION_FAILED_OF_OPEN_FILE" xml:space="preserve">
<value>导出操作因源文件 {0} 打开失败</value>
</data>
<data name="ACTION_EXPORT_DESCRIPTION_HEADER_CHECKSUM_FAILED" xml:space="preserve">
<value>导出操作因标头校验和不匹配而失败。请重新尝试导出。</value>
</data>
@ -1761,6 +1764,9 @@ XenServer 可以重新启动服务器并将服务器的 CPU 级别降至池中
<data name="BIOS_STRINGS_COPIED" xml:space="preserve">
<value>已复制 BIOS 字符串</value>
</data>
<data name="BOND" xml:space="preserve">
<value>绑定</value>
</data>
<data name="BOND_CREATE" xml:space="preserve">
<value>创建绑定</value>
</data>

View File

@ -109,6 +109,17 @@ namespace XenAdmin.XenSearch
return String.Format(Messages.QUERY_MEMORY_USAGE, Util.MemorySizeStringWithoutUnits((total - (free * Util.BINARY_KILO))), Util.MemorySizeString(total));
}
public static string vmMemoryUsagePercentageStringByMetric(VM vm, MetricUpdater MetricUpdater)
{
double free = MetricUpdater.GetValue(vm, "memory_internal_free");
double total = MetricUpdater.GetValue(vm, "memory");
if (total == 0 || Double.IsNaN(total) || Double.IsNaN(free))
return Messages.HYPHEN;
return String.Format(Messages.QUERY_MEMORY_PERCENT, ((total - (free * Util.BINARY_KILO))/total * 100.0).ToString("0."), Util.MemorySizeString(total));
}
public static int vmMemoryUsageRank(VM vm)
{
double free = MetricUpdater.GetValue(vm, "memory_internal_free");
@ -221,6 +232,17 @@ namespace XenAdmin.XenSearch
return String.Format(Messages.QUERY_MEMORY_USAGE, Util.MemorySizeStringWithoutUnits((total - free) * Util.BINARY_KILO), Util.MemorySizeString(total * Util.BINARY_KILO));
}
public static string hostMemoryUsagePercentageStringByMetric(Host host, MetricUpdater MetricUpdater)
{
double free = MetricUpdater.GetValue(host, "memory_free_kib");
double total = MetricUpdater.GetValue(host, "memory_total_kib");
if (total == 0 || Double.IsNaN(total) || Double.IsNaN(free))
return Messages.HYPHEN;
return String.Format(Messages.QUERY_MEMORY_PERCENT, ((total - free) / total * 100.0).ToString("0."), Util.MemorySizeString(total * Util.BINARY_KILO));
}
public static string hostMemoryUsageString(Host host)
{
return hostMemoryUsageStringByMetric(host, MetricUpdater);