mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
Primera: Delete session after key expiration (#11487)
This commit is contained in:
parent
af2a911f1b
commit
90681df1b5
@ -121,6 +121,10 @@ public class PrimeraAdapter implements ProviderAdapter {
|
||||
public void disconnect() {
|
||||
logger.info("PrimeraAdapter:disconnect(): closing session");
|
||||
try {
|
||||
//Delete session safely without triggering refreshSession
|
||||
if (key != null && _client != null) {
|
||||
logout();
|
||||
}
|
||||
_client.close();
|
||||
} catch (IOException e) {
|
||||
logger.warn("PrimeraAdapter:refreshSession(): Error closing client connection", e);
|
||||
@ -130,6 +134,40 @@ public class PrimeraAdapter implements ProviderAdapter {
|
||||
}
|
||||
return;
|
||||
}
|
||||
/**
|
||||
* Delete session directly without going through refreshSession to avoid infinite recursion
|
||||
*/
|
||||
private void logout() {
|
||||
CloseableHttpResponse response = null;
|
||||
try {
|
||||
logger.debug("PrimeraAdapter:logout(): Delete session directly");
|
||||
HttpDelete request = new HttpDelete(url + "/credentials/" + key);
|
||||
request.addHeader("Content-Type", "application/json");
|
||||
request.addHeader("Accept", "application/json");
|
||||
request.addHeader("X-HP3PAR-WSAPI-SessionKey", key);
|
||||
|
||||
response = (CloseableHttpResponse) _client.execute(request);
|
||||
final int statusCode = response.getStatusLine().getStatusCode();
|
||||
|
||||
if (statusCode == 200 || statusCode == 404) {
|
||||
logger.debug("PrimeraAdapter:logout(): Session deleted successfully or was already expired");
|
||||
} else if (statusCode == 401 || statusCode == 403) {
|
||||
logger.warn("PrimeraAdapter:logout(): Session already invalid or expired during deletion");
|
||||
} else {
|
||||
logger.warn("PrimeraAdapter:logout(): Unexpected response when deleting session: {}", statusCode);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
logger.warn("PrimeraAdapter:logout(): Error deleting session: {}", e.getMessage());
|
||||
} finally {
|
||||
if (response != null) {
|
||||
try {
|
||||
response.close();
|
||||
} catch (IOException e) {
|
||||
logger.debug("PrimeraAdapter:logout(): Error closing response from session deletion", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ProviderVolume create(ProviderAdapterContext context, ProviderAdapterDataObject dataIn,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user