@@ -165,6 +165,11 @@ func ACLAddListBuilder(c *core.Command) *core.Command {
165165 return c
166166}
167167
168+ func redisSettingAddBuilder (c * core.Command ) * core.Command {
169+ c .ArgSpecs .GetByName ("settings.{index}.name" ).AutoCompleteFunc = autoCompleteSettingsName
170+ return c
171+ }
172+
168173func redisEndpointsClusterGetMarshalerFunc (i interface {}, opt * human.MarshalOpt ) (string , error ) {
169174 type tmp []* redis.Endpoint
170175 redisEndpointsClusterResponse := tmp (i .([]* redis.Endpoint ))
@@ -211,6 +216,47 @@ func redisClusterGetMarshalerFunc(i interface{}, opt *human.MarshalOpt) (string,
211216 return str , nil
212217}
213218
219+ var completeClusterCache * redis.Cluster
220+
221+ var completeClusterVersionCache * redis.ListClusterVersionsResponse
222+
223+ func autoCompleteSettingsName (ctx context.Context , prefix string , request any ) core.AutocompleteSuggestions {
224+ suggestions := core .AutocompleteSuggestions (nil )
225+ req := request .(* redis.AddClusterSettingsRequest )
226+ client := core .ExtractClient (ctx )
227+ api := redis .NewAPI (client )
228+ if req .ClusterID != "" {
229+ if completeClusterCache == nil {
230+ res , err := api .GetCluster (& redis.GetClusterRequest {
231+ ClusterID : req .ClusterID ,
232+ })
233+ if err != nil {
234+ return nil
235+ }
236+ completeClusterCache = res
237+ }
238+ if completeClusterVersionCache == nil {
239+ res , err := api .ListClusterVersions (& redis.ListClusterVersionsRequest {
240+ Zone : completeClusterCache .Zone ,
241+ Version : & completeClusterCache .Version ,
242+ })
243+ if err != nil {
244+ return nil
245+ }
246+ completeClusterVersionCache = res
247+ }
248+
249+ for _ , version := range completeClusterVersionCache .Versions {
250+ for _ , settingName := range version .AvailableSettings {
251+ if strings .HasPrefix (settingName .Name , prefix ) {
252+ suggestions = append (suggestions , settingName .Name )
253+ }
254+ }
255+ }
256+ }
257+ return suggestions
258+ }
259+
214260var completeRedisNoteTypeCache * redis.ListNodeTypesResponse
215261
216262func autoCompleteNodeType (ctx context.Context , prefix string , request any ) core.AutocompleteSuggestions {
0 commit comments