public async Task <object> Patch(string id, [FromBody] dynamic model) { // Cut off the notion of uuid from beginning of request string name = AppPoolId.CreateFromUuid(id).Name; // Set settings ApplicationPool appPool = AppPoolHelper.UpdateAppPool(name, model); if (appPool == null) { return(NotFound()); } if (model.identity != null && !await IsAppPoolIdentityAllowed(appPool)) { return(new ForbidResult()); } // Start/Stop if (model.status != null) { Status status = DynamicHelper.To <Status>(model.status); try { switch (status) { case Status.Stopped: appPool.Stop(); break; case Status.Started: appPool.Start(); break; } } catch (COMException e) { // If pool is fresh and status is still unknown then COMException will be thrown when manipulating status throw new ApiException("Error setting application pool status", e); } } // Update changes ManagementUnit.Current.Commit(); // Refresh data appPool = ManagementUnit.ServerManager.ApplicationPools[appPool.Name]; // // Create response dynamic pool = AppPoolHelper.ToJsonModel(appPool, Context.Request.GetFields()); // The Id could change by changing apppool name if (pool.id != id) { return(LocationChanged(AppPoolHelper.GetLocation(pool.id), pool)); } return(pool); }
public object Get(string id) { // Extract the name of the target app pool from the uuid specified in the request string name = AppPoolId.CreateFromUuid(id).Name; ApplicationPool pool = AppPoolHelper.GetAppPool(name); if (pool == null) { return(NotFound()); } return(AppPoolHelper.ToJsonModel(pool, Context.Request.GetFields())); }
public void Delete(string id) { string name = AppPoolId.CreateFromUuid(id).Name; ApplicationPool pool = AppPoolHelper.GetAppPool(name); if (pool != null) { AppPoolHelper.DeleteAppPool(pool); ManagementUnit.Current.Commit(); } // Sucess Context.Response.StatusCode = (int)HttpStatusCode.NoContent; }
public object Get() { Fields fields = Context.Request.GetFields(); // Get reference models for app pool collection var pools = ManagementUnit.ServerManager.ApplicationPools.Select(pool => AppPoolHelper.ToJsonModelRef(pool, fields)); // Set HTTP header for total count this.Context.Response.SetItemsCount(pools.Count()); // Return the app pool reference model collection return(new { app_pools = pools }); }
public override void Start() { Environment.Host.RouteBuilder.MapWebApiRoute(Defines.Resource.Guid, $"{Defines.PATH}/{{id?}}", new { controller = "AppPools" }); Environment.Hal.ProvideLink(Defines.Resource.Guid, "self", pool => new { href = AppPoolHelper.GetLocation(pool.id) }); Environment.Hal.ProvideLink(WebServer.Defines.Resource.Guid, Defines.Resource.Name, _ => new { href = $"/{Defines.PATH}" }); }