From a907dd5cfe973d937703babd22aa600b0ef0ab56 Mon Sep 17 00:00:00 2001
From: Walter J Dsouza <walterdsouza@in.ibm.com>
Date: Tue, 4 Oct 2022 17:15:34 +0530
Subject: [PATCH] fix: config update for rookceph

---
 app/sdms/src/cloud/providers/ibm/config.ts      |  8 ++++++--
 app/sdms/src/cloud/providers/ibm/credentials.ts | 12 +++++++-----
 app/sdms/src/cloud/providers/ibm/stshelper.ts   |  4 ++--
 3 files changed, 15 insertions(+), 9 deletions(-)

diff --git a/app/sdms/src/cloud/providers/ibm/config.ts b/app/sdms/src/cloud/providers/ibm/config.ts
index 4953a07f2..dd7da24b3 100644
--- a/app/sdms/src/cloud/providers/ibm/config.ts
+++ b/app/sdms/src/cloud/providers/ibm/config.ts
@@ -26,7 +26,9 @@ export class IbmConfig extends Config {
     public static COS_SIGNATUREVERSION: string;
     public static COS_SUBUSER_ACCESS_KEY_ID: string;
     public static COS_SUBUSER_SECRET_ACCESS_KEY: string;
-    public static COS_TEMP_CRED_EXPITY: string;
+    public static COS_TEMP_CRED_EXPIRY: string;
+    public static COS_ROLE_ARN: string;
+    public static COS_ROLE_SESSION_NAME: string;
 
     // IBM KeyCloak
     public static KEYCLOAK_BASEURL: string;
@@ -95,7 +97,9 @@ export class IbmConfig extends Config {
         IbmConfig.COS_SIGNATUREVERSION = process.env.COS_SIGNATUREVERSION;
         IbmConfig.COS_SUBUSER_ACCESS_KEY_ID = process.env.COS_SUBUSER_ACCESS_KEY_ID;
         IbmConfig.COS_SUBUSER_SECRET_ACCESS_KEY = process.env.COS_SUBUSER_SECRET_ACCESS_KEY;
-        IbmConfig.COS_TEMP_CRED_EXPITY = process.env.COS_TEMP_CRED_EXPITY;
+        IbmConfig.COS_TEMP_CRED_EXPIRY = process.env.COS_TEMP_CRED_EXPIRY || '7200';
+        IbmConfig.COS_ROLE_ARN = process.env.COS_ROLE_ARN || 'arn:aws:iam:::role/osdurolearn';
+        IbmConfig.COS_ROLE_SESSION_NAME = process.env.COS_ROLE_SESSION_NAME || 'Bob';
 
         // IBM Keycloak
         IbmConfig.KEYCLOAK_BASEURL = process.env.KEYCLOAK_BASEURL;
diff --git a/app/sdms/src/cloud/providers/ibm/credentials.ts b/app/sdms/src/cloud/providers/ibm/credentials.ts
index d9848dc23..9f44bda6e 100644
--- a/app/sdms/src/cloud/providers/ibm/credentials.ts
+++ b/app/sdms/src/cloud/providers/ibm/credentials.ts
@@ -48,8 +48,9 @@ export class Credentials extends AbstractCredentials {
         tenant: string, subproject: string,
         bucket: string, readonly: boolean, _partition: string): Promise<IAccessTokenModel> {
 
-        const expDuration = IbmConfig.COS_TEMP_CRED_EXPITY;
+        const expDuration = IbmConfig.COS_TEMP_CRED_EXPIRY;
         let roleArn = '';
+        let roleSessionName = '';
         let credentials = '';
 
         let flagUpload = true;
@@ -58,19 +59,20 @@ export class Credentials extends AbstractCredentials {
         // this can start getting folder from gcs url along with bucket
         const s3bucket = keyPath;
 
+        roleArn = IbmConfig.COS_ROLE_ARN;
+        roleSessionName = IbmConfig.COS_ROLE_SESSION_NAME;
+
         if (readonly) { // readOnly True
-            roleArn = 'arn:123:456:789:1234';
             flagUpload = false;
         } else {// readOnly False
-            roleArn = 'arn:123:456:789:1234';
             flagUpload = true;
         }
 
-        credentials = await this.ibmSTSHelper.getCredentials(s3bucket, keyPath, roleArn, flagUpload, expDuration);
+        credentials = await this.ibmSTSHelper.getCredentials(s3bucket, keyPath, roleArn, roleSessionName, flagUpload, expDuration);
 
         const result = {
             access_token: credentials,
-            expires_in: 7200,
+            expires_in: parseInt(expDuration),
             token_type: 'Bearer',
         };
 
diff --git a/app/sdms/src/cloud/providers/ibm/stshelper.ts b/app/sdms/src/cloud/providers/ibm/stshelper.ts
index b5c59eb70..9c04e5e27 100644
--- a/app/sdms/src/cloud/providers/ibm/stshelper.ts
+++ b/app/sdms/src/cloud/providers/ibm/stshelper.ts
@@ -18,7 +18,7 @@ export class IBMSTShelper{
     }
 
     public async getCredentials(bucketName: string, keyPath: string,
-        roleArn: string, flagUpload: boolean, exp: string): Promise<string> {
+        roleArn: string, roleSessionName: string, flagUpload: boolean, exp: string): Promise<string> {
         let policy: any;
 
         if(flagUpload === true)
@@ -35,7 +35,7 @@ export class IBMSTShelper{
             ExternalId: 'OSDUAWS',
             Policy: policy,
             RoleArn: roleArn,
-            RoleSessionName: 'OSDUAWSAssumeRoleSession',
+            RoleSessionName: roleSessionName,
             DurationSeconds: expDuration
         };
         const roleCredentials =  await this.sts.assumeRole(stsParams).promise();
-- 
GitLab