api_timeout.go 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249
  1. package sdk
  2. import (
  3. "encoding/json"
  4. "strings"
  5. "time"
  6. )
  7. var apiTimeouts = `{
  8. "ecs": {
  9. "ActivateRouterInterface": 10,
  10. "AddTags": 61,
  11. "AllocateDedicatedHosts": 10,
  12. "AllocateEipAddress": 17,
  13. "AllocatePublicIpAddress": 36,
  14. "ApplyAutoSnapshotPolicy": 10,
  15. "AssignIpv6Addresses": 10,
  16. "AssignPrivateIpAddresses": 10,
  17. "AssociateEipAddress": 17,
  18. "AttachClassicLinkVpc": 14,
  19. "AttachDisk": 36,
  20. "AttachInstanceRamRole": 11,
  21. "AttachKeyPair": 16,
  22. "AttachNetworkInterface": 16,
  23. "AuthorizeSecurityGroupEgress": 16,
  24. "AuthorizeSecurityGroup": 16,
  25. "CancelAutoSnapshotPolicy": 10,
  26. "CancelCopyImage": 10,
  27. "CancelPhysicalConnection": 10,
  28. "CancelSimulatedSystemEvents": 10,
  29. "CancelTask": 10,
  30. "ConnectRouterInterface": 10,
  31. "ConvertNatPublicIpToEip": 12,
  32. "CopyImage": 10,
  33. "CreateAutoSnapshotPolicy": 10,
  34. "CreateCommand": 16,
  35. "CreateDeploymentSet": 16,
  36. "CreateDisk": 36,
  37. "CreateHpcCluster": 10,
  38. "CreateImage": 36,
  39. "CreateInstance": 86,
  40. "CreateKeyPair": 10,
  41. "CreateLaunchTemplate": 10,
  42. "CreateLaunchTemplateVersion": 10,
  43. "CreateNatGateway": 36,
  44. "CreateNetworkInterfacePermission": 13,
  45. "CreateNetworkInterface": 16,
  46. "CreatePhysicalConnection": 10,
  47. "CreateRouteEntry": 17,
  48. "CreateRouterInterface": 10,
  49. "CreateSecurityGroup": 86,
  50. "CreateSimulatedSystemEvents": 10,
  51. "CreateSnapshot": 86,
  52. "CreateVirtualBorderRouter": 10,
  53. "CreateVpc": 16,
  54. "CreateVSwitch": 17,
  55. "DeactivateRouterInterface": 10,
  56. "DeleteAutoSnapshotPolicy": 10,
  57. "DeleteBandwidthPackage": 10,
  58. "DeleteCommand": 16,
  59. "DeleteDeploymentSet": 12,
  60. "DeleteDisk": 16,
  61. "DeleteHpcCluster": 10,
  62. "DeleteImage": 36,
  63. "DeleteInstance": 66,
  64. "DeleteKeyPairs": 10,
  65. "DeleteLaunchTemplate": 10,
  66. "DeleteLaunchTemplateVersion": 10,
  67. "DeleteNatGateway": 10,
  68. "DeleteNetworkInterfacePermission": 10,
  69. "DeleteNetworkInterface": 16,
  70. "DeletePhysicalConnection": 10,
  71. "DeleteRouteEntry": 16,
  72. "DeleteRouterInterface": 10,
  73. "DeleteSecurityGroup": 87,
  74. "DeleteSnapshot": 17,
  75. "DeleteVirtualBorderRouter": 10,
  76. "DeleteVpc": 17,
  77. "DeleteVSwitch": 17,
  78. "DescribeAccessPoints": 10,
  79. "DescribeAccountAttributes": 10,
  80. "DescribeAutoSnapshotPolicyEx": 16,
  81. "DescribeAvailableResource": 10,
  82. "DescribeBandwidthLimitation": 16,
  83. "DescribeBandwidthPackages": 10,
  84. "DescribeClassicLinkInstances": 15,
  85. "DescribeCloudAssistantStatus": 16,
  86. "DescribeClusters": 10,
  87. "DescribeCommands": 16,
  88. "DescribeDedicatedHosts": 10,
  89. "DescribeDedicatedHostTypes": 10,
  90. "DescribeDeploymentSets": 26,
  91. "DescribeDiskMonitorData": 16,
  92. "DescribeDisksFullStatus": 14,
  93. "DescribeDisks": 19,
  94. "DescribeEipAddresses": 16,
  95. "DescribeEipMonitorData": 16,
  96. "DescribeEniMonitorData": 10,
  97. "DescribeHaVips": 10,
  98. "DescribeHpcClusters": 16,
  99. "DescribeImageSharePermission": 10,
  100. "DescribeImages": 38,
  101. "DescribeImageSupportInstanceTypes": 16,
  102. "DescribeInstanceAttribute": 36,
  103. "DescribeInstanceAutoRenewAttribute": 17,
  104. "DescribeInstanceHistoryEvents": 19,
  105. "DescribeInstanceMonitorData": 19,
  106. "DescribeInstancePhysicalAttribute": 10,
  107. "DescribeInstanceRamRole": 11,
  108. "DescribeInstancesFullStatus": 14,
  109. "DescribeInstances": 10,
  110. "DescribeInstanceStatus": 26,
  111. "DescribeInstanceTopology": 12,
  112. "DescribeInstanceTypeFamilies": 17,
  113. "DescribeInstanceTypes": 17,
  114. "DescribeInstanceVncPasswd": 10,
  115. "DescribeInstanceVncUrl": 36,
  116. "DescribeInvocationResults": 16,
  117. "DescribeInvocations": 16,
  118. "DescribeKeyPairs": 12,
  119. "DescribeLaunchTemplates": 16,
  120. "DescribeLaunchTemplateVersions": 16,
  121. "DescribeLimitation": 36,
  122. "DescribeNatGateways": 10,
  123. "DescribeNetworkInterfacePermissions": 13,
  124. "DescribeNetworkInterfaces": 16,
  125. "DescribeNewProjectEipMonitorData": 16,
  126. "DescribePhysicalConnections": 10,
  127. "DescribePrice": 16,
  128. "DescribeRecommendInstanceType": 10,
  129. "DescribeRegions": 19,
  130. "DescribeRenewalPrice": 16,
  131. "DescribeResourceByTags": 10,
  132. "DescribeResourcesModification": 17,
  133. "DescribeRouterInterfaces": 10,
  134. "DescribeRouteTables": 17,
  135. "DescribeSecurityGroupAttribute": 133,
  136. "DescribeSecurityGroupReferences": 16,
  137. "DescribeSecurityGroups": 25,
  138. "DescribeSnapshotLinks": 17,
  139. "DescribeSnapshotMonitorData": 12,
  140. "DescribeSnapshotPackage": 10,
  141. "DescribeSnapshots": 26,
  142. "DescribeSnapshotsUsage": 26,
  143. "DescribeSpotPriceHistory": 22,
  144. "DescribeTags": 17,
  145. "DescribeTaskAttribute": 10,
  146. "DescribeTasks": 11,
  147. "DescribeUserBusinessBehavior": 13,
  148. "DescribeUserData": 10,
  149. "DescribeVirtualBorderRoutersForPhysicalConnection": 10,
  150. "DescribeVirtualBorderRouters": 10,
  151. "DescribeVpcs": 41,
  152. "DescribeVRouters": 17,
  153. "DescribeVSwitches": 17,
  154. "DescribeZones": 103,
  155. "DetachClassicLinkVpc": 14,
  156. "DetachDisk": 17,
  157. "DetachInstanceRamRole": 10,
  158. "DetachKeyPair": 10,
  159. "DetachNetworkInterface": 16,
  160. "EipFillParams": 19,
  161. "EipFillProduct": 13,
  162. "EipNotifyPaid": 10,
  163. "EnablePhysicalConnection": 10,
  164. "ExportImage": 10,
  165. "GetInstanceConsoleOutput": 14,
  166. "GetInstanceScreenshot": 14,
  167. "ImportImage": 29,
  168. "ImportKeyPair": 10,
  169. "InstallCloudAssistant": 10,
  170. "InvokeCommand": 16,
  171. "JoinResourceGroup": 10,
  172. "JoinSecurityGroup": 66,
  173. "LeaveSecurityGroup": 66,
  174. "ModifyAutoSnapshotPolicyEx": 10,
  175. "ModifyBandwidthPackageSpec": 11,
  176. "ModifyCommand": 10,
  177. "ModifyDeploymentSetAttribute": 10,
  178. "ModifyDiskAttribute": 16,
  179. "ModifyDiskChargeType": 13,
  180. "ModifyEipAddressAttribute": 14,
  181. "ModifyImageAttribute": 10,
  182. "ModifyImageSharePermission": 16,
  183. "ModifyInstanceAttribute": 22,
  184. "ModifyInstanceAutoReleaseTime": 15,
  185. "ModifyInstanceAutoRenewAttribute": 16,
  186. "ModifyInstanceChargeType": 22,
  187. "ModifyInstanceDeployment": 10,
  188. "ModifyInstanceNetworkSpec": 36,
  189. "ModifyInstanceSpec": 62,
  190. "ModifyInstanceVncPasswd": 35,
  191. "ModifyInstanceVpcAttribute": 15,
  192. "ModifyLaunchTemplateDefaultVersion": 10,
  193. "ModifyNetworkInterfaceAttribute": 10,
  194. "ModifyPhysicalConnectionAttribute": 10,
  195. "ModifyPrepayInstanceSpec": 13,
  196. "ModifyRouterInterfaceAttribute": 10,
  197. "ModifySecurityGroupAttribute": 10,
  198. "ModifySecurityGroupEgressRule": 10,
  199. "ModifySecurityGroupPolicy": 10,
  200. "ModifySecurityGroupRule": 16,
  201. "ModifySnapshotAttribute": 10,
  202. "ModifyUserBusinessBehavior": 10,
  203. "ModifyVirtualBorderRouterAttribute": 10,
  204. "ModifyVpcAttribute": 10,
  205. "ModifyVRouterAttribute": 10,
  206. "ModifyVSwitchAttribute": 10,
  207. "ReActivateInstances": 10,
  208. "RebootInstance": 27,
  209. "RedeployInstance": 14,
  210. "ReInitDisk": 16,
  211. "ReleaseDedicatedHost": 10,
  212. "ReleaseEipAddress": 16,
  213. "ReleasePublicIpAddress": 10,
  214. "RemoveTags": 10,
  215. "RenewInstance": 19,
  216. "ReplaceSystemDisk": 36,
  217. "ResetDisk": 36,
  218. "ResizeDisk": 11,
  219. "RevokeSecurityGroupEgress": 13,
  220. "RevokeSecurityGroup": 16,
  221. "RunInstances": 86,
  222. "StartInstance": 46,
  223. "StopInstance": 27,
  224. "StopInvocation": 10,
  225. "TerminatePhysicalConnection": 10,
  226. "TerminateVirtualBorderRouter": 10,
  227. "UnassignIpv6Addresses": 10,
  228. "UnassignPrivateIpAddresses": 10,
  229. "UnassociateEipAddress": 16
  230. }
  231. }
  232. `
  233. func getAPIMaxTimeout(product, actionName string) (time.Duration, bool) {
  234. timeout := make(map[string]map[string]int)
  235. err := json.Unmarshal([]byte(apiTimeouts), &timeout)
  236. if err != nil {
  237. return 0 * time.Millisecond, false
  238. }
  239. obj := timeout[strings.ToLower(product)]
  240. if obj != nil && obj[actionName] != 0 {
  241. return time.Duration(obj[actionName]) * time.Second, true
  242. }
  243. return 0 * time.Millisecond, false
  244. }