private void CreateNewConnection(string dbFileName, string username, string password) { string fileName = TestResource(dbFileName); Assert.True(File.Exists(fileName), String.Format("Provided filename does not exist: '{0}'. " + "If this is a new file, maybe the 'Copy To Ouput Directory' property has not been set", fileName)); XenAdminConfigManager.Provider = new TestXenAdminConfigProvider(); IXenConnection connection = new XenConnection(fileName, dbFileName); ServicePointManager.DefaultConnectionLimit = 20; ServicePointManager.ServerCertificateValidationCallback = SSL.ValidateServerCertificate; Session session = connection.Connect(username, password); Assert.NotNull(session); connection.LoadCache(session); Assert.True(connection.CacheIsPopulated); lock (ConnectionListLock) { if (connections.ContainsKey(dbFileName)) { connections.Remove(dbFileName); } connections.Add(dbFileName, connection); } }
public void OnTimer(object sender, System.Timers.ElapsedEventArgs args) { log.Info("XenServer Health Check Service start to refresh uploading tasks"); //We need to check if CIS can be accessed in current enviroment List <ServerInfo> servers = ServerListHelper.instance.GetServerList(); foreach (ServerInfo server in servers) { if (server.task != null && (!server.task.IsCompleted || !server.task.IsCanceled || !server.task.IsFaulted)) { continue; } XenConnection connectionInfo = new XenConnection(); connectionInfo.Hostname = server.HostName; connectionInfo.Username = server.UserName; connectionInfo.Password = server.Password; log.InfoFormat("Check server {0} with user {1}", connectionInfo.Hostname, connectionInfo.Username); Session session = new Session(server.HostName, 80); session.APIVersion = API_Version.LATEST; try { session.login_with_password(server.UserName, server.Password); connectionInfo.LoadCache(session); if (RequestUploadTask.Request(connectionInfo, session) || RequestUploadTask.OnDemandRequest(connectionInfo, session)) { // Create a task to collect server status report and upload to CIS server log.InfoFormat("Start to upload server status report for XenServer {0}", connectionInfo.Hostname); XenServerHealthCheckBundleUpload upload = new XenServerHealthCheckBundleUpload(connectionInfo); Action uploadAction = delegate() { upload.runUpload(cts.Token); }; System.Threading.Tasks.Task task = new System.Threading.Tasks.Task(uploadAction); task.Start(); server.task = task; ServerListHelper.instance.UpdateServerInfo(server); } session.logout(); session = null; } catch (Exception exn) { if (session != null) { session.logout(); } log.Error(exn, exn); } } }
public void OnTimer(object sender, System.Timers.ElapsedEventArgs args) { log.Info("XenServer Health Check Service start to refresh uploading tasks"); //We need to check if CIS can be accessed in current enviroment List<ServerInfo> servers = ServerListHelper.instance.GetServerList(); foreach (ServerInfo server in servers) { if (server.task != null && (!server.task.IsCompleted || !server.task.IsCanceled || !server.task.IsFaulted)) { continue; } XenConnection connectionInfo = new XenConnection(); connectionInfo.Hostname = server.HostName; connectionInfo.Username = server.UserName; connectionInfo.Password = server.Password; log.InfoFormat("Check server {0} with user {1}", connectionInfo.Hostname, connectionInfo.Username); Session session = new Session(server.HostName, 80); session.APIVersion = API_Version.LATEST; try { session.login_with_password(server.UserName, server.Password); connectionInfo.LoadCache(session); if (RequestUploadTask.Request(connectionInfo, session) || RequestUploadTask.OnDemandRequest(connectionInfo, session)) { // Create a task to collect server status report and upload to CIS server log.InfoFormat("Start to upload server status report for XenServer {0}", connectionInfo.Hostname); XenServerHealthCheckBundleUpload upload = new XenServerHealthCheckBundleUpload(connectionInfo); Action uploadAction = delegate() { upload.runUpload(cts.Token); }; System.Threading.Tasks.Task task = new System.Threading.Tasks.Task(uploadAction); task.Start(); server.task = task; ServerListHelper.instance.UpdateServerInfo(server); } session.logout(); session = null; } catch (Exception exn) { if (session != null) session.logout(); log.Error(exn, exn); } } }
private void CreateNewConnection(string dbFileName, string username, string password) { string fileName = TestResource(dbFileName); Assert.True(File.Exists(fileName), String.Format("Provided filename does not exist: '{0}'. " + "If this is a new file, maybe the 'Copy To Ouput Directory' property has not been set", fileName)); XenAdminConfigManager.Provider = new TestXenAdminConfigProvider(); IXenConnection connection = new XenConnection(fileName, dbFileName); ServicePointManager.DefaultConnectionLimit = 20; ServicePointManager.ServerCertificateValidationCallback = SSL.ValidateServerCertificate; Session session = connection.Connect(username, password); Assert.NotNull(session); connection.LoadCache(session); Assert.True(connection.CacheIsPopulated); lock (ConnectionListLock) { if (connections.ContainsKey(dbFileName)) connections.Remove(dbFileName); connections.Add(dbFileName,connection); } }
public void OnTimer(object sender, System.Timers.ElapsedEventArgs args) { log.Info("XenServer Health Check Service start to refresh uploading tasks"); //We need to check if CIS can be accessed in current enviroment List<ServerInfo> servers = ServerListHelper.instance.GetServerList(); foreach (ServerInfo server in servers) { if (server.task != null && (!server.task.IsCompleted || !server.task.IsCanceled || !server.task.IsFaulted)) { continue; } bool needReconnect = false; log.InfoFormat("Check server {0} with user {1}", server.HostName, server.UserName); Session session = new Session(server.HostName, 80); session.APIVersion = API_Version.LATEST; try { session.login_with_password(server.UserName, server.Password, Helper.APIVersionString(API_Version.LATEST), Session.UserAgent); } catch (Exception exn) { if (exn is Failure && ((Failure)exn).ErrorDescription[0] == Failure.HOST_IS_SLAVE) { string masterName = ((Failure)exn).ErrorDescription[1]; if (ServerListHelper.instance.UpdateServerCredential(server, masterName)) { log.InfoFormat("Refresh credential to master {0} need refresh connection", masterName); server.HostName = masterName; needReconnect = true; } else { log.InfoFormat("Remove credential since it is the slave of master {0}", masterName); if (session != null) session.logout(); log.Error(exn, exn); continue; } } else { if (session != null) session.logout(); log.Error(exn, exn); continue; } } try { if (needReconnect) { if (session != null) session.logout(); log.InfoFormat("Reconnect to master {0}", server.HostName); session = new Session(server.HostName, 80); session.APIVersion = API_Version.LATEST; session.login_with_password(server.UserName, server.Password, Helper.APIVersionString(API_Version.LATEST), Session.UserAgent); } XenConnection connectionInfo = new XenConnection(); connectionInfo.Hostname = server.HostName; connectionInfo.Username = server.UserName; connectionInfo.Password = server.Password; connectionInfo.LoadCache(session); if (RequestUploadTask.Request(connectionInfo, session) || RequestUploadTask.OnDemandRequest(connectionInfo, session)) { // Create a task to collect server status report and upload to CIS server log.InfoFormat("Start to upload server status report for XenServer {0}", connectionInfo.Hostname); XenServerHealthCheckBundleUpload upload = new XenServerHealthCheckBundleUpload(connectionInfo); Action uploadAction = delegate() { upload.runUpload(cts.Token); }; System.Threading.Tasks.Task task = new System.Threading.Tasks.Task(uploadAction); task.Start(); server.task = task; ServerListHelper.instance.UpdateServerInfo(server); } session.logout(); session = null; } catch (Exception exn) { if (session != null) session.logout(); log.Error(exn, exn); } } }
public void OnTimer(object sender, System.Timers.ElapsedEventArgs args) { log.Info("XenServer Health Check Service start to refresh uploading tasks"); //We need to check if CIS can be accessed in current enviroment List <ServerInfo> servers = ServerListHelper.instance.GetServerList(); foreach (ServerInfo server in servers) { if (server.task != null && (!server.task.IsCompleted || !server.task.IsCanceled || !server.task.IsFaulted)) { continue; } bool needReconnect = false; log.InfoFormat("Check server {0} with user {1}", server.HostName, server.UserName); Session session = new Session(server.HostName, 80); session.APIVersion = API_Version.LATEST; try { session.login_with_password(server.UserName, server.Password, Helper.APIVersionString(API_Version.LATEST), Session.UserAgent); } catch (Exception exn) { if (exn is Failure && ((Failure)exn).ErrorDescription[0] == Failure.HOST_IS_SLAVE) { string masterName = ((Failure)exn).ErrorDescription[1]; if (ServerListHelper.instance.UpdateServerCredential(server, masterName)) { log.InfoFormat("Refresh credential to master {0} need refresh connection", masterName); server.HostName = masterName; needReconnect = true; } else { log.InfoFormat("Remove credential since it is the slave of master {0}", masterName); if (session != null) { session.logout(); } log.Error(exn, exn); continue; } } else { if (session != null) { session.logout(); } log.Error(exn, exn); continue; } } try { if (needReconnect) { if (session != null) { session.logout(); } log.InfoFormat("Reconnect to master {0}", server.HostName); session = new Session(server.HostName, 80); session.APIVersion = API_Version.LATEST; session.login_with_password(server.UserName, server.Password, Helper.APIVersionString(API_Version.LATEST), Session.UserAgent); } XenConnection connectionInfo = new XenConnection(); connectionInfo.Hostname = server.HostName; connectionInfo.Username = server.UserName; connectionInfo.Password = server.Password; connectionInfo.LoadCache(session); if (RequestUploadTask.Request(connectionInfo, session) || RequestUploadTask.OnDemandRequest(connectionInfo, session)) { // Create a task to collect server status report and upload to CIS server log.InfoFormat("Start to upload server status report for XenServer {0}", connectionInfo.Hostname); XenServerHealthCheckBundleUpload upload = new XenServerHealthCheckBundleUpload(connectionInfo); Action uploadAction = delegate() { upload.runUpload(cts.Token); }; System.Threading.Tasks.Task task = new System.Threading.Tasks.Task(uploadAction); task.Start(); server.task = task; ServerListHelper.instance.UpdateServerInfo(server); } session.logout(); session = null; } catch (Exception exn) { if (session != null) { session.logout(); } log.Error(exn, exn); } } }