/// <summary> /// This method gets invoked when the command is called /// </summary> protected override void InternalProcessRecord() { SPIisWebServiceApplicationPool resolvedApplicationPool = this.ApplicationPool.Read(); if (resolvedApplicationPool == null) { this.ThrowTerminatingError(new InvalidOperationException("Could not find the specified application pool."), ErrorCategory.InvalidOperation, this); } if (this.ShouldProcess(this.Name)) { // Get or create the service ClubCloudService service = ClubCloudService.GetOrCreateService(); // Get or create the service proxy ClubCloudServiceProxy.GetOrCreateServiceProxy(); // Install the service instances to servers in this farm ClubCloudServiceInstance.CreateServiceInstances(service); // Create the service application ClubCloudServiceApplication application = new ClubCloudServiceApplication(this.Name, service, resolvedApplicationPool); application.Update(); application.Provision(); // Database settings if (string.Equals(this.ParameterSetName, "DB", StringComparison.OrdinalIgnoreCase)) { NetworkCredential databaseCredentials = null; if (this.DatabaseCredentials != null) { databaseCredentials = (NetworkCredential)this.DatabaseCredentials; } SPDatabaseParameters databaseParameters = SPDatabaseParameters.CreateParameters(this.DatabaseName, this.DatabaseServerName, databaseCredentials, this.DatabaseFailoverServerName, SPDatabaseParameterOptions.None); // Create the database ClubCloudDatabase database = new ClubCloudDatabase(databaseParameters); // Provision the database (runs the Create scripts) database.Provision(); // Grant the database the proper permissions database.GrantApplicationPoolAccess(resolvedApplicationPool.ProcessAccount.SecurityIdentifier); // Add the failover server instance (the base class does not do this for you) if (!string.IsNullOrEmpty(this.DatabaseFailoverServerName)) { database.AddFailoverServiceInstance(this.DatabaseFailoverServerName); } // Establish a relationship between the service application and the database application.Database = database; application.Update(); } this.WriteObject(application); } }
/// <summary> /// Click event. /// </summary> /// <param name="sender">The Sender.</param> /// <param name="e">The EventArgs.</param> protected void ButtonInstallServiceInstances_Click(object sender, EventArgs e) { using (SPLongOperation operation = new SPLongOperation(this)) { operation.LeadingHTML = HttpContext.GetGlobalResourceObject("ClubCloud.Service.ServiceAdminResources", "ManageServiceInstallServiceInstancesOperationLeadingHtml", CultureInfo.CurrentCulture).ToString(); operation.TrailingHTML = HttpContext.GetGlobalResourceObject("ClubCloud.Service.ServiceAdminResources", "ManageServiceInstallServiceInstancesOperationTrailingHtml", CultureInfo.CurrentCulture).ToString(); operation.Begin(); // Get the service ClubCloudService service = ClubCloudService.GetOrCreateService(); // Create the service instances ClubCloudServiceInstance.CreateServiceInstances(service); operation.End("/_admin/ClubCloud.Service/ManageService.aspx"); } }
/// <summary> /// Click event. /// </summary> /// <param name="sender">The Sender.</param> /// <param name="e">The EventArgs.</param> protected void ButtonInstallService_Click(object sender, EventArgs e) { using (SPLongOperation operation = new SPLongOperation(this)) { operation.LeadingHTML = HttpContext.GetGlobalResourceObject("ClubCloud.Service.ServiceAdminResources", "ManageServiceInstallOperationLeadingHtml", CultureInfo.CurrentCulture).ToString(); operation.TrailingHTML = HttpContext.GetGlobalResourceObject("ClubCloud.Service.ServiceAdminResources", "ManageServiceInstallOperationTrailingHtml", CultureInfo.CurrentCulture).ToString(); operation.Begin(); // Install the service ClubCloudService service = ClubCloudService.GetOrCreateService(); // Install the service instances but do not start (provision) them (let the admin do this on the services on server screen). ClubCloudServiceInstance.CreateServiceInstances(service); // Install the service proxy ClubCloudServiceProxy.GetOrCreateServiceProxy(); operation.End("/_admin/ClubCloud.Service/ManageService.aspx"); } }
/// <summary> /// Page_Load event. /// </summary> /// <param name="sender">The Sender.</param> /// <param name="e">The EventArgs.</param> protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { // Populate the controls with default values ClubCloudService service = SPFarm.Local.Services.GetValue <ClubCloudService>(); ClubCloudServiceProxy proxy = SPFarm.Local.ServiceProxies.GetValue <ClubCloudServiceProxy>(); if (service != null) { this.literalServiceStatus.Text = HttpContext.GetGlobalResourceObject("ClubCloud.Service.ServiceAdminResources", "ManageServiceStatusLabelInstalled", CultureInfo.CurrentCulture).ToString(); this.imageServiceStatus.ImageUrl = "/_admin/ClubCloud.Service/ServiceInstalled.gif"; this.buttonInstallService.Visible = false; this.buttonRemoveService.Visible = true; this.serviceInstanceStatusSection.Visible = true; this.serviceApplicationStatusSection.Visible = true; } else { this.literalServiceStatus.Text = HttpContext.GetGlobalResourceObject("ClubCloud.Service.ServiceAdminResources", "ManageServiceStatusLabelNotInstalled", CultureInfo.CurrentCulture).ToString(); this.imageServiceStatus.ImageUrl = "/_admin/ClubCloud.Service/ServiceNotInstalled.gif"; this.buttonInstallService.Visible = true; this.buttonRemoveService.Visible = false; this.buttonInstallServiceInstances.Visible = false; this.serviceInstanceStatusSection.Visible = false; this.serviceApplicationStatusSection.Visible = false; } if (proxy != null) { this.imageServiceProxyStatus.ImageUrl = "/_admin/ClubCloud.Service/ServiceInstalled.gif"; this.literalServiceProxyStatus.Text = HttpContext.GetGlobalResourceObject("ClubCloud.Service.ServiceAdminResources", "ManageServiceStatusLabelInstalled", CultureInfo.CurrentCulture).ToString(); } else { this.imageServiceProxyStatus.ImageUrl = "/_admin/ClubCloud.Service/ServiceNotInstalled.gif"; this.literalServiceProxyStatus.Text = HttpContext.GetGlobalResourceObject("ClubCloud.Service.ServiceAdminResources", "ManageServiceStatusLabelNotInstalled", CultureInfo.CurrentCulture).ToString(); } // Check if the service instances have been provisioned, and show their status List <ServiceInstanceStatus> serviceInstances = new List <ServiceInstanceStatus>(); foreach (SPServer server in SPFarm.Local.Servers) { if (server.Role == SPServerRole.Application || server.Role == SPServerRole.SingleServer || server.Role == SPServerRole.WebFrontEnd) { ServiceInstanceStatus serviceInstance = new ServiceInstanceStatus(); serviceInstance.ServerName = server.Name; serviceInstance.ServerId = HttpUtility.UrlEncode(server.Id.ToString()); serviceInstances.Add(serviceInstance); ClubCloudServiceInstance instance = server.ServiceInstances.GetValue <ClubCloudServiceInstance>(); if (instance == null) { serviceInstance.ServerStatus = HttpContext.GetGlobalResourceObject("ClubCloud.Service.ServiceAdminResources", "ManageServiceInstanceStatusNotInstalled", CultureInfo.CurrentCulture).ToString(); serviceInstance.IsInstalled = false; serviceInstance.ServerStatusImage = "/_admin/ClubCloud.Service/HLTHFAIL.PNG"; } else if (instance.Status == SPObjectStatus.Online) { serviceInstance.ServerStatus = HttpContext.GetGlobalResourceObject("ClubCloud.Service.ServiceAdminResources", "ManageServiceInstanceStatusStarted", CultureInfo.CurrentCulture).ToString(); serviceInstance.IsInstalled = true; serviceInstance.ServerStatusImage = "/_admin/ClubCloud.Service/HLTHSUCC.PNG"; } else { serviceInstance.ServerStatus = HttpContext.GetGlobalResourceObject("ClubCloud.Service.ServiceAdminResources", "ManageServiceInstanceStatusStopped", CultureInfo.CurrentCulture).ToString(); serviceInstance.IsInstalled = true; serviceInstance.ServerStatusImage = "/_admin/ClubCloud.Service/HLTHERR.PNG"; } } } this.gridViewInstanceStatus.DataSource = serviceInstances; this.gridViewInstanceStatus.DataBind(); if (service != null) { this.gridViewApplicationStatus.DataSource = service.Applications; this.gridViewApplicationStatus.DataBind(); } } }