Skip to content

Commit 2d46487

Browse files
authored
Added concurrency Flag for ASUP reporting
1 parent e24b8cb commit 2d46487

File tree

11 files changed

+72
-12
lines changed

11 files changed

+72
-12
lines changed

core/common.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ const (
1919
NodeAccessReconcilePeriod = time.Second * 30
2020
NodeRegistrationCooldownPeriod = time.Second * 30
2121
AttachISCSIVolumeTimeoutLong = time.Second * 90
22+
23+
FlagConcurrent = "concurrent"
2224
)
2325

2426
// recordTiming is used to record in Prometheus the total time taken for an operation as follows:

core/concurrent_core.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -718,6 +718,8 @@ func (o *ConcurrentTridentOrchestrator) validateAndCreateBackendFromConfig(
718718
return nil, err
719719
}
720720

721+
commonConfig.Flags[FlagConcurrent] = "true"
722+
721723
if !collection.StringInSlice(commonConfig.StorageDriverName, supportedBackends) {
722724
return nil, fmt.Errorf("backend type %s is not yet supported by concurrent Trident",
723725
commonConfig.StorageDriverName)

core/concurrent_core_test.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,7 @@ func getFakeStorageDriverConfig(name string) drivers.FakeStorageDriverConfig {
286286
CommonStorageDriverConfig: &drivers.CommonStorageDriverConfig{
287287
Version: drivers.ConfigVersion,
288288
StorageDriverName: config.FakeStorageDriverName,
289+
Flags: make(map[string]string),
289290
},
290291
Protocol: config.File,
291292
Pools: testutils.GenerateFakePools(2),
@@ -1475,6 +1476,27 @@ func TestBootstrapSubordinateVolumesConcurrentCore(t *testing.T) {
14751476

14761477
// Backend tests
14771478

1479+
func TestValidateAndCreateBackendFromConfig_SetsConcurrentFlag(t *testing.T) {
1480+
db.Initialize()
1481+
o := getConcurrentOrchestrator()
1482+
1483+
fakeConfig := getFakeStorageDriverConfig("test-backend")
1484+
configJSON, err := fakeConfig.Marshal()
1485+
require.NoError(t, err)
1486+
1487+
backend, err := o.validateAndCreateBackendFromConfig(testCtx, string(configJSON), "", "")
1488+
1489+
require.NoError(t, err)
1490+
require.NotNil(t, backend)
1491+
1492+
// Verify the concurrent flag was set in the backend's common config
1493+
commonConfig := backend.Driver().GetCommonConfig(testCtx)
1494+
require.NotNil(t, commonConfig.Flags)
1495+
assert.Equal(t, "true", commonConfig.Flags[FlagConcurrent])
1496+
1497+
persistenceCleanup(t, o)
1498+
}
1499+
14781500
func TestGetBackendConcurrentCore(t *testing.T) {
14791501
tests := []struct {
14801502
name string

core/orchestrator_core.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1146,6 +1146,8 @@ func (o *TridentOrchestrator) validateAndCreateBackendFromConfig(
11461146
return nil, err
11471147
}
11481148

1149+
commonConfig.Flags[FlagConcurrent] = "false"
1150+
11491151
// For backends created using CRD Controller ensure there are no forbidden fields
11501152
if isCRDContext(ctx) {
11511153
if err = factory.SpecOnlyValidation(ctx, commonConfig, configInJSON); err != nil {

core/orchestrator_core_test.go

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2304,6 +2304,36 @@ func TestBackendCleanup(t *testing.T) {
23042304
}
23052305
}
23062306

2307+
func TestAddBackend_SetsConcurrentFlag(t *testing.T) {
2308+
mockCtrl := gomock.NewController(t)
2309+
defer mockCtrl.Finish()
2310+
2311+
o := getOrchestrator(t, false)
2312+
defer cleanup(t, o)
2313+
2314+
// Create a simple fake backend config
2315+
configJSON := `{
2316+
"version": 1,
2317+
"storageDriverName": "fake",
2318+
"storagePrefix": "test_"
2319+
}`
2320+
2321+
backendExternal, err := o.AddBackend(context.Background(), configJSON, "")
2322+
assert.NoError(t, err)
2323+
assert.NotNil(t, backendExternal)
2324+
2325+
// Verify the backend was added
2326+
backend, found := o.backends[backendExternal.BackendUUID]
2327+
assert.True(t, found)
2328+
assert.NotNil(t, backend)
2329+
2330+
// Verify the Flags map contains the concurrent flag set to "false"
2331+
driver := backend.Driver()
2332+
commonConfig := driver.GetCommonConfig(context.Background())
2333+
assert.NotNil(t, commonConfig.Flags)
2334+
assert.Equal(t, "false", commonConfig.Flags["concurrent"])
2335+
}
2336+
23072337
func TestLoadBackend(t *testing.T) {
23082338
const (
23092339
backendName = "load-backend-test"

storage_drivers/common.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,8 @@ func ValidateCommonSettings(ctx context.Context, configJSON string) (*CommonStor
9393
}
9494
}
9595

96+
config.Flags = make(map[string]string)
97+
9698
Logc(ctx).Debugf("Parsed commonConfig: %+v", *config)
9799

98100
return config, nil

storage_drivers/common_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ func TestValidateCommonSettings(t *testing.T) {
9898
StorageDriverName: "ontap-nas",
9999
StoragePrefixRaw: nil,
100100
StoragePrefix: nil,
101+
Flags: make(map[string]string),
101102
},
102103
errorExpected: false,
103104
},
@@ -152,6 +153,7 @@ func TestValidateCommonSettings(t *testing.T) {
152153
"name": "secret1",
153154
"type": "secret",
154155
},
156+
Flags: make(map[string]string),
155157
},
156158
errorExpected: false,
157159
},

storage_drivers/fake/fake.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,7 @@ func NewFakeStorageDriverConfigJSON(
207207
StorageDriverName: config.FakeStorageDriverName,
208208
StoragePrefixRaw: json.RawMessage("\"\""),
209209
StoragePrefix: &prefix,
210+
Flags: make(map[string]string),
210211
},
211212
Protocol: protocol,
212213
Pools: pools,

storage_drivers/ontap/ontap_factory.go

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -65,20 +65,18 @@ func GetStorageDriver(
6565
}
6666

6767
// Set up driver flags
68-
ontapConfig.Flags = map[string]string{
69-
FlagPersonality: PersonalityUnified,
70-
FlagDisaggregated: strconv.FormatBool(API.IsDisaggregated()),
71-
FlagSANOptimized: strconv.FormatBool(API.IsSANOptimized()),
68+
if ontapConfig.Flags == nil {
69+
ontapConfig.Flags = make(map[string]string)
7270
}
71+
ontapConfig.Flags[FlagPersonality] = PersonalityUnified
72+
ontapConfig.Flags[FlagDisaggregated] = strconv.FormatBool(API.IsDisaggregated())
73+
ontapConfig.Flags[FlagSANOptimized] = strconv.FormatBool(API.IsSANOptimized())
7374

7475
switch ontapConfig.StorageDriverName {
7576

7677
case config.OntapNASStorageDriverName:
7778
if !API.IsSANOptimized() && API.IsDisaggregated() {
7879
// Setup personality to be used by ASUP
79-
if ontapConfig.Flags == nil {
80-
ontapConfig.Flags = make(map[string]string)
81-
}
8280
ontapConfig.Flags[FlagPersonality] = PersonalityAFX
8381
}
8482
storageDriver = &NASStorageDriver{API: API, AWSAPI: AWSAPI, Config: *ontapConfig}
@@ -119,9 +117,6 @@ func getSANStorageDriverBasedOnPersonality(
119117
isASAr2 := false
120118
if sanOptimized && disaggregated {
121119
// Setup personality to be used by ASUP
122-
if ontapConfig.Flags == nil {
123-
ontapConfig.Flags = make(map[string]string)
124-
}
125120
ontapConfig.Flags[FlagPersonality] = PersonalityASAr2
126121
isASAr2 = true
127122
}

storage_drivers/ontap/ontap_factory_test.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,9 @@ func TestGetDriverProtocol(t *testing.T) {
5555

5656
func TestGetSANStorageDriverBasedOnPersonality(t *testing.T) {
5757
ontapConfig := drivers.OntapStorageDriverConfig{
58-
CommonStorageDriverConfig: &drivers.CommonStorageDriverConfig{},
58+
CommonStorageDriverConfig: &drivers.CommonStorageDriverConfig{
59+
Flags: make(map[string]string),
60+
},
5961
}
6062
mockCtrl := gomock.NewController(t)
6163
defer mockCtrl.Finish()

0 commit comments

Comments
 (0)