summaryrefslogtreecommitdiff
path: root/include/persistent_data.hpp
diff options
context:
space:
mode:
authorManojkiran Eda <manojkiran.eda@gmail.com>2020-08-27 13:34:26 +0300
committerRatan Gupta <ratagupt@linux.vnet.ibm.com>2020-10-05 12:47:38 +0300
commitf2a4a60698a41fbf23e933daaea5df66cde19e53 (patch)
treea6d1c3794ea2e9c9f4bbf89c71361e64df3cdb3c /include/persistent_data.hpp
parent942179993d5efbaff9ea48e7012a6045f35ad431 (diff)
downloadbmcweb-f2a4a60698a41fbf23e933daaea5df66cde19e53.tar.xz
Add PATCH support for SessionTimeout Property
- This commit would add the patch support for the session timeout propery under the sessionservice. - This commit also brings in support for persistent session timeout property. Tested By: 1. Redfish validator passed. 2. PATCH the session time out property using the below command PATCH -d '{"SessionTimeout": 100}' https://<bmcip>/redfish/v1/SessionService 3. GET on sessionservice should return the value of time out which is patched by using the above command & also GET on the session service fails with Unauthorized error post the patched timeout value. 4. And also, the existing sessions that are open for the new timeout value are also closed. 5. As per the schema , the range of values that are allowed for session timeout are between 30 sec to 86400 sec, so any value which is patched out of the range is failed with an appropriate error message. 6. PATCH the session timeout to new value using 2, and them restart the bmcweb and the GET using 3 should return the new value. Signed-off-by: Manojkiran Eda <manojkiran.eda@gmail.com> Change-Id: Id50eacc5018b7a82371fd37a2ae1e7fb7596ed2b
Diffstat (limited to 'include/persistent_data.hpp')
-rw-r--r--include/persistent_data.hpp19
1 files changed, 18 insertions, 1 deletions
diff --git a/include/persistent_data.hpp b/include/persistent_data.hpp
index 5d4661c503..03457c707f 100644
--- a/include/persistent_data.hpp
+++ b/include/persistent_data.hpp
@@ -112,6 +112,22 @@ class ConfigFile
newSession->sessionToken, newSession);
}
}
+ else if (item.key() == "timeout")
+ {
+ const int64_t* jTimeout =
+ item.value().get_ptr<int64_t*>();
+ if (jTimeout == nullptr)
+ {
+ BMCWEB_LOG_DEBUG
+ << "Problem reading session timeout value";
+ continue;
+ }
+ std::chrono::seconds sessionTimeoutInseconds(*jTimeout);
+ BMCWEB_LOG_DEBUG << "Restored Session Timeout: "
+ << sessionTimeoutInseconds.count();
+ SessionStore::getInstance().updateSessionTimeout(
+ sessionTimeoutInseconds);
+ }
else
{
// Do nothing in the case of extra fields. We may have
@@ -157,7 +173,8 @@ class ConfigFile
{"sessions", SessionStore::getInstance().authTokens},
{"auth_config", SessionStore::getInstance().getAuthMethodsConfig()},
{"system_uuid", systemUuid},
- {"revision", jsonRevision}};
+ {"revision", jsonRevision},
+ {"timeout", SessionStore::getInstance().getTimeoutInSeconds()}};
persistentFile << data;
}