public async Task CanCrudServerSettings() { using (var service = await SdkHelper.CreateService()) { //// Get var originalSettings = await service.Server.GetSettingsAsync(); ServerSettingValues originalValues = new ServerSettingValues { EnableSplunkWebSsl = originalSettings.EnableSplunkWebSsl, Host = originalSettings.Host, HttpPort = originalSettings.HttpPort, ManagementHostPort = originalSettings.ManagementHostPort, MinFreeSpace = originalSettings.MinFreeSpace, Pass4SymmetricKey = originalSettings.Pass4SymmetricKey, ServerName = originalSettings.ServerName, SessionTimeout = originalSettings.SessionTimeout, SplunkDB = originalSettings.SplunkDB, StartWebServer = originalSettings.StartWebServer, TrustedIP = originalSettings.TrustedIP }; //// Update try { var updatedValues = new ServerSettingValues { EnableSplunkWebSsl = !originalSettings.EnableSplunkWebSsl, Host = originalSettings.Host, HttpPort = originalSettings.HttpPort + 1, ManagementHostPort = originalSettings.ManagementHostPort, MinFreeSpace = originalSettings.MinFreeSpace - 1, Pass4SymmetricKey = originalSettings.Pass4SymmetricKey + "-update", ServerName = originalSettings.ServerName, SessionTimeout = "2h", SplunkDB = originalSettings.SplunkDB, StartWebServer = !originalSettings.StartWebServer, TrustedIP = originalSettings.TrustedIP }; ServerSettings updatedSettings = await service.Server.UpdateSettingsAsync(updatedValues); Assert.Equal(updatedValues.EnableSplunkWebSsl, updatedSettings.EnableSplunkWebSsl); Assert.Equal(updatedValues.Host, updatedSettings.Host); Assert.Equal(updatedValues.HttpPort, updatedSettings.HttpPort); Assert.Equal(updatedValues.ManagementHostPort, updatedSettings.ManagementHostPort); Assert.Equal(updatedValues.MinFreeSpace, updatedSettings.MinFreeSpace); Assert.Equal(updatedValues.Pass4SymmetricKey, updatedSettings.Pass4SymmetricKey); Assert.Equal(updatedValues.ServerName, updatedSettings.ServerName); Assert.Equal(updatedValues.SessionTimeout, updatedSettings.SessionTimeout); Assert.Equal(updatedValues.SplunkDB, updatedSettings.SplunkDB); Assert.Equal(updatedValues.StartWebServer, updatedSettings.StartWebServer); Assert.Equal(updatedValues.TrustedIP, updatedSettings.TrustedIP); //// Restart the server because it's required following a server settings update await service.Server.RestartAsync(2 * 60 * 1000); await service.LogOnAsync(); } catch (Exception e1) { try { service.Server.UpdateSettingsAsync(originalValues).Wait(); // because you can't await in catch block } catch (Exception e2) { throw new AggregateException(e1, e2); } throw; } //// Restore originalSettings = await service.Server.UpdateSettingsAsync(originalValues); Assert.Equal(originalValues.EnableSplunkWebSsl, originalSettings.EnableSplunkWebSsl); Assert.Equal(originalValues.Host, originalSettings.Host); Assert.Equal(originalValues.HttpPort, originalSettings.HttpPort); Assert.Equal(originalValues.ManagementHostPort, originalSettings.ManagementHostPort); Assert.Equal(originalValues.MinFreeSpace, originalSettings.MinFreeSpace); Assert.Equal(originalValues.Pass4SymmetricKey, originalSettings.Pass4SymmetricKey); Assert.Equal(originalValues.ServerName, originalSettings.ServerName); Assert.Equal(originalValues.SessionTimeout, originalSettings.SessionTimeout); Assert.Equal(originalValues.SplunkDB, originalSettings.SplunkDB); Assert.Equal(originalValues.StartWebServer, originalSettings.StartWebServer); Assert.Equal(originalValues.TrustedIP, originalSettings.TrustedIP); //// Restart the server because it's required following a settings update await service.Server.RestartAsync(2 * 60 * 1000); } }
/// <summary> /// Asynchronously updates setting values on the current <see cref="Server"/>. /// </summary> /// <param name="values"> /// An object representing the setting values to be changed. /// </param> /// <returns> /// An object representing the updated server settings. /// </returns> /// <seealso cref="M:Splunk.Client.IServer.UpdateSettingsAsync(ServerSettingValues)"/> public Task<ServerSettings> UpdateSettingsAsync(ServerSettingValues values) { Contract.Requires(values != null); return null; }
public void Settings() { Service service = Connect(); ServerSettings settings = service.Server.GetSettingsAsync().Result; string dummyString; bool dummBool; int dummyInt; dummyString = settings.SplunkDB; dummyString = settings.SplunkHome; dummBool = settings.EnableSplunkWebSsl; dummyString = settings.Host; dummyInt = settings.HttpPort; dummyInt = settings.ManagementHostPort; dummyInt = settings.MinFreeSpace; dummyString = settings.Pass4SymmetricKey; dummyString = settings.ServerName; dummyString = settings.SessionTimeout; dummBool = settings.StartWebServer; dummyString = settings.TrustedIP; // set aside original settings string originalTimeout = settings.SessionTimeout; bool originalSSL = settings.EnableSplunkWebSsl; string originalHost = settings.Host; int originalHttpPort = settings.HttpPort; int originalMinSpace = settings.MinFreeSpace; //int originalMgmtPort = settings.MgmtPort(); string originalServerName = settings.ServerName; bool originalStartWeb = settings.StartWebServer; // test update ServerSettingValues serverSettingValues = new ServerSettingValues(); serverSettingValues.EnableSplunkWebSsl = !originalSSL; bool updatedSSL = serverSettingValues.EnableSplunkWebSsl.Value; serverSettingValues.Host = "sdk-host"; serverSettingValues.HttpPort = 8001; serverSettingValues.MinFreeSpace = originalMinSpace - 100; //settings.MgmtHostPort(originalMgmtPort+1); serverSettingValues.ServerName = "sdk-test-name"; serverSettingValues.SessionTimeout = "2h"; //settings.StartWebServer(!originalStartWeb); settings.UpdateAsync(serverSettingValues).Wait(); // changing ports require a restart this.SplunkRestart(); service = this.Connect(); settings = service.Server.GetSettingsAsync().Result; Assert.NotEqual(originalSSL, updatedSSL); Assert.Equal("sdk-host", settings.Host); Assert.Equal(8001, settings.HttpPort); Assert.Equal(originalMinSpace - 100, settings.MinFreeSpace); Assert.Equal("sdk-test-name", settings.ServerName); Assert.Equal("2h", settings.SessionTimeout); //assertEquals(settings.StartWebServer(), !originalStartWeb); // restore original serverSettingValues = new ServerSettingValues(); serverSettingValues.EnableSplunkWebSsl = originalSSL; serverSettingValues.Host = originalHost; serverSettingValues.HttpPort = originalHttpPort; serverSettingValues.MinFreeSpace = originalMinSpace; serverSettingValues.ServerName = originalServerName; serverSettingValues.SessionTimeout = originalTimeout; serverSettingValues.StartWebServer = originalStartWeb; settings.UpdateAsync(serverSettingValues).Wait(); // changing ports require a restart this.SplunkRestart(); service = this.Connect(); settings = service.Server.GetSettingsAsync().Result; Assert.Equal(originalSSL, settings.EnableSplunkWebSsl); Assert.Equal(originalHost, settings.Host); Assert.Equal(originalHttpPort, settings.HttpPort); Assert.Equal(originalMinSpace, settings.MinFreeSpace); Assert.Equal(originalServerName, settings.ServerName); Assert.Equal(originalTimeout, settings.SessionTimeout); Assert.Equal(originalStartWeb, settings.StartWebServer); }
/// <inheritdoc/> public virtual async Task<ServerSettings> UpdateSettingsAsync(ServerSettingValues values) { using (var response = await this.Context.PostAsync(this.Namespace, Settings, values).ConfigureAwait(false)) { await response.EnsureStatusCodeAsync(HttpStatusCode.OK).ConfigureAwait(false); var feed = new AtomFeed(); await feed.ReadXmlAsync(response.XmlReader).ConfigureAwait(false); var settings = new ServerSettings(feed); return settings; } }