public static GraywulfDataset CreateDataset(DatabaseDefinition dd) { if (dd.RunningState != RunningState.Running) { throw new SchemaException(String.Format(ExceptionMessages.AccessDeniedToDataset, dd.Name)); } GraywulfDataset ds = new GraywulfDataset(); ds.Name = dd.Name; ds.DatabaseDefinition.Value = dd; ds.IsCacheable = true; ds.CacheSchemaConnectionString(); return ds; }
public void GenerateDefaultChildren(ServerVersion myDbServerVersion) { // MyDB database definition DatabaseDefinition mydbdd = new DatabaseDefinition(federation) { Name = Constants.MyDbName, System = federation.System, LayoutType = DatabaseLayoutType.Monolithic, DatabaseInstanceNamePattern = Constants.MyDbInstanceNamePattern, DatabaseNamePattern = Constants.MyDbNamePattern, SliceCount = 1, PartitionCount = 1, }; mydbdd.Save(); var mydbddi = new DatabaseDefinitionInstaller(mydbdd); mydbddi.GenerateDefaultChildren(myDbServerVersion, Constants.MyDbName); mydbdd.LoadDatabaseVersions(true); federation.MyDBDatabaseVersion = mydbdd.DatabaseVersions[Constants.MyDbName]; // Job definitions var jd = new JobDefinition(federation) { Name = typeof(Jobs.ExportTable.ExportTableJob).Name, System = federation.System, WorkflowTypeName = typeof(Jobs.ExportTable.ExportTableJob).AssemblyQualifiedName, }; jd.Save(); jd = new JobDefinition(federation) { Name = typeof(Jobs.ExportTable.ExportMaintenanceJob).Name, System = federation.System, WorkflowTypeName = typeof(Jobs.ExportTable.ExportMaintenanceJob).AssemblyQualifiedName, }; jd.Save(); var jdi = new SqlQueryJobInstaller(federation); jdi.Install(); federation.Save(); }
/// <summary> /// Copy contructor for doing deep copy of the <b>Database Definition</b> objects. /// </summary> /// <param name="old">The <b>Database Definition</b> to copy from.</param> public DatabaseDefinition(DatabaseDefinition old) : base(old) { CopyMembers(old); }
/// <summary> /// Creates a deep copy of the passed object. /// </summary> /// <param name="old">A <b>Database Definition</b> object to create the deep copy from.</param> private void CopyMembers(DatabaseDefinition old) { this.schemaSourceDatabaseName = old.schemaSourceDatabaseName; this.layoutType = old.layoutType; this.databaseInstanceNamePattern = old.databaseInstanceNamePattern; this.databaseNamePattern = old.databaseNamePattern; this.sliceCount = old.sliceCount; this.partitionCount = old.partitionCount; this.partitionRangeType = old.partitionRangeType; this.partitionFunction = old.partitionFunction; }
private void GenerateMyDBDefinition(ServerVersion myDbServerVersion) { DatabaseDefinition mydbdd = new DatabaseDefinition(federation) { Name = Constants.MyDbName, System = federation.System, LayoutType = DatabaseLayoutType.Monolithic, DatabaseInstanceNamePattern = Constants.MyDbInstanceNamePattern, DatabaseNamePattern = Constants.MyDbNamePattern, SliceCount = 1, PartitionCount = 1, }; mydbdd.Save(); var mydbddi = new DatabaseDefinitionInstaller(mydbdd); mydbddi.GenerateDefaultChildren(myDbServerVersion, Constants.MyDbName); mydbdd.LoadDatabaseVersions(true); federation.MyDBDatabaseVersion = mydbdd.DatabaseVersions[Constants.MyDbName]; }
private void GenerateCodeDBDefinition(ServerVersion nodeServerVersion) { DatabaseDefinition codedbdd = new DatabaseDefinition(federation) { Name = Constants.CodeDbName, System = federation.System, LayoutType = DatabaseLayoutType.Mirrored, DatabaseInstanceNamePattern = Constants.CodeDbInstanceNamePattern, DatabaseNamePattern = Constants.CodeDbNamePattern, SliceCount = 1, PartitionCount = 1, }; codedbdd.Save(); var codedbddi = new DatabaseDefinitionInstaller(codedbdd); codedbddi.GenerateDefaultChildren(nodeServerVersion, Constants.CodeDbName); codedbdd.LoadDatabaseVersions(true); federation.CodeDatabaseVersion = codedbdd.DatabaseVersions[Constants.CodeDbName]; }
/// <summary> /// Constructor for creating a new entity with object context and parent entity set. /// </summary> /// <param name="context">An object context class containing session information.</param> /// <param name="parent">The parent entity in the entity hierarchy.</param> public FileGroup(DatabaseDefinition parent) : base(parent.Context, parent) { InitializeMembers(); }
public void PrepareComputeTableStatistics(Context context, TableReference tr, out string connectionString, out string sql) { // Assign a database server to the query // TODO: maybe make this function generic // TODO: check this part to use appropriate server and database var sm = GetSchemaManager(false); var ds = sm.Datasets[tr.DatasetName]; if (ds is GraywulfDataset && !((GraywulfDataset)ds).IsSpecificInstanceRequired) { var gds = (GraywulfDataset)ds; var dd = new DatabaseDefinition(context); dd.Guid = gds.DatabaseDefinition.Guid; dd.Load(); // Get a server from the scheduler var si = new ServerInstance(Context); si.Guid = Scheduler.GetNextServerInstance(new Guid[] { dd.Guid }, StatDatabaseVersionName, null); si.Load(); connectionString = si.GetConnectionString().ConnectionString; SubstituteDatabaseName(tr, si.Guid, StatDatabaseVersionName); tr.DatabaseObject = null; } else { // Run it on the specific database connectionString = ds.ConnectionString; } // Generate statistics query var cg = new SqlServerCodeGenerator(); cg.ResolveNames = true; sql = cg.GenerateTableStatisticsQuery(tr); }
protected void Page_Load(object sender, EventArgs e) { item = new DatabaseDefinition(RegistryContext); item.Guid = new Guid(Request.QueryString["guid"]); item.Load(); item.LoadDatabaseVersions(false); databaseVersions = new List<DatabaseVersion>(item.DatabaseVersions.Values); if (!IsPostBack) { RefreshDatabaseVersionList(); } // Load currently selected database version databaseVersion = new DatabaseVersion(RegistryContext); databaseVersion.Guid = new Guid(databaseVersionList.SelectedValue); databaseVersion.Load(); // Load server instances EntityFactory ef = new EntityFactory(RegistryContext); serverInstances = new List<ServerInstance>(ef.FindAll<ServerInstance>() .Where(i => i.ServerVersionReference.Guid == databaseVersion.ServerVersionReference.Guid) .OrderBy(i => i.Machine.Number)); // Load slices item.LoadSlices(false); slices = new List<Slice>(item.Slices.Values); if (!IsPostBack) { UpdateForm(); } GenerateTable(); }
public Cluster Install(bool system, string clusterName, string username, string email, string password) { cluster = new Cluster(Context) { Name = clusterName, System = system, }; cluster.Save(); // Create machine roles and machines // -- controller role var mrcont = new MachineRole(cluster) { Name = Constants.ControllerMachineRoleName, System = system, MachineRoleType = MachineRoleType.StandAlone, }; mrcont.Save(); var sv = new ServerVersion(mrcont) { Name = Constants.ServerVersionName, System = system, }; sv.Save(); var mcont = new Machine(mrcont) { Name = Constants.ControllerMachineName, }; mcont.Save(); var sicont = new ServerInstance(mcont) { Name = Constants.ServerInstanceName, ServerVersion = sv, }; sicont.Save(); // -- node role var mrnode = new MachineRole(cluster) { Name = Constants.NodeMachineRoleName, MachineRoleType = MachineRoleType.MirroredSet, }; mrnode.Save(); var nodesv = new ServerVersion(mrnode) { Name = Constants.ServerVersionName, }; nodesv.Save(); // -- Create a node /* Machine mnode = new Machine(Context, mrnode); mnode.Name = Constants.NodeMachineName; mnode.Save(); si = new ServerInstance(Context, mnode); si.Name = Constants.ServerInstanceName; si.ServerVersionReference.Value = sv; si.Save();*/ // Create the shared domain for cluster level databases and users var domain = new Domain(cluster) { Name = Constants.SharedDomainName, Email = email, System = system, }; domain.Save(); // Create administrator group and user GenerateAdminGroup(system); GenerateAdmin(system, username, email, password); // Create the shared feredation var federation = new Federation(domain) { Name = Constants.SharedFederationName, Email = email, System = system, ControllerMachine = mcont, SchemaSourceServerInstance = sicont, }; federation.Save(); // Temp database definition var tempdd = new DatabaseDefinition(federation) { Name = Constants.TempDbName, System = system, LayoutType = DatabaseLayoutType.Monolithic, DatabaseInstanceNamePattern = Constants.TempDbInstanceNamePattern, DatabaseNamePattern = Constants.TempDbNamePattern, SliceCount = 1, PartitionCount = 1, }; tempdd.Save(); var tempddi = new DatabaseDefinitionInstaller(tempdd); tempddi.GenerateDefaultChildren(nodesv, Constants.TempDbName); // Create cluster level jobs and queues // -- admin queue definition QueueDefinition qd = new QueueDefinition(cluster) { Name = Constants.MaintenanceQueueDefinitionName, System = system, }; qd.Save(); QueueInstance qi = new QueueInstance(mcont) { Name = Constants.MaintenanceQueueName, RunningState = Registry.RunningState.Running, }; qi.QueueDefinitionReference.Value = qd; qi.Save(); // -- long queue definition qd = new QueueDefinition(cluster) { Name = Constants.LongQueueDefinitionName }; qd.Save(); qi = new QueueInstance(mcont) { Name = Constants.LongQueueName, RunningState = Registry.RunningState.Running, }; qi.QueueDefinitionReference.Value = qd; qi.Save(); // -- quick queue definition qd = new QueueDefinition(cluster) { Name = Constants.QuickQueueDefinitionName, }; qd.Save(); qi = new QueueInstance(mcont) { Name = Constants.QuickQueueName, RunningState = Registry.RunningState.Running, }; qi.QueueDefinitionReference.Value = qd; qi.Save(); // -- database mirror job var jd = new JobDefinition(federation) { Name = typeof(Jhu.Graywulf.Jobs.MirrorDatabase.MirrorDatabaseJob).Name, System = system, WorkflowTypeName = typeof(Jhu.Graywulf.Jobs.MirrorDatabase.MirrorDatabaseJob).AssemblyQualifiedName, }; jd.DiscoverWorkflowParameters(); jd.Save(); // -- test job jd = new JobDefinition(federation) { Name = typeof(Jhu.Graywulf.Jobs.Test.TestJob).Name, System = system, WorkflowTypeName = typeof(Jhu.Graywulf.Jobs.Test.TestJob).AssemblyQualifiedName, }; jd.DiscoverWorkflowParameters(); jd.Save(); return cluster; }
public void Install(bool system, string clusterName, string username, string email, string password) { var cluster = new Cluster(Context) { Name = clusterName, System = system, }; cluster.Save(); // Create administrator group and user var ug = new UserGroup(cluster) { Name = Constants.ClusterAdministratorUserGroupName, System = system, }; ug.Save(); var u = new User(cluster) { Name = username, System = system, Email = email, DeploymentState = Registry.DeploymentState.Deployed, }; u.SetPassword(password); u.Save(); u.MakeMemberOf(ug.Guid); // Create machine roles and machines // -- controller role var mrcont = new MachineRole(cluster) { Name = Constants.ControllerMachineRoleName, System = system, MachineRoleType = MachineRoleType.StandAlone, }; mrcont.Save(); var sv = new ServerVersion(mrcont) { Name = Constants.ServerVersionName, }; sv.Save(); var mcont = new Machine(mrcont) { Name = Constants.ControllerMachineName, }; mcont.Save(); var si = new ServerInstance(mcont) { Name = Constants.ServerInstanceName, ServerVersion = sv, }; si.Save(); // -- node role var mrnode = new MachineRole(cluster) { Name = Constants.NodeMachineRoleName, MachineRoleType = MachineRoleType.MirroredSet, }; mrnode.Save(); sv = new ServerVersion(mrnode) { Name = Constants.ServerVersionName, }; sv.Save(); // -- Create a node /* Machine mnode = new Machine(Context, mrnode); mnode.Name = Constants.NodeMachineName; mnode.Save(); si = new ServerInstance(Context, mnode); si.Name = Constants.ServerInstanceName; si.ServerVersionReference.Value = sv; si.Save();*/ // Temp database definition var tempdd = new DatabaseDefinition(cluster) { Name = Constants.TempDbName, System = system, LayoutType = DatabaseLayoutType.Monolithic, DatabaseInstanceNamePattern = Constants.TempDbInstanceNamePattern, DatabaseNamePattern = Constants.TempDbNamePattern, SliceCount = 1, PartitionCount = 1, }; tempdd.Save(); var tempddi = new DatabaseDefinitionInstaller(tempdd); tempddi.GenerateDefaultChildren(sv, Constants.TempDbName); // Create cluster level jobs and queues // -- admin queue definition QueueDefinition qd = new QueueDefinition(cluster) { Name = Constants.MaintenanceQueueDefinitionName, System = system, }; qd.Save(); QueueInstance qi = new QueueInstance(mcont) { Name = Constants.MaintenanceQueueName, RunningState = Registry.RunningState.Running, }; qi.QueueDefinitionReference.Value = qd; qi.Save(); // -- long queue definition qd = new QueueDefinition(cluster) { Name = Constants.LongQueueDefinitionName }; qd.Save(); qi = new QueueInstance(mcont) { Name = Constants.LongQueueName, RunningState = Registry.RunningState.Running, }; qi.QueueDefinitionReference.Value = qd; qi.Save(); // -- quick queue definition qd = new QueueDefinition(cluster) { Name = Constants.QuickQueueDefinitionName, }; qd.Save(); qi = new QueueInstance(mcont) { Name = Constants.QuickQueueName, RunningState = Registry.RunningState.Running, }; qi.QueueDefinitionReference.Value = qd; qi.Save(); // -- database mirror job var jd = new JobDefinition(cluster) { Name = typeof(Jhu.Graywulf.Jobs.MirrorDatabase.MirrorDatabaseJob).Name, System = system, WorkflowTypeName = typeof(Jhu.Graywulf.Jobs.MirrorDatabase.MirrorDatabaseJob).AssemblyQualifiedName, }; jd.Save(); // -- test job jd = new JobDefinition(cluster) { Name = typeof(Jhu.Graywulf.Jobs.Test.TestJob).Name, System = system, WorkflowTypeName = typeof(Jhu.Graywulf.Jobs.Test.TestJob).AssemblyQualifiedName, }; jd.Save(); }
/// <summary> /// Constructor for creating a new entity with object context and parent entity set. /// </summary> /// <param name="context">An object context class containing session information.</param> /// <param name="parent">The parent entity in the entity hierarchy.</param> public DatabaseInstance(DatabaseDefinition parent) : base(parent.Context, parent) { InitializeMembers(); }
/// <summary> /// Constructor for creating a new entity with object context and parent entity set. /// </summary> /// <param name="context">An object context class containing session information.</param> /// <param name="parent">The parent entity in the entity hierarchy.</param> public DatabaseVersion(DatabaseDefinition parent) : base(parent.Context, parent) { InitializeMembers(); }
public DatabaseInstanceInstaller(DatabaseDefinition databaseDefinition) : base(databaseDefinition.Context) { this.databaseDefinition = databaseDefinition; }
protected void Page_Load(object sender, EventArgs e) { item = new DatabaseDefinition(RegistryContext); item.Guid = new Guid(Request.QueryString["guid"]); item.Load(); if (!IsPostBack) { SliceCount2.Text = item.SliceCount.ToString(); PartitionCount2.Text = item.PartitionCount.ToString(); PartitionRangeType.SelectedValue = item.PartitionRangeType.ToString(); } sliceCount = int.Parse(SliceCount2.Text); partitionCount = int.Parse(PartitionCount2.Text); GenerateTable(); if (!IsPostBack) GenerateDefaultData(); }
/// <summary> /// Constructor for creating a new entity with object context and parent entity set. /// </summary> /// <param name="context">An object context class containing session information.</param> /// <param name="parent">The parent entity in the entity hierarchy.</param> public DeploymentPackage(DatabaseDefinition parent) : base(parent.Context, parent) { InitializeMembers(); }