@@ -49,6 +49,23 @@ func validateResources(resources string) error {
4949 return nil
5050}
5151
52+ func sanitizeScenarios (scenarios []string ) []string {
53+ if scenarios == nil {
54+ return []string {}
55+ }
56+ seen := make (map [string ]bool )
57+ result := make ([]string , 0 , len (scenarios ))
58+ for _ , s := range scenarios {
59+ s = strings .TrimSpace (s )
60+ if s == "" || seen [s ] {
61+ continue
62+ }
63+ seen [s ] = true
64+ result = append (result , s )
65+ }
66+ return result
67+ }
68+
5269func (c * spaceResourceComponentImpl ) Index (ctx context.Context , req * types.SpaceResourceIndexReq ) ([]types.SpaceResource , int , error ) {
5370 var result []types.SpaceResource
5471 var total int
@@ -100,6 +117,10 @@ func (c *spaceResourceComponentImpl) Index(ctx context.Context, req *types.Space
100117 }
101118 }
102119 resourceType := common .ResourceType (hardware )
120+ scenarios := r .Scenarios
121+ if scenarios == nil {
122+ scenarios = []string {}
123+ }
103124 singleClusterResult = append (singleClusterResult , types.SpaceResource {
104125 ID : r .ID ,
105126 ClusterID : r .ClusterID ,
@@ -108,6 +129,7 @@ func (c *spaceResourceComponentImpl) Index(ctx context.Context, req *types.Space
108129 Resources : r .Resources ,
109130 IsAvailable : isAvailable ,
110131 Type : resourceType ,
132+ Scenarios : scenarios ,
111133 AvailableStatusList : availableStatusList ,
112134 })
113135 resourceCount ++
@@ -144,16 +166,25 @@ func (c *spaceResourceComponentImpl) Update(ctx context.Context, req *types.Upda
144166 sr .Name = req .Name
145167 sr .Resources = req .Resources
146168
169+ if req .Scenarios != nil {
170+ sr .Scenarios = sanitizeScenarios (req .Scenarios )
171+ }
172+
147173 sr , err = c .spaceResourceStore .Update (ctx , * sr )
148174 if err != nil {
149175 slog .Error ("error updating space resource" , slog .Any ("error" , err ))
150176 return nil , err
151177 }
152178
179+ scenarios := sr .Scenarios
180+ if scenarios == nil {
181+ scenarios = []string {}
182+ }
153183 result := & types.SpaceResource {
154184 ID : sr .ID ,
155185 Name : sr .Name ,
156186 Resources : sr .Resources ,
187+ Scenarios : scenarios ,
157188 }
158189
159190 return result , nil
@@ -167,17 +198,23 @@ func (c *spaceResourceComponentImpl) Create(ctx context.Context, req *types.Crea
167198 Name : req .Name ,
168199 Resources : req .Resources ,
169200 ClusterID : req .ClusterID ,
201+ Scenarios : sanitizeScenarios (req .Scenarios ),
170202 }
171203 res , err := c .spaceResourceStore .Create (ctx , sr )
172204 if err != nil {
173205 slog .Error ("error creating space resource" , slog .Any ("error" , err ))
174206 return nil , err
175207 }
176208
209+ scenariosResult := res .Scenarios
210+ if scenariosResult == nil {
211+ scenariosResult = []string {}
212+ }
177213 result := & types.SpaceResource {
178214 ID : res .ID ,
179215 Name : res .Name ,
180216 Resources : res .Resources ,
217+ Scenarios : scenariosResult ,
181218 }
182219
183220 return result , nil
@@ -216,11 +253,16 @@ func (c *spaceResourceComponentImpl) ListAll(ctx context.Context) ([]types.Space
216253
217254 result := make ([]types.SpaceResource , 0 , len (dbResources ))
218255 for _ , r := range dbResources {
256+ scenarios := r .Scenarios
257+ if scenarios == nil {
258+ scenarios = []string {}
259+ }
219260 result = append (result , types.SpaceResource {
220261 ID : r .ID ,
221262 Name : r .Name ,
222263 ClusterID : r .ClusterID ,
223264 Resources : r .Resources ,
265+ Scenarios : scenarios ,
224266 })
225267 }
226268
0 commit comments