La función de API get_data_ex permite obtener toda la información sobre el escenario, como a continuación:
El parámetro manager_data es una cadena en el formato xml. Los datos contienen toda la información sobre el escenario. Por ejemplo, el estado del escenario (en ejecución, detenido, etc.), eventos, estadísticas de escenario, entre otros. La cadena en formato xml se parece a lo siguiente:
Las secciones siguientes demuestran cómo utilizar la cadena de xml.
Argumentos
La API get_data_ex incluye los argumentos descritos en la tabla siguiente:
Nombre |
Tipo |
Descripción |
---|---|---|
session_id |
uint |
El ID de sesión que se ha devuelto llamando a la API create_session. |
scenarios_with_statistics |
uint |
La matriz de los ID de escenario. Recupera la estadística de los escenarios. |
last_update_time |
ulong |
Última actualización de la marca de tiempo. |
request_flag |
uint |
Solicita el tipo de datos. Los valores pueden ser los siguientes: 1: datos del escenario 2: datos cdp [no se utilizan ahora] 4: datos de gestión del host 8: datos de instantánea 15: todos los datos anteriores |
manager_data |
out string |
Devuelve los datos del escenario en el formato xml. |
Valores de retorno
El tipo de valor de retorno es booleano. Cuando el valor de retorno sea verdadero, el comando finalizará correctamente. Cuando el valor de retorno sea falso, el comando no finaliza correctamente. Si el valor de retorno es falso, revise el mensaje para determinar el motivo por el cual la API es errónea.
Ejemplos
Ejemplo 1:
public bool get_data_ex_example()
{
try
{
uint[] scenarios_with_statistics = new uint[] { _scenario_id };
uint request_flag = 1;
ulong last_update_time = 0;
string manager_data = "";
bool res = get_mng().get_data_ex(_session_id, scenarios_with_statistics, request_flag, ref last_update_time, out manager_data);
return res;
}
catch (Exception ex)
{
System.Windows.Forms.MessageBox.Show(ex.Message);
}
return false;
}
Ejemplo 2:
Esta función analiza los datos del búfer de XML (manager_data) que ha devuelto la función get_data_ex(). El ejemplo siguiente describe cómo obtener el estado del escenario cuando se ejecuta o se detiene:
string get_scenario_state (string manager_data, string scenario_name_or_id) { string scenario_state = "unknown"; XmlDocument manager_data_doc = new XmlDocument(); manager_data_doc.LoadXml(manager_data); XmlNode root_node = manager_data_doc.SelectSingleNode(".//manager_data"); if (root_node == null) { return scenario_state; } //get all the scenario data information XmlNode scenario_nodes = root_node.SelectSingleNode(".//scenarios"); if (scenario_nodes == null) { return scenario_state; } foreach (XmlNode scenario_node in scenario_nodes.ChildNodes) { uint scenario_id = 0; string scenario_name = ""; XmlAttribute id_attr = scenario_node.Attributes["id"]; if (id_attr != null) scenario_id = Convert.ToUInt32(id_attr.Value); XmlAttribute name_attr = scenario_node.Attributes["name"]; if (name_attr != null) scenario_name = name_attr.Value; if (scenario_name_or_id != scenario_id.ToString() && scenario_name_or_id.ToLower() != scenario_name.ToLower()) continue; //get the scenario status, running or stopped foreach (XmlNode node in scenario_node.ChildNodes) { //get the scenario state, running or stop if (0 == string.Compare("state", node.Name, true)) { if (node.Attributes["val"] != null) { scenario_state = node.Attributes["val"].Value.ToLower(); } } } } return scenario_state; }
Ejemplo 3:
Esta función analiza los datos del búfer de XML (manager_data) que ha devuelto la función get_data_ex(). El ejemplo siguiente describe cómo obtener todos los eventos para el escenario:
void get_scenario_events(string manager_data, string scenario_name_or_id, ref ArrayList events) { XmlDocument manager_data_doc = new XmlDocument(); manager_data_doc.LoadXml(manager_data); XmlNode root_node = manager_data_doc.SelectSingleNode(".//manager_data"); if (root_node == null) { return ; } //get all the scenario data information XmlNode scenario_nodes = root_node.SelectSingleNode(".//scenarios"); if (scenario_nodes == null) { return ; } foreach (XmlNode scenario_node in scenario_nodes.ChildNodes) { uint scenario_id = 0; string scenario_name = ""; XmlAttribute id_attr = scenario_node.Attributes["id"]; if (id_attr != null) scenario_id = Convert.ToUInt32(id_attr.Value); XmlAttribute name_attr = scenario_node.Attributes["name"]; if (name_attr != null) scenario_name = name_attr.Value; if (scenario_name_or_id != scenario_id.ToString() && scenario_name_or_id.ToLower() != scenario_name.ToLower()) continue; //get the scenario status, running or stopped foreach (XmlNode node in scenario_node.ChildNodes) { //get the scenario state, running or stop if (0 == string.Compare("gen", node.Name, true)) { events.Add(new event_data_c(node)); } } } }
Ejemplo 4:
Se debe definir el parámetro scenarios_with_statistics para obtener la estadística de sincronización y replicación de un escenario. El parámetro es una matriz. Para obtener la estadística para más de un escenario, se deben agregar los ID de los escenarios a la matriz.
get_data_ex obtiene la estadística siguiente:
Nota: Las pantallas siguientes ilustran el proceso de transferencia y sincronización de la información de estadísticas.
Código
Esta función analiza los datos del búfer de XML (manager_data) que ha devuelto la función get_data_ex(). El código siguiente muestra cómo obtener la estadística de transferencia y sincronización. (Consulte las pantallas anteriores.)
void get_scenario_sync_statistics(string manager_data, string scenario_name_or_id, ref ArrayList sync_statistics) { XmlDocument manager_data_doc = new XmlDocument(); manager_data_doc.LoadXml(manager_data); XmlNode root_node = manager_data_doc.SelectSingleNode(".//manager_data"); if (root_node == null) { return; } //get all the scenario data information XmlNode scenario_nodes = root_node.SelectSingleNode(".//scenarios"); if (scenario_nodes == null) { return; } foreach (XmlNode scenario_node in scenario_nodes.ChildNodes) { uint scenario_id = 0; string scenario_name = ""; XmlAttribute id_attr = scenario_node.Attributes["id"]; if (id_attr != null) scenario_id = Convert.ToUInt32(id_attr.Value); XmlAttribute name_attr = scenario_node.Attributes["name"]; if (name_attr != null) scenario_name = name_attr.Value; if (scenario_name_or_id != scenario_id.ToString() && scenario_name_or_id.ToLower() != scenario_name.ToLower()) continue; //get the scenario status, running or stopped foreach (XmlNode node in scenario_node.ChildNodes) { //get the scenario state, running or stop if (0 == string.Compare("statistics", node.Name, true)) { sync_statistics.Add(new host_statistics_c(node)); } } } }
Ejemplo 5:
El código siguiente muestra cómo recuperar la estadística de sincronización para los escenarios.
ArrayList sync_statistics = new ArrayList(); get_scenario_sync_statistics(manager_data, "FileServer 1", ref sync_statistics); //show the statistics foreach (host_statistics_c stat in sync_statistics) { //host name string host_name = stat.host_name; //transmission statistics foreach (transfer_to_replica_c trans in stat.trans_to_reps) { //handle the transfer data such as speed. ulong speed = trans.transmission_speed; } //sync statistics foreach (sync_statistics_host_c sync_host in stat.children_hosts) { //root directory foreach(sync_statistics_root_dir_c root_dir in sync_host.sync_root_dirs) { //root_dir.total_size } } }
Copyright © 2015 Arcserve.
Todos los derechos reservados.
|
|