@@ -830,7 +830,7 @@ func (s *service) generateToURLValuesFunc(a *API) {
830830 pn (" }" )
831831 for _ , ap := range a .Params {
832832 pn (" if v, found := p.p[\" %s\" ]; found {" , ap .Name )
833- s .generateConvertCode (ap .Name , mapType (ap .Type ))
833+ s .generateConvertCode (ap .Name , a . Name , mapType (ap .Type ))
834834 pn (" }" )
835835 }
836836 pn (" return u" )
@@ -839,7 +839,7 @@ func (s *service) generateToURLValuesFunc(a *API) {
839839 return
840840}
841841
842- func (s * service ) generateConvertCode (name , typ string ) {
842+ func (s * service ) generateConvertCode (name , cmdName , typ string ) {
843843 pn := s .pn
844844
845845 switch typ {
@@ -862,7 +862,12 @@ func (s *service) generateConvertCode(name, typ string) {
862862 pn ("for k, vv := range v.(map[string]string) {" )
863863 switch name {
864864 case "details" :
865- pn (" u.Set(fmt.Sprintf(\" %s[%%d].%%s\" , i, k), vv)" , name )
865+ if detailsRequiresKeyValue (cmdName ) {
866+ pn (" u.Set(fmt.Sprintf(\" %s[%%d].key\" , i), k)" , name )
867+ pn (" u.Set(fmt.Sprintf(\" %s[%%d].value\" , i), vv)" , name )
868+ } else {
869+ pn (" u.Set(fmt.Sprintf(\" %s[%%d].%%s\" , i, k), vv)" , name )
870+ }
866871 case "serviceproviderlist" :
867872 pn (" u.Set(fmt.Sprintf(\" %s[%%d].service\" , i), k)" , name )
868873 pn (" u.Set(fmt.Sprintf(\" %s[%%d].provider\" , i), vv)" , name )
@@ -879,6 +884,24 @@ func (s *service) generateConvertCode(name, typ string) {
879884 return
880885}
881886
887+ func detailsRequiresKeyValue (cmd string ) bool {
888+ var requiredCmds = []string {
889+ "addGuestOs" ,
890+ "updateGuestOs" ,
891+ "addImageStore" ,
892+ "createSecondaryStagingStore" ,
893+ "updateCloudToUseObjectStore" ,
894+ "addResourceDetail" ,
895+ "updateZone" ,
896+ }
897+ for _ , req := range requiredCmds {
898+ if req == cmd {
899+ return true
900+ }
901+ }
902+ return false
903+ }
904+
882905func (s * service ) parseParamName (name string ) string {
883906 if name != "type" {
884907 return name
0 commit comments