/// <summary> /// Get the default database schema compiled from the database. /// For a config variable, we fetch a static defined server, database and schema from the application's metadata to show "intellisence". /// </summary> /// <param name="databaseName">Could be a name like MyDb or a variable like {$KEY{SERVER_VALUE}{DATABASE_VALUE}} OR {$DATABASE_SOURCE{1}{myDb}}.</param> /// <param name="parentMetadata">Metadatas</param> /// <param name="appMetadata">App metadata</param> private static DatabaseMetadata GetDatabaseMetadata(ServerMetadata parentMetadata, AppMetadata appMetadata, string databaseName) { if (String.IsNullOrEmpty(databaseName)) { throw new ArgumentNullException("databaseName"); } databaseName = databaseName.ToLower(); //If is a database name if (parentMetadata.ContainsKey(databaseName)) { return(parentMetadata[databaseName]); } //If is a variable var v = databaseName.ParseConfigVariable(); if (v != null && appMetadata.ContainsKey(v.Server) && appMetadata[v.Server].ContainsKey(v.Database)) { return(appMetadata[v.Server][v.Database]); } throw new ConfigurationException(String.Format("Database not found in the configuration. Name : {0}", databaseName)); }
/*Please use this method for reading the conf file*/ private void ReadConfigurationFile() { string current_dir = System.IO.Directory.GetCurrentDirectory(); XmlDocument xmlDoc = new XmlDocument(); //* create an xml document object. xmlDoc.Load(_configFile); //* load the XML document from the specified file. XmlNodeList puppetmasteriplist = xmlDoc.GetElementsByTagName("PuppetMasterIP"); XmlNodeList puppetmasterportlist = xmlDoc.GetElementsByTagName("PuppetMasterPort"); XmlNodeList serverslist = xmlDoc.GetElementsByTagName("Server"); _puppetIP = puppetmasteriplist[0].InnerText; _puppetPort = Convert.ToInt32(puppetmasterportlist[0].InnerText); _servers = new List <ServerMetadata>(); for (int i = 0; i < 3; i++) { //TODO: currently just reading first server XmlNodeList server_ipportlist = serverslist[i].ChildNodes; string id = server_ipportlist[0].InnerText; string ip_addr = server_ipportlist[1].InnerText; int port = Convert.ToInt32(server_ipportlist[2].InnerText); ServerMetadata sm = new ServerMetadata(); sm.Username = id; sm.IP_Addr = ip_addr; sm.Port = port; _servers.Add(sm); } }
public IReadOnlyList <ServerMetadata> FetchMetaData() { using (var connection = _connectionFactory.CreateConnection()) { connection.Open(); using (var command = connection.CreateCommand()) { command.CommandText = "Select [Id], [HostName] from ServerMetadata"; var reader = command.ExecuteReader(); var result = new List <ServerMetadata>(); while (reader.Read()) { var entity = new ServerMetadata(); entity.Id = reader.GetFieldValue <long>(0); entity.HostName = reader.GetFieldValue <string>(1); result.Add(entity); } reader.Close(); return(result); } } }
public static ILookupService GetRandomServer(List <ServerMetadata> servers) { ILookupService server = null; String connectionString = ""; ServerMetadata chosenServer = null; while (server == null) { int server_num = new Random().Next(0, 3); chosenServer = servers[server_num]; connectionString = "tcp://" + chosenServer.IP_Addr + ":" + chosenServer.Port + "/" + chosenServer.Username + "/" + Common.Constants.LOOKUP_SERVICE_NAME; try { server = (ILookupService)Activator.GetObject( typeof(ILookupService), connectionString); } catch (Exception) { Log.Debug("Common", "Could not contact server, retrying in 100ms"); } Thread.Sleep(100); } Console.WriteLine("Random server to contact is: " + connectionString); return(server); }
/// <summary> /// Initializes a new instance of the <see cref="Server"/> class. /// </summary> public Server() { Addresses = new Dictionary<string, IList<ServerAddress>>(); AttachedVolumes = new List<ServerVolumeReference>(); Metadata = new ServerMetadata(); SecurityGroups = new List<SecurityGroupReference>(); }
protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.ApplyConfiguration(ServerMetadata.GetConfiguration()); modelBuilder.ApplyConfiguration(ServerIpV4.GetIpV4Configuration()); modelBuilder.ApplyConfiguration(ServerIpV6.GetIpV6Configuration()); modelBuilder.ApplyConfiguration(Server.GetConfiguration()); base.OnModelCreating(modelBuilder); }
protected override void OnModelCreating(DbModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Configurations.Add(ServerMetadata.GetConfiguration()); modelBuilder.Configurations.Add(ServerIpV4.GetIpV4Configuration()); modelBuilder.Configurations.Add(ServerIpV6.GetIpV6Configuration()); modelBuilder.Configurations.Add(Server.GetConfiguration()); modelBuilder.Configurations.Add(VideoChannel.GetConfiguration()); modelBuilder.Configurations.Add(RecognitionLog.GetConfiguration()); }
private static bool MergeServer(ServerModifierModel mergedServer, List <ServerModifier> userConfigServers, ServerMetadata defaultServerSchema, AppMetadata appMetadata) { var hasChange = false; var userConfigServer = userConfigServers.FirstOrDefault(s => s.Id == mergedServer.Id); if (defaultServerSchema == null) { hasChange = true; } //Add new if (userConfigServer == null) { userConfigServer = new ServerModifier { Id = mergedServer.Id }; userConfigServers.Add(userConfigServer); } //Apply changes userConfigServer.TemplateId = mergedServer.TemplateId; userConfigServer.BasedOn = mergedServer.UseTemplateId; userConfigServer.Description = mergedServer.Description; if (mergedServer.TemplateId != 0 || mergedServer.UseTemplateId != 0 || !String.IsNullOrEmpty(mergedServer.Description)) { hasChange = true; } if (mergedServer.Databases != null) { foreach (var mergedDatabase in mergedServer.Databases) { var defaultDatabaseSchema = GetDatabaseMetadata(defaultServerSchema, appMetadata, mergedDatabase.Name); if (MergeDatabase(mergedDatabase, userConfigServer.Databases, defaultDatabaseSchema, appMetadata)) { hasChange = true; } } } //If no change has been detected with the default config if (!hasChange) { userConfigServers.Remove(userConfigServer); } return(hasChange); }
private IConsistencyService getOtherServers(ServerMetadata servers) { ServerMetadata chosenServer = servers; String connectionString = "tcp://" + chosenServer.IP_Addr + ":" + chosenServer.Port + "/" + servers.Username + "/" + Common.Constants.CONSISTENCY_SERVICE_NAME; Log.Show(_username, "Trying to find server: " + connectionString); IConsistencyService server = (IConsistencyService)Activator.GetObject( typeof(IConsistencyService), connectionString); return(server); }
//used for adding servers in the treeview public void updateServersTree(object sender, EventArgs ea) { if (InvokeRequired) { Invoke(new Action <object, EventArgs>(updateServersTree), sender, ea); return; } ServerMetadata sm = (ServerMetadata)sender; TreeNode newNode = new TreeNode(sm.Username); newNode.Name = sm.Username; int index = treeView1.Nodes.IndexOfKey("Servers"); treeView1.Nodes[index].Nodes.Insert(0, newNode); newNode.Parent.Expand(); show(sm.Username + " just came online"); }
private IServerFacade connectToServerFacadeService(ServerMetadata sm) { String connectionString = "tcp://" + sm.IP_Addr + ":" + sm.Port + "/" + sm.Username + "/" + Common.Constants.SERVER_FACADE_SERVICE; IDictionary RemoteChannelProperties = new Dictionary <string, string>(); RemoteChannelProperties["name"] = sm.Username; TcpChannel server_channel = new TcpChannel(RemoteChannelProperties, null, null); ChannelServices.RegisterChannel(server_channel, true); //TODO: uncomment and fix this to make it work IServerFacade facadeService = (IServerFacade)Activator.GetObject( typeof(IServerFacade), connectionString); return(facadeService); }
public bool registerServer(string username, string ip_addr, int port) { ServerMetadata sm = new ServerMetadata(); sm.Username = username; sm.IP_Addr = ip_addr; sm.Port = port; //adding the client metadata to the global hashtable so that it can be used later on servers_list.Add(username, sm); IServerFacade isf = connectToServerFacadeService(sm); serverFacadeList.Add(username, isf); Gui.updateServersTree(sm, null); return(true); }
private void connectMenuItem_Click(object sender, EventArgs e) { //fetch selected username string username = treeView1.SelectedNode.Text; if (username.Equals("Servers") || username.Equals("Clients")) { return; } string parent = treeView1.SelectedNode.Parent.Text; if (parent.Equals("Servers")) { ServerMetadata sm = (ServerMetadata)pms.getServersList()[username]; IServerFacade isf = (IServerFacade)pms.getServerFacadeList()[username]; isf.Connect(); /*commented because Server Facade is not implemented yet*/ //show(username + " is now connected"); treeView1.SelectedNode.ImageIndex = 0; treeView1.SelectedNode.SelectedImageIndex = 0; } else if (parent.Equals("Clients")) { ClientMetadata cm = (ClientMetadata)pms.getClientsList()[username]; IClientFacade fs = (IClientFacade)pms.getClientFacadeList()[username]; fs.Connect(); //EXCEPTION UNHANDLED - WASIF CHECK THIS show(username + " has been connected"); treeView1.SelectedNode.ImageIndex = 0; treeView1.SelectedNode.SelectedImageIndex = 0; } else { return; } }
/// <inheritdoc cref="ServerMetadata.DeleteAsync"/> public static void Delete(this ServerMetadata metadata, string key) { metadata.DeleteAsync(key).ForceSynchronous(); }
/// <inheritdoc cref="ServerMetadata.UpdateAsync"/> public static void Update(this ServerMetadata metadata, bool overwrite = false) { metadata.UpdateAsync(overwrite).ForceSynchronous(); }
/// <inheritdoc cref="ServerMetadata.CreateAsync"/> public static void Create(this ServerMetadata metadata, string key, string value) { metadata.CreateAsync(key, value).ForceSynchronous(); }
/// <inheritdoc cref="ComputeService.UpdateServerMetadataAsync" /> public static ServerMetadata UpdateServerMetadata(this ComputeService service, Identifier serverId, ServerMetadata metadata, bool overwrite = false) { return(service.UpdateServerMetadataAsync(serverId, metadata, overwrite).ForceSynchronous()); }
private void readEventFileAndDispatchEvents() { string line = string.Empty; System.IO.StreamReader sr = new System.IO.StreamReader(openFileDialog1.FileName); while ((line = sr.ReadLine()) != null) { show(line); string opcode = line.Split(' ')[0]; string username; IClientFacade icf; IServerFacade sf; List <CalendarSlot> clientCalendar; //TODO: fetch initiator from Users list switch (opcode) { case "disconnect": username = line.Split(' ')[1]; if (username.StartsWith("central")) { ServerMetadata sm = (ServerMetadata)pms.getServersList()[username]; IServerFacade isf = (IServerFacade)pms.getServerFacadeList()[username]; while (isf == null) { show("Trying to disconnect server: " + username); isf = (IServerFacade)pms.getServerFacadeList()[username]; Thread.Sleep(100); } try { isf.Disconnect(); changeIconToDisconnected(username, null); } catch (Exception ioe) { MessageBox.Show(ioe.ToString()); } } else { icf = (IClientFacade)pms.getClientFacadeList()[username]; while (icf == null) { show("Trying to disconnect client: " + username); icf = (IClientFacade)pms.getClientFacadeList()[username]; Thread.Sleep(1000); } try { icf.Disconnect(); } catch (Exception ee) { show("Exception: " + ee.Message); } changeIconToDisconnected(username, null); } break; case "connect": username = line.Split(' ')[1].Trim(); string ip = line.Split(' ')[2].Split(':')[0].Trim(); int port = Convert.ToInt32(line.Split(' ')[2].Split(':')[1]); icf = (IClientFacade)pms.getClientFacadeList()[username]; sf = (IServerFacade)pms.getServerFacadeList()[username]; if (icf != null) //means the client has already been created { show("Trying to reconnect to client: " + username); icf.Connect(); changeIconToConnected(username, null); } else if (sf != null) { show("Reconnecting to server: " + username); sf.Connect(); changeIconToConnected(username, null); } else //means a new process needs to be started { if (username.StartsWith("central")) { string path = server_dir; ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.FileName = path + "Server.exe"; startInfo.Arguments = username + " " + port; startInfo.WindowStyle = ProcessWindowStyle.Minimized; Process process = new Process(); process.StartInfo = startInfo; process.Start(); processes.Add(process); //TODO: save the PIDS of all processes and kill them on exit //if server is online, we move on to the next event. If not, we wait until the server is online IServerFacade isf = (IServerFacade)pms.getServerFacadeList()[username]; while (isf == null) { Thread.Sleep(500); isf = (IServerFacade)pms.getServerFacadeList()[username]; } } else //means its a client { string path = client_dir; ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.FileName = path + "Client.exe"; startInfo.Arguments = username + " " + port; startInfo.WindowStyle = ProcessWindowStyle.Minimized; Process process = new Process(); process.StartInfo = startInfo; process.Start(); processes.Add(process); //if client is online, we move on to the next event. If not, we wait until the client is online IClientFacade cf = (IClientFacade)pms.getClientFacadeList()[username]; while (cf == null) { Thread.Sleep(500); cf = (IClientFacade)pms.getClientFacadeList()[username]; } } } break; case "readCalendar": username = line.Split(' ')[1].Trim(); icf = (IClientFacade)pms.getClientFacadeList()[username]; try { clientCalendar = icf.ReadCalendar(); show("Calendar for " + username + ":"); foreach (CalendarSlot slot in clientCalendar) { show(slot); } } catch (Exception ee) { show("Exception: " + ee.Message); } break; case "reservation": //reservation {GroupMeeting; user1, user2; 13, 25 } string data = line.Split('{')[1].Split('}')[0].Trim(); string desc = data.Split(';')[0].Trim(); string initiator = data.Split(';')[1].Split(',')[0].Trim(); List <string> usersList = data.Split(';')[1].Trim().Split(',').Select(s => s.Trim()).ToList <string>(); List <int> slotsList = data.Split(';')[2].Trim().Split(',').Select(s => s.Trim()).ToList <string>().ConvertAll <int>(Convert.ToInt32); ReservationRequest rr = new ReservationRequest(); rr.Description = desc; rr.Users = usersList; rr.Slots = slotsList; icf = (IClientFacade)pms.getClientFacadeList()[initiator]; while (icf == null) { show("Trying to reconnect to initiator: " + initiator); icf = (IClientFacade)pms.getClientFacadeList()[initiator]; Thread.Sleep(100); } try { icf.CreateReservation(rr); } catch (Exception e) { show("Error on create reservation: " + e.Message); } Thread.Sleep(1000); break; case "wait": int seconds = Convert.ToInt32(line.Split(' ')[1].Trim()); show("Sleeping for " + seconds + " second(s)"); Thread.Sleep(seconds * 1000); break; case "shutdown": show("Shutting down all processes in 2 seconds"); Thread.Sleep(2000); //killing all clients foreach (Process pp in processes) { string userName = pp.StartInfo.Arguments.Split(' ')[0].Trim(); if (!userName.StartsWith("central")) { ((IClientFacade)pms.getClientFacadeList()[userName]).Disconnect(); pp.Kill(); removeNodeFromTreeView(userName, null); show("Killed " + pp.StartInfo.Arguments); } } //killing all servers foreach (Process p in processes) { string userName = p.StartInfo.Arguments.Split(' ')[0].Trim(); if (userName.StartsWith("central")) { try { ((IServerFacade)pms.getServerFacadeList()[userName]).Disconnect(); } catch (Exception ee) { show(ee.Message); } p.Kill(); removeNodeFromTreeView(userName, null); show("Killed " + p.StartInfo.Arguments); } } //cleaning up pms.cleanUp(); //RemotingServices.Unmarshal(objRef); //objRef = null; //pms = null; processes.Clear(); //unregistering channels UnregisterChannels(); show(" "); show("----------------------SHUTDOWN COMPLETE--------------------"); show(" "); break; } } sr.Close(); }
/// <inheritdoc cref="ComputeService.UpdateServerMetadataAsync" /> public static ServerMetadata UpdateServerMetadata(this ComputeService service, Identifier serverId, ServerMetadata metadata, bool overwrite = false) { return service.UpdateServerMetadataAsync(serverId, metadata, overwrite).ForceSynchronous(); }
private static ObservableCollection <DatabaseModifierModel> LoadDatabaseTemplates(List <DatabaseModifier> userConfigTemplates, ServerMetadata serverMetadata, AppMetadata appMetadata) { var returnVM = new ObservableCollection <DatabaseModifierModel>(); //We show every single element from the user's config. var databasesToShow = userConfigTemplates; //We add the elements from the default metadata if not present. var userConfigDistinctDatabases = userConfigTemplates.Select(s => s.Name.GetDatabase()).Distinct(); var databasesToAdd = serverMetadata.Select(s => s.Key).Distinct().Except(userConfigDistinctDatabases); databasesToShow.AddRange(from d in databasesToAdd select new DatabaseModifier { Name = d }); foreach (var database in databasesToShow) { var defaultDbMetadata = GetDatabaseMetadata(serverMetadata, appMetadata, database.Name); returnVM.Add(new DatabaseModifierModel { _name = database.Name, _templateId = database.TemplateId, _useTemplateId = database.BasedOn, _description = database.Description, _schemas = LoadSchemaTemplates(database.Schemas, defaultDbMetadata, appMetadata) }); } return(returnVM); }