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);
            }
        }
Esempio n. 2
0
 /// <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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        /// <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;
            }
        }