public void Configure(CommandLineApplication command) { command.Description = "deletes a tenant (optionally with its databases and found backups)"; var tenantNamesArg = command.Argument("tenant", "the tenant(s) id", true); var hardOption = command.Option("--hard", "deletes the related databases and webapps (use with caution)", CommandOptionType.NoValue); command.OnExecute(() => { foreach (var tenantName in tenantNamesArg.Values) { var tenant = _t(_db.Find <Tenant>(tenantName)); var server = _db.Find <Server>(tenant.Dto.ServerId); if (hardOption.HasValue()) { tenant.DropAdminWebApp(); tenant.DropPublicWebApp(); server.DropDatabase(tenant.Dto.ConfigDb); server.DropDatabase(tenant.Dto.PublicDb); } _db.Tenants.Remove(tenant.Dto); _db.SaveChanges(); } return(0); }); }
public void Configure(CommandLineApplication command) { command.Description = "copies a tenant from a server to another server"; var serverNameArg = command.Argument("server", "the source server name"); var configDbArg = command.Argument("config-db", "the target server's config db"); var publicDbArg = command.Argument("public-db", "the target server's public db"); var maybeTargetServer = command.Option("-s|--target-server-id", "copy to a defined server (default is 'localhost')", CommandOptionType.SingleValue); var maybeAppName = command.Option("-a|--set-appname", "set the tenant's appname", CommandOptionType.SingleValue); var maybeTenantId = command.Option("-i|--set-tenant-id", "set the tenant's local id", CommandOptionType.SingleValue); var maybeNoIisSetup = command.Option("-x|--no-iis-setup", "prevent apps creation in IIS (allow running without admin role)", CommandOptionType.SingleValue); command.OnExecute(async() => { var target = maybeTargetServer.HasValue() ? _db.Servers.Find(maybeTargetServer.Value()) : _db.Servers.First(_ => _.Hostname == "localhost"); var source = _db.Servers.Find(serverNameArg.Value); await Task.WhenAll( target.CopyDatabaseAsync(source, configDbArg.Value), target.CopyDatabaseAsync(source, publicDbArg.Value)); var newTenant = _tn(new Tenant { ConfigDb = configDbArg.Value, PublicDb = publicDbArg.Value, ServerId = target.Id, }); var tenantName = maybeAppName.HasValue() ? maybeAppName.Value() : newTenant.ApplicationName; var tenantId = maybeTenantId.HasValue() ? maybeTenantId.Value() : tenantName; newTenant.ApplicationName = tenantName; newTenant.Dto.Id = tenantId; _db.Upsert(newTenant.Dto, _ => _.Id); _db.SaveChanges(); if (!maybeNoIisSetup.HasValue()) { newTenant.CreateAdminWebApp(); newTenant.CreatePublicWebApp(); } return(0); }); }
public void Configure(CommandLineApplication command) { command.Description = "add a tenant to the local database"; var nameArg = command.Argument("[name]", "The tenant name"); var serverIdArg = command.Argument("[server]", "The server hosting this tenant"); var publicDbArg = command.Argument("[public-db]", "The tenant's public db"); var configDbArg = command.Argument("[config-db]", "The tenant's config db"); command.OnExecute(() => { _db.Upsert(new Tenant { Id = nameArg.Value, ServerId = serverIdArg.Value, ConfigDb = configDbArg.Value, PublicDb = publicDbArg.Value }, _ => _.Id); _db.SaveChanges(); return(0); }); }
public void Configure(CommandLineApplication command) { command.Description = "add a server to the local database"; var nameArg = command.Argument("[name]", "The server name"); var hostnameArg = command.Argument("[hostname]", "The server hostname"); var loginArg = command.Argument("[login]", "The server login"); var passwordArg = command.Argument("[password]", "The server password"); command.OnExecute(() => { _db.Upsert(new Server { Id = nameArg.Value, Hostname = hostnameArg.Value, Login = loginArg.Value, Password = passwordArg.Value, }, _ => _.Id); _db.SaveChanges(); return(0); }); }