google-api-client 0.31.0 → 0.32.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (295) hide show
  1. checksums.yaml +4 -4
  2. data/.kokoro/continuous/linux.cfg +11 -1
  3. data/.kokoro/continuous/osx.cfg +5 -0
  4. data/.kokoro/continuous/windows.cfg +10 -0
  5. data/.kokoro/presubmit/linux.cfg +11 -1
  6. data/.kokoro/presubmit/osx.cfg +5 -0
  7. data/.kokoro/presubmit/windows.cfg +10 -0
  8. data/CHANGELOG.md +107 -0
  9. data/generated/google/apis/androidmanagement_v1.rb +1 -1
  10. data/generated/google/apis/androidmanagement_v1/classes.rb +12 -1
  11. data/generated/google/apis/androidmanagement_v1/representations.rb +1 -0
  12. data/generated/google/apis/bigquery_v2.rb +1 -1
  13. data/generated/google/apis/bigquery_v2/classes.rb +241 -0
  14. data/generated/google/apis/bigquery_v2/representations.rb +115 -0
  15. data/generated/google/apis/bigqueryconnection_v1beta1.rb +1 -1
  16. data/generated/google/apis/bigqueryconnection_v1beta1/classes.rb +62 -29
  17. data/generated/google/apis/bigquerydatatransfer_v1.rb +1 -1
  18. data/generated/google/apis/bigquerydatatransfer_v1/classes.rb +2 -2
  19. data/generated/google/apis/bigquerydatatransfer_v1/service.rb +30 -26
  20. data/generated/google/apis/bigqueryreservation_v1.rb +1 -1
  21. data/generated/google/apis/bigqueryreservation_v1/classes.rb +7 -7
  22. data/generated/google/apis/bigqueryreservation_v1/representations.rb +3 -3
  23. data/generated/google/apis/bigqueryreservation_v1alpha2.rb +1 -1
  24. data/generated/google/apis/bigqueryreservation_v1alpha2/classes.rb +0 -175
  25. data/generated/google/apis/bigqueryreservation_v1alpha2/representations.rb +0 -65
  26. data/generated/google/apis/bigqueryreservation_v1alpha2/service.rb +0 -140
  27. data/generated/google/apis/bigqueryreservation_v1beta1.rb +37 -0
  28. data/generated/google/apis/bigqueryreservation_v1beta1/classes.rb +497 -0
  29. data/generated/google/apis/bigqueryreservation_v1beta1/representations.rb +236 -0
  30. data/generated/google/apis/bigqueryreservation_v1beta1/service.rb +713 -0
  31. data/generated/google/apis/binaryauthorization_v1.rb +1 -1
  32. data/generated/google/apis/binaryauthorization_v1/classes.rb +307 -0
  33. data/generated/google/apis/binaryauthorization_v1/representations.rb +88 -0
  34. data/generated/google/apis/binaryauthorization_v1/service.rb +230 -0
  35. data/generated/google/apis/binaryauthorization_v1beta1.rb +1 -1
  36. data/generated/google/apis/binaryauthorization_v1beta1/classes.rb +62 -29
  37. data/generated/google/apis/blogger_v3.rb +1 -1
  38. data/generated/google/apis/blogger_v3/service.rb +6 -6
  39. data/generated/google/apis/calendar_v3.rb +1 -1
  40. data/generated/google/apis/calendar_v3/classes.rb +1 -0
  41. data/generated/google/apis/cloudasset_v1.rb +1 -1
  42. data/generated/google/apis/cloudasset_v1/classes.rb +72 -29
  43. data/generated/google/apis/cloudasset_v1/representations.rb +1 -0
  44. data/generated/google/apis/cloudasset_v1/service.rb +1 -1
  45. data/generated/google/apis/cloudasset_v1beta1.rb +1 -1
  46. data/generated/google/apis/cloudasset_v1beta1/classes.rb +62 -29
  47. data/generated/google/apis/cloudasset_v1beta1/service.rb +2 -2
  48. data/generated/google/apis/cloudfunctions_v1.rb +1 -1
  49. data/generated/google/apis/cloudfunctions_v1/classes.rb +7 -2
  50. data/generated/google/apis/cloudfunctions_v1/service.rb +10 -7
  51. data/generated/google/apis/cloudfunctions_v1beta2.rb +1 -1
  52. data/generated/google/apis/cloudfunctions_v1beta2/classes.rb +1 -1
  53. data/generated/google/apis/cloudfunctions_v1beta2/service.rb +7 -6
  54. data/generated/google/apis/cloudidentity_v1.rb +4 -1
  55. data/generated/google/apis/cloudidentity_v1beta1.rb +4 -1
  56. data/generated/google/apis/cloudiot_v1.rb +1 -1
  57. data/generated/google/apis/cloudiot_v1/classes.rb +68 -35
  58. data/generated/google/apis/cloudiot_v1/service.rb +18 -17
  59. data/generated/google/apis/cloudkms_v1.rb +1 -1
  60. data/generated/google/apis/cloudkms_v1/classes.rb +77 -35
  61. data/generated/google/apis/cloudkms_v1/service.rb +33 -27
  62. data/generated/google/apis/cloudprivatecatalogproducer_v1beta1.rb +1 -1
  63. data/generated/google/apis/cloudprivatecatalogproducer_v1beta1/classes.rb +62 -29
  64. data/generated/google/apis/cloudsearch_v1.rb +1 -1
  65. data/generated/google/apis/cloudsearch_v1/classes.rb +354 -0
  66. data/generated/google/apis/cloudsearch_v1/representations.rb +196 -0
  67. data/generated/google/apis/cloudsearch_v1/service.rb +314 -2
  68. data/generated/google/apis/cloudtasks_v2beta3.rb +1 -1
  69. data/generated/google/apis/cloudtasks_v2beta3/classes.rb +62 -29
  70. data/generated/google/apis/cloudtrace_v1.rb +1 -1
  71. data/generated/google/apis/cloudtrace_v1/classes.rb +1 -1
  72. data/generated/google/apis/cloudtrace_v1/service.rb +10 -10
  73. data/generated/google/apis/cloudtrace_v2.rb +1 -1
  74. data/generated/google/apis/cloudtrace_v2/classes.rb +3 -3
  75. data/generated/google/apis/commentanalyzer_v1alpha1.rb +1 -1
  76. data/generated/google/apis/commentanalyzer_v1alpha1/classes.rb +7 -10
  77. data/generated/google/apis/compute_alpha.rb +1 -1
  78. data/generated/google/apis/compute_alpha/classes.rb +38 -42
  79. data/generated/google/apis/compute_alpha/representations.rb +5 -16
  80. data/generated/google/apis/compute_beta.rb +1 -1
  81. data/generated/google/apis/compute_beta/classes.rb +10 -5
  82. data/generated/google/apis/compute_v1.rb +1 -1
  83. data/generated/google/apis/compute_v1/classes.rb +1327 -4
  84. data/generated/google/apis/compute_v1/representations.rb +439 -0
  85. data/generated/google/apis/container_v1.rb +1 -1
  86. data/generated/google/apis/container_v1/classes.rb +111 -0
  87. data/generated/google/apis/container_v1/representations.rb +51 -0
  88. data/generated/google/apis/containeranalysis_v1alpha1.rb +1 -1
  89. data/generated/google/apis/containeranalysis_v1alpha1/classes.rb +76 -30
  90. data/generated/google/apis/containeranalysis_v1alpha1/representations.rb +1 -0
  91. data/generated/google/apis/containeranalysis_v1beta1.rb +1 -1
  92. data/generated/google/apis/containeranalysis_v1beta1/classes.rb +70 -30
  93. data/generated/google/apis/content_v2.rb +1 -1
  94. data/generated/google/apis/content_v2/service.rb +0 -226
  95. data/generated/google/apis/dataflow_v1b3.rb +1 -1
  96. data/generated/google/apis/dataflow_v1b3/classes.rb +42 -0
  97. data/generated/google/apis/dataflow_v1b3/representations.rb +4 -0
  98. data/generated/google/apis/dataproc_v1.rb +1 -1
  99. data/generated/google/apis/dataproc_v1/classes.rb +324 -38
  100. data/generated/google/apis/dataproc_v1/representations.rb +97 -0
  101. data/generated/google/apis/dataproc_v1/service.rb +613 -1
  102. data/generated/google/apis/dataproc_v1beta2.rb +1 -1
  103. data/generated/google/apis/dataproc_v1beta2/classes.rb +100 -54
  104. data/generated/google/apis/dataproc_v1beta2/service.rb +29 -22
  105. data/generated/google/apis/dialogflow_v2.rb +1 -1
  106. data/generated/google/apis/dialogflow_v2/classes.rb +363 -167
  107. data/generated/google/apis/dialogflow_v2/representations.rb +160 -49
  108. data/generated/google/apis/dialogflow_v2/service.rb +1 -1
  109. data/generated/google/apis/dialogflow_v2beta1.rb +1 -1
  110. data/generated/google/apis/dialogflow_v2beta1/classes.rb +433 -178
  111. data/generated/google/apis/dialogflow_v2beta1/representations.rb +199 -59
  112. data/generated/google/apis/dialogflow_v2beta1/service.rb +39 -0
  113. data/generated/google/apis/dlp_v2.rb +1 -1
  114. data/generated/google/apis/dlp_v2/classes.rb +3 -4
  115. data/generated/google/apis/doubleclickbidmanager_v1.rb +1 -1
  116. data/generated/google/apis/drive_v2.rb +1 -1
  117. data/generated/google/apis/drive_v2/classes.rb +2 -2
  118. data/generated/google/apis/drive_v3.rb +1 -1
  119. data/generated/google/apis/drive_v3/classes.rb +2 -2
  120. data/generated/google/apis/fcm_v1.rb +1 -1
  121. data/generated/google/apis/fcm_v1/classes.rb +9 -4
  122. data/generated/google/apis/file_v1.rb +1 -1
  123. data/generated/google/apis/file_v1/classes.rb +8 -0
  124. data/generated/google/apis/file_v1/representations.rb +1 -0
  125. data/generated/google/apis/file_v1/service.rb +2 -0
  126. data/generated/google/apis/file_v1beta1.rb +1 -1
  127. data/generated/google/apis/file_v1beta1/classes.rb +8 -0
  128. data/generated/google/apis/file_v1beta1/representations.rb +1 -0
  129. data/generated/google/apis/file_v1beta1/service.rb +2 -0
  130. data/generated/google/apis/firebase_v1beta1.rb +1 -1
  131. data/generated/google/apis/firebase_v1beta1/classes.rb +41 -4
  132. data/generated/google/apis/firebase_v1beta1/representations.rb +2 -0
  133. data/generated/google/apis/firebase_v1beta1/service.rb +22 -14
  134. data/generated/google/apis/fitness_v1.rb +19 -19
  135. data/generated/google/apis/healthcare_v1beta1.rb +1 -1
  136. data/generated/google/apis/healthcare_v1beta1/classes.rb +136 -100
  137. data/generated/google/apis/healthcare_v1beta1/representations.rb +1 -1
  138. data/generated/google/apis/healthcare_v1beta1/service.rb +124 -119
  139. data/generated/google/apis/iam_v1.rb +1 -1
  140. data/generated/google/apis/iam_v1/classes.rb +87 -41
  141. data/generated/google/apis/iap_v1.rb +1 -1
  142. data/generated/google/apis/iap_v1/classes.rb +62 -29
  143. data/generated/google/apis/iap_v1beta1.rb +1 -1
  144. data/generated/google/apis/iap_v1beta1/classes.rb +62 -29
  145. data/generated/google/apis/ml_v1.rb +1 -1
  146. data/generated/google/apis/ml_v1/classes.rb +114 -49
  147. data/generated/google/apis/ml_v1/representations.rb +2 -0
  148. data/generated/google/apis/ml_v1/service.rb +12 -6
  149. data/generated/google/apis/monitoring_v3.rb +1 -1
  150. data/generated/google/apis/monitoring_v3/classes.rb +14 -10
  151. data/generated/google/apis/monitoring_v3/representations.rb +1 -0
  152. data/generated/google/apis/oslogin_v1.rb +1 -1
  153. data/generated/google/apis/oslogin_v1/classes.rb +12 -0
  154. data/generated/google/apis/oslogin_v1/representations.rb +2 -0
  155. data/generated/google/apis/oslogin_v1alpha.rb +1 -1
  156. data/generated/google/apis/oslogin_v1alpha/classes.rb +12 -0
  157. data/generated/google/apis/oslogin_v1alpha/representations.rb +2 -0
  158. data/generated/google/apis/oslogin_v1beta.rb +1 -1
  159. data/generated/google/apis/oslogin_v1beta/classes.rb +12 -0
  160. data/generated/google/apis/oslogin_v1beta/representations.rb +2 -0
  161. data/generated/google/apis/policytroubleshooter_v1beta.rb +34 -0
  162. data/generated/google/apis/policytroubleshooter_v1beta/classes.rb +621 -0
  163. data/generated/google/apis/policytroubleshooter_v1beta/representations.rb +203 -0
  164. data/generated/google/apis/policytroubleshooter_v1beta/service.rb +91 -0
  165. data/generated/google/apis/proximitybeacon_v1beta1.rb +1 -1
  166. data/generated/google/apis/proximitybeacon_v1beta1/classes.rb +7 -4
  167. data/generated/google/apis/proximitybeacon_v1beta1/service.rb +60 -58
  168. data/generated/google/apis/recommender_v1beta1.rb +34 -0
  169. data/generated/google/apis/recommender_v1beta1/classes.rb +502 -0
  170. data/generated/google/apis/recommender_v1beta1/representations.rb +232 -0
  171. data/generated/google/apis/recommender_v1beta1/service.rb +262 -0
  172. data/generated/google/apis/remotebuildexecution_v1.rb +1 -1
  173. data/generated/google/apis/remotebuildexecution_v1/classes.rb +49 -1100
  174. data/generated/google/apis/remotebuildexecution_v1/representations.rb +1 -276
  175. data/generated/google/apis/remotebuildexecution_v1/service.rb +0 -77
  176. data/generated/google/apis/remotebuildexecution_v1alpha.rb +1 -1
  177. data/generated/google/apis/remotebuildexecution_v1alpha/classes.rb +12 -990
  178. data/generated/google/apis/remotebuildexecution_v1alpha/representations.rb +1 -245
  179. data/generated/google/apis/remotebuildexecution_v2.rb +1 -1
  180. data/generated/google/apis/remotebuildexecution_v2/classes.rb +12 -990
  181. data/generated/google/apis/remotebuildexecution_v2/representations.rb +1 -245
  182. data/generated/google/apis/run_v1.rb +1 -1
  183. data/generated/google/apis/run_v1/classes.rb +3553 -33
  184. data/generated/google/apis/run_v1/representations.rb +1186 -4
  185. data/generated/google/apis/run_v1/service.rb +2509 -23
  186. data/generated/google/apis/run_v1alpha1.rb +1 -1
  187. data/generated/google/apis/run_v1alpha1/classes.rb +103 -140
  188. data/generated/google/apis/run_v1alpha1/representations.rb +5 -43
  189. data/generated/google/apis/run_v1beta1.rb +35 -0
  190. data/generated/google/apis/run_v1beta1/classes.rb +1209 -0
  191. data/generated/google/apis/run_v1beta1/representations.rb +421 -0
  192. data/generated/google/apis/run_v1beta1/service.rb +172 -0
  193. data/generated/google/apis/runtimeconfig_v1beta1.rb +1 -1
  194. data/generated/google/apis/runtimeconfig_v1beta1/classes.rb +62 -29
  195. data/generated/google/apis/safebrowsing_v4.rb +5 -2
  196. data/generated/google/apis/safebrowsing_v4/service.rb +4 -1
  197. data/generated/google/apis/securitycenter_v1.rb +1 -1
  198. data/generated/google/apis/securitycenter_v1/classes.rb +70 -35
  199. data/generated/google/apis/securitycenter_v1/service.rb +13 -12
  200. data/generated/google/apis/securitycenter_v1beta1.rb +1 -1
  201. data/generated/google/apis/securitycenter_v1beta1/classes.rb +71 -35
  202. data/generated/google/apis/securitycenter_v1beta1/service.rb +13 -12
  203. data/generated/google/apis/servicebroker_v1.rb +1 -1
  204. data/generated/google/apis/servicebroker_v1/classes.rb +62 -29
  205. data/generated/google/apis/servicebroker_v1alpha1.rb +1 -1
  206. data/generated/google/apis/servicebroker_v1alpha1/classes.rb +62 -29
  207. data/generated/google/apis/servicebroker_v1beta1.rb +1 -1
  208. data/generated/google/apis/servicebroker_v1beta1/classes.rb +62 -29
  209. data/generated/google/apis/serviceconsumermanagement_v1.rb +1 -1
  210. data/generated/google/apis/serviceconsumermanagement_v1/classes.rb +11 -2
  211. data/generated/google/apis/serviceconsumermanagement_v1/representations.rb +1 -0
  212. data/generated/google/apis/servicemanagement_v1.rb +1 -1
  213. data/generated/google/apis/servicemanagement_v1/classes.rb +63 -33
  214. data/generated/google/apis/servicenetworking_v1.rb +1 -1
  215. data/generated/google/apis/servicenetworking_v1/classes.rb +11 -2
  216. data/generated/google/apis/servicenetworking_v1/representations.rb +1 -0
  217. data/generated/google/apis/servicenetworking_v1beta.rb +1 -1
  218. data/generated/google/apis/servicenetworking_v1beta/classes.rb +11 -2
  219. data/generated/google/apis/servicenetworking_v1beta/representations.rb +1 -0
  220. data/generated/google/apis/serviceusage_v1.rb +1 -1
  221. data/generated/google/apis/serviceusage_v1/classes.rb +11 -2
  222. data/generated/google/apis/serviceusage_v1/representations.rb +1 -0
  223. data/generated/google/apis/serviceusage_v1beta1.rb +1 -1
  224. data/generated/google/apis/serviceusage_v1beta1/classes.rb +11 -2
  225. data/generated/google/apis/serviceusage_v1beta1/representations.rb +1 -0
  226. data/generated/google/apis/spanner_v1.rb +1 -1
  227. data/generated/google/apis/spanner_v1/classes.rb +78 -2
  228. data/generated/google/apis/spanner_v1/representations.rb +44 -0
  229. data/generated/google/apis/spanner_v1/service.rb +35 -0
  230. data/generated/google/apis/speech_v1.rb +1 -1
  231. data/generated/google/apis/speech_v1/classes.rb +73 -19
  232. data/generated/google/apis/speech_v1/representations.rb +18 -0
  233. data/generated/google/apis/speech_v1p1beta1.rb +1 -1
  234. data/generated/google/apis/speech_v1p1beta1/classes.rb +31 -35
  235. data/generated/google/apis/speech_v2beta.rb +1 -1
  236. data/generated/google/apis/speech_v2beta/classes.rb +6 -6
  237. data/generated/google/apis/speech_v2beta/representations.rb +2 -2
  238. data/generated/google/apis/storage_v1.rb +1 -1
  239. data/generated/google/apis/storage_v1/classes.rb +1 -1
  240. data/generated/google/apis/storage_v1/representations.rb +2 -1
  241. data/generated/google/apis/storage_v1beta1.rb +1 -1
  242. data/generated/google/apis/storage_v1beta2.rb +1 -1
  243. data/generated/google/apis/streetviewpublish_v1.rb +1 -1
  244. data/generated/google/apis/streetviewpublish_v1/classes.rb +1 -1
  245. data/generated/google/apis/streetviewpublish_v1/service.rb +9 -5
  246. data/generated/google/apis/testing_v1.rb +1 -1
  247. data/generated/google/apis/testing_v1/classes.rb +42 -0
  248. data/generated/google/apis/testing_v1/representations.rb +18 -0
  249. data/generated/google/apis/texttospeech_v1.rb +1 -1
  250. data/generated/google/apis/texttospeech_v1/classes.rb +6 -5
  251. data/generated/google/apis/texttospeech_v1/service.rb +1 -1
  252. data/generated/google/apis/texttospeech_v1beta1.rb +1 -1
  253. data/generated/google/apis/texttospeech_v1beta1/classes.rb +6 -5
  254. data/generated/google/apis/texttospeech_v1beta1/service.rb +1 -1
  255. data/generated/google/apis/toolresults_v1beta3.rb +1 -1
  256. data/generated/google/apis/toolresults_v1beta3/classes.rb +1 -1
  257. data/generated/google/apis/translate_v3beta1.rb +1 -1
  258. data/generated/google/apis/translate_v3beta1/classes.rb +22 -16
  259. data/generated/google/apis/translate_v3beta1/service.rb +31 -31
  260. data/generated/google/apis/videointelligence_v1.rb +1 -1
  261. data/generated/google/apis/videointelligence_v1/classes.rb +45 -10
  262. data/generated/google/apis/videointelligence_v1beta2.rb +1 -1
  263. data/generated/google/apis/videointelligence_v1beta2/classes.rb +45 -10
  264. data/generated/google/apis/videointelligence_v1p1beta1.rb +1 -1
  265. data/generated/google/apis/videointelligence_v1p1beta1/classes.rb +45 -10
  266. data/generated/google/apis/videointelligence_v1p2beta1.rb +1 -1
  267. data/generated/google/apis/videointelligence_v1p2beta1/classes.rb +45 -10
  268. data/generated/google/apis/videointelligence_v1p3beta1.rb +1 -1
  269. data/generated/google/apis/videointelligence_v1p3beta1/classes.rb +45 -10
  270. data/generated/google/apis/vision_v1.rb +1 -1
  271. data/generated/google/apis/vision_v1/classes.rb +6 -156
  272. data/generated/google/apis/vision_v1/representations.rb +0 -44
  273. data/generated/google/apis/vision_v1p1beta1.rb +1 -1
  274. data/generated/google/apis/vision_v1p1beta1/classes.rb +6 -156
  275. data/generated/google/apis/vision_v1p1beta1/representations.rb +0 -44
  276. data/generated/google/apis/vision_v1p2beta1.rb +1 -1
  277. data/generated/google/apis/vision_v1p2beta1/classes.rb +6 -156
  278. data/generated/google/apis/vision_v1p2beta1/representations.rb +0 -44
  279. data/generated/google/apis/websecurityscanner_v1.rb +1 -1
  280. data/generated/google/apis/websecurityscanner_v1alpha.rb +1 -1
  281. data/generated/google/apis/websecurityscanner_v1alpha/classes.rb +21 -31
  282. data/generated/google/apis/websecurityscanner_v1alpha/service.rb +1 -1
  283. data/generated/google/apis/websecurityscanner_v1beta.rb +1 -1
  284. data/generated/google/apis/websecurityscanner_v1beta/classes.rb +30 -42
  285. data/generated/google/apis/websecurityscanner_v1beta/service.rb +1 -1
  286. data/generated/google/apis/youtube_partner_v1.rb +1 -1
  287. data/generated/google/apis/youtube_partner_v1/classes.rb +0 -83
  288. data/generated/google/apis/youtube_partner_v1/representations.rb +0 -35
  289. data/generated/google/apis/youtube_partner_v1/service.rb +0 -100
  290. data/lib/google/apis/version.rb +1 -1
  291. metadata +18 -6
  292. data/generated/google/apis/dfareporting_v3_1.rb +0 -40
  293. data/generated/google/apis/dfareporting_v3_1/classes.rb +0 -11998
  294. data/generated/google/apis/dfareporting_v3_1/representations.rb +0 -4313
  295. data/generated/google/apis/dfareporting_v3_1/service.rb +0 -8688
@@ -25,7 +25,7 @@ module Google
25
25
  # @see https://developers.google.com/compute/docs/reference/latest/
26
26
  module ComputeV1
27
27
  VERSION = 'V1'
28
- REVISION = '20190825'
28
+ REVISION = '20190905'
29
29
 
30
30
  # View and manage your data across Google Cloud Platform services
31
31
  AUTH_CLOUD_PLATFORM = 'https://www.googleapis.com/auth/cloud-platform'
@@ -1445,8 +1445,7 @@ module Google
1445
1445
  # @return [Array<String>]
1446
1446
  attr_accessor :exempted_members
1447
1447
 
1448
- # Specifies whether principals can be exempted for the same LogType in lower-
1449
- # level resource policies. If true, any lower-level exemptions will be ignored.
1448
+ #
1450
1449
  # Corresponds to the JSON property `ignoreChildExemptions`
1451
1450
  # @return [Boolean]
1452
1451
  attr_accessor :ignore_child_exemptions
@@ -2515,11 +2514,21 @@ module Google
2515
2514
  # @return [Google::Apis::ComputeV1::BackendServiceCdnPolicy]
2516
2515
  attr_accessor :cdn_policy
2517
2516
 
2517
+ # Settings controlling the volume of connections to a backend service.
2518
+ # Corresponds to the JSON property `circuitBreakers`
2519
+ # @return [Google::Apis::ComputeV1::CircuitBreakers]
2520
+ attr_accessor :circuit_breakers
2521
+
2518
2522
  # Message containing connection draining configuration.
2519
2523
  # Corresponds to the JSON property `connectionDraining`
2520
2524
  # @return [Google::Apis::ComputeV1::ConnectionDraining]
2521
2525
  attr_accessor :connection_draining
2522
2526
 
2527
+ # This message defines settings for a consistent hash style load balancer.
2528
+ # Corresponds to the JSON property `consistentHash`
2529
+ # @return [Google::Apis::ComputeV1::ConsistentHashLoadBalancerSettings]
2530
+ attr_accessor :consistent_hash
2531
+
2523
2532
  # [Output Only] Creation timestamp in RFC3339 text format.
2524
2533
  # Corresponds to the JSON property `creationTimestamp`
2525
2534
  # @return [String]
@@ -2590,6 +2599,33 @@ module Google
2590
2599
  # @return [String]
2591
2600
  attr_accessor :load_balancing_scheme
2592
2601
 
2602
+ # The load balancing algorithm used within the scope of the locality. The
2603
+ # possible values are:
2604
+ # - ROUND_ROBIN: This is a simple policy in which each healthy backend is
2605
+ # selected in round robin order. This is the default.
2606
+ # - LEAST_REQUEST: An O(1) algorithm which selects two random healthy hosts and
2607
+ # picks the host which has fewer active requests.
2608
+ # - RING_HASH: The ring/modulo hash load balancer implements consistent hashing
2609
+ # to backends. The algorithm has the property that the addition/removal of a
2610
+ # host from a set of N hosts only affects 1/N of the requests.
2611
+ # - RANDOM: The load balancer selects a random healthy host.
2612
+ # - ORIGINAL_DESTINATION: Backend host is selected based on the client
2613
+ # connection metadata, i.e., connections are opened to the same address as the
2614
+ # destination address of the incoming connection before the connection was
2615
+ # redirected to the load balancer.
2616
+ # - MAGLEV: used as a drop in replacement for the ring hash load balancer.
2617
+ # Maglev is not as stable as ring hash but has faster table lookup build times
2618
+ # and host selection times. For more information about Maglev, refer to https://
2619
+ # ai.google/research/pubs/pub44824
2620
+ # This field is applicable to either:
2621
+ # - A regional backend service with the service_protocol set to HTTP, HTTPS, or
2622
+ # HTTP2, and load_balancing_scheme set to INTERNAL_MANAGED.
2623
+ # - A global backend service with the load_balancing_scheme set to
2624
+ # INTERNAL_SELF_MANAGED.
2625
+ # Corresponds to the JSON property `localityLbPolicy`
2626
+ # @return [String]
2627
+ attr_accessor :locality_lb_policy
2628
+
2593
2629
  # Name of the resource. Provided by the client when the resource is created. The
2594
2630
  # name must be 1-63 characters long, and comply with RFC1035. Specifically, the
2595
2631
  # name must be 1-63 characters long and match the regular expression `[a-z]([-a-
@@ -2600,6 +2636,11 @@ module Google
2600
2636
  # @return [String]
2601
2637
  attr_accessor :name
2602
2638
 
2639
+ # Settings controlling eviction of unhealthy hosts from the load balancing pool.
2640
+ # Corresponds to the JSON property `outlierDetection`
2641
+ # @return [Google::Apis::ComputeV1::OutlierDetection]
2642
+ attr_accessor :outlier_detection
2643
+
2603
2644
  # Deprecated in favor of portName. The TCP port to connect on the backend. The
2604
2645
  # default value is 80.
2605
2646
  # This cannot be used if the loadBalancingScheme is INTERNAL (Internal TCP/UDP
@@ -2675,7 +2716,9 @@ module Google
2675
2716
  @affinity_cookie_ttl_sec = args[:affinity_cookie_ttl_sec] if args.key?(:affinity_cookie_ttl_sec)
2676
2717
  @backends = args[:backends] if args.key?(:backends)
2677
2718
  @cdn_policy = args[:cdn_policy] if args.key?(:cdn_policy)
2719
+ @circuit_breakers = args[:circuit_breakers] if args.key?(:circuit_breakers)
2678
2720
  @connection_draining = args[:connection_draining] if args.key?(:connection_draining)
2721
+ @consistent_hash = args[:consistent_hash] if args.key?(:consistent_hash)
2679
2722
  @creation_timestamp = args[:creation_timestamp] if args.key?(:creation_timestamp)
2680
2723
  @custom_request_headers = args[:custom_request_headers] if args.key?(:custom_request_headers)
2681
2724
  @description = args[:description] if args.key?(:description)
@@ -2686,7 +2729,9 @@ module Google
2686
2729
  @id = args[:id] if args.key?(:id)
2687
2730
  @kind = args[:kind] if args.key?(:kind)
2688
2731
  @load_balancing_scheme = args[:load_balancing_scheme] if args.key?(:load_balancing_scheme)
2732
+ @locality_lb_policy = args[:locality_lb_policy] if args.key?(:locality_lb_policy)
2689
2733
  @name = args[:name] if args.key?(:name)
2734
+ @outlier_detection = args[:outlier_detection] if args.key?(:outlier_detection)
2690
2735
  @port = args[:port] if args.key?(:port)
2691
2736
  @port_name = args[:port_name] if args.key?(:port_name)
2692
2737
  @protocol = args[:protocol] if args.key?(:protocol)
@@ -3275,6 +3320,55 @@ module Google
3275
3320
  end
3276
3321
  end
3277
3322
 
3323
+ # Settings controlling the volume of connections to a backend service.
3324
+ class CircuitBreakers
3325
+ include Google::Apis::Core::Hashable
3326
+
3327
+ # The maximum number of connections to the backend cluster. If not specified,
3328
+ # the default is 1024.
3329
+ # Corresponds to the JSON property `maxConnections`
3330
+ # @return [Fixnum]
3331
+ attr_accessor :max_connections
3332
+
3333
+ # The maximum number of pending requests allowed to the backend cluster. If not
3334
+ # specified, the default is 1024.
3335
+ # Corresponds to the JSON property `maxPendingRequests`
3336
+ # @return [Fixnum]
3337
+ attr_accessor :max_pending_requests
3338
+
3339
+ # The maximum number of parallel requests that allowed to the backend cluster.
3340
+ # If not specified, the default is 1024.
3341
+ # Corresponds to the JSON property `maxRequests`
3342
+ # @return [Fixnum]
3343
+ attr_accessor :max_requests
3344
+
3345
+ # Maximum requests for a single backend connection. This parameter is respected
3346
+ # by both the HTTP/1.1 and HTTP/2 implementations. If not specified, there is no
3347
+ # limit. Setting this parameter to 1 will effectively disable keep alive.
3348
+ # Corresponds to the JSON property `maxRequestsPerConnection`
3349
+ # @return [Fixnum]
3350
+ attr_accessor :max_requests_per_connection
3351
+
3352
+ # The maximum number of parallel retries allowed to the backend cluster. If not
3353
+ # specified, the default is 3.
3354
+ # Corresponds to the JSON property `maxRetries`
3355
+ # @return [Fixnum]
3356
+ attr_accessor :max_retries
3357
+
3358
+ def initialize(**args)
3359
+ update!(**args)
3360
+ end
3361
+
3362
+ # Update properties of this object
3363
+ def update!(**args)
3364
+ @max_connections = args[:max_connections] if args.key?(:max_connections)
3365
+ @max_pending_requests = args[:max_pending_requests] if args.key?(:max_pending_requests)
3366
+ @max_requests = args[:max_requests] if args.key?(:max_requests)
3367
+ @max_requests_per_connection = args[:max_requests_per_connection] if args.key?(:max_requests_per_connection)
3368
+ @max_retries = args[:max_retries] if args.key?(:max_retries)
3369
+ end
3370
+ end
3371
+
3278
3372
  # Represents a regional Commitment resource.
3279
3373
  # Creating a commitment resource means that you are purchasing a committed use
3280
3374
  # contract with an explicit start and end time. You can create commitments based
@@ -3781,6 +3875,150 @@ module Google
3781
3875
  end
3782
3876
  end
3783
3877
 
3878
+ # This message defines settings for a consistent hash style load balancer.
3879
+ class ConsistentHashLoadBalancerSettings
3880
+ include Google::Apis::Core::Hashable
3881
+
3882
+ # The information about the HTTP Cookie on which the hash function is based for
3883
+ # load balancing policies that use a consistent hash.
3884
+ # Corresponds to the JSON property `httpCookie`
3885
+ # @return [Google::Apis::ComputeV1::ConsistentHashLoadBalancerSettingsHttpCookie]
3886
+ attr_accessor :http_cookie
3887
+
3888
+ # The hash based on the value of the specified header field. This field is
3889
+ # applicable if the sessionAffinity is set to HEADER_FIELD.
3890
+ # Corresponds to the JSON property `httpHeaderName`
3891
+ # @return [String]
3892
+ attr_accessor :http_header_name
3893
+
3894
+ # The minimum number of virtual nodes to use for the hash ring. Defaults to 1024.
3895
+ # Larger ring sizes result in more granular load distributions. If the number
3896
+ # of hosts in the load balancing pool is larger than the ring size, each host
3897
+ # will be assigned a single virtual node.
3898
+ # Corresponds to the JSON property `minimumRingSize`
3899
+ # @return [Fixnum]
3900
+ attr_accessor :minimum_ring_size
3901
+
3902
+ def initialize(**args)
3903
+ update!(**args)
3904
+ end
3905
+
3906
+ # Update properties of this object
3907
+ def update!(**args)
3908
+ @http_cookie = args[:http_cookie] if args.key?(:http_cookie)
3909
+ @http_header_name = args[:http_header_name] if args.key?(:http_header_name)
3910
+ @minimum_ring_size = args[:minimum_ring_size] if args.key?(:minimum_ring_size)
3911
+ end
3912
+ end
3913
+
3914
+ # The information about the HTTP Cookie on which the hash function is based for
3915
+ # load balancing policies that use a consistent hash.
3916
+ class ConsistentHashLoadBalancerSettingsHttpCookie
3917
+ include Google::Apis::Core::Hashable
3918
+
3919
+ # Name of the cookie.
3920
+ # Corresponds to the JSON property `name`
3921
+ # @return [String]
3922
+ attr_accessor :name
3923
+
3924
+ # Path to set for the cookie.
3925
+ # Corresponds to the JSON property `path`
3926
+ # @return [String]
3927
+ attr_accessor :path
3928
+
3929
+ # A Duration represents a fixed-length span of time represented as a count of
3930
+ # seconds and fractions of seconds at nanosecond resolution. It is independent
3931
+ # of any calendar and concepts like "day" or "month". Range is approximately 10,
3932
+ # 000 years.
3933
+ # Corresponds to the JSON property `ttl`
3934
+ # @return [Google::Apis::ComputeV1::Duration]
3935
+ attr_accessor :ttl
3936
+
3937
+ def initialize(**args)
3938
+ update!(**args)
3939
+ end
3940
+
3941
+ # Update properties of this object
3942
+ def update!(**args)
3943
+ @name = args[:name] if args.key?(:name)
3944
+ @path = args[:path] if args.key?(:path)
3945
+ @ttl = args[:ttl] if args.key?(:ttl)
3946
+ end
3947
+ end
3948
+
3949
+ # The specification for allowing client side cross-origin requests. Please see
3950
+ # W3C Recommendation for Cross Origin Resource Sharing
3951
+ class CorsPolicy
3952
+ include Google::Apis::Core::Hashable
3953
+
3954
+ # In response to a preflight request, setting this to true indicates that the
3955
+ # actual request can include user credentials. This translates to the Access-
3956
+ # Control-Allow-Credentials header.
3957
+ # Default is false.
3958
+ # Corresponds to the JSON property `allowCredentials`
3959
+ # @return [Boolean]
3960
+ attr_accessor :allow_credentials
3961
+ alias_method :allow_credentials?, :allow_credentials
3962
+
3963
+ # Specifies the content for the Access-Control-Allow-Headers header.
3964
+ # Corresponds to the JSON property `allowHeaders`
3965
+ # @return [Array<String>]
3966
+ attr_accessor :allow_headers
3967
+
3968
+ # Specifies the content for the Access-Control-Allow-Methods header.
3969
+ # Corresponds to the JSON property `allowMethods`
3970
+ # @return [Array<String>]
3971
+ attr_accessor :allow_methods
3972
+
3973
+ # Specifies the regualar expression patterns that match allowed origins. For
3974
+ # regular expression grammar please see en.cppreference.com/w/cpp/regex/
3975
+ # ecmascript
3976
+ # An origin is allowed if it matches either allow_origins or allow_origin_regex.
3977
+ # Corresponds to the JSON property `allowOriginRegexes`
3978
+ # @return [Array<String>]
3979
+ attr_accessor :allow_origin_regexes
3980
+
3981
+ # Specifies the list of origins that will be allowed to do CORS requests.
3982
+ # An origin is allowed if it matches either allow_origins or allow_origin_regex.
3983
+ # Corresponds to the JSON property `allowOrigins`
3984
+ # @return [Array<String>]
3985
+ attr_accessor :allow_origins
3986
+
3987
+ # If true, specifies the CORS policy is disabled. The default value of false,
3988
+ # which indicates that the CORS policy is in effect.
3989
+ # Corresponds to the JSON property `disabled`
3990
+ # @return [Boolean]
3991
+ attr_accessor :disabled
3992
+ alias_method :disabled?, :disabled
3993
+
3994
+ # Specifies the content for the Access-Control-Expose-Headers header.
3995
+ # Corresponds to the JSON property `exposeHeaders`
3996
+ # @return [Array<String>]
3997
+ attr_accessor :expose_headers
3998
+
3999
+ # Specifies how long the results of a preflight request can be cached. This
4000
+ # translates to the content for the Access-Control-Max-Age header.
4001
+ # Corresponds to the JSON property `maxAge`
4002
+ # @return [Fixnum]
4003
+ attr_accessor :max_age
4004
+
4005
+ def initialize(**args)
4006
+ update!(**args)
4007
+ end
4008
+
4009
+ # Update properties of this object
4010
+ def update!(**args)
4011
+ @allow_credentials = args[:allow_credentials] if args.key?(:allow_credentials)
4012
+ @allow_headers = args[:allow_headers] if args.key?(:allow_headers)
4013
+ @allow_methods = args[:allow_methods] if args.key?(:allow_methods)
4014
+ @allow_origin_regexes = args[:allow_origin_regexes] if args.key?(:allow_origin_regexes)
4015
+ @allow_origins = args[:allow_origins] if args.key?(:allow_origins)
4016
+ @disabled = args[:disabled] if args.key?(:disabled)
4017
+ @expose_headers = args[:expose_headers] if args.key?(:expose_headers)
4018
+ @max_age = args[:max_age] if args.key?(:max_age)
4019
+ end
4020
+ end
4021
+
3784
4022
  # Represents a customer-supplied encryption key
3785
4023
  class CustomerEncryptionKey
3786
4024
  include Google::Apis::Core::Hashable
@@ -5108,6 +5346,38 @@ module Google
5108
5346
  end
5109
5347
  end
5110
5348
 
5349
+ # A Duration represents a fixed-length span of time represented as a count of
5350
+ # seconds and fractions of seconds at nanosecond resolution. It is independent
5351
+ # of any calendar and concepts like "day" or "month". Range is approximately 10,
5352
+ # 000 years.
5353
+ class Duration
5354
+ include Google::Apis::Core::Hashable
5355
+
5356
+ # Span of time that's a fraction of a second at nanosecond resolution. Durations
5357
+ # less than one second are represented with a 0 `seconds` field and a positive `
5358
+ # nanos` field. Must be from 0 to 999,999,999 inclusive.
5359
+ # Corresponds to the JSON property `nanos`
5360
+ # @return [Fixnum]
5361
+ attr_accessor :nanos
5362
+
5363
+ # Span of time at a resolution of a second. Must be from 0 to 315,576,000,000
5364
+ # inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24
5365
+ # hr/day * 365.25 days/year * 10000 years
5366
+ # Corresponds to the JSON property `seconds`
5367
+ # @return [Fixnum]
5368
+ attr_accessor :seconds
5369
+
5370
+ def initialize(**args)
5371
+ update!(**args)
5372
+ end
5373
+
5374
+ # Update properties of this object
5375
+ def update!(**args)
5376
+ @nanos = args[:nanos] if args.key?(:nanos)
5377
+ @seconds = args[:seconds] if args.key?(:seconds)
5378
+ end
5379
+ end
5380
+
5111
5381
  # Represents an expression text. Example:
5112
5382
  # title: "User account presence" description: "Determines whether the request
5113
5383
  # has a user account" expression: "size(request.user) > 0"
@@ -5951,6 +6221,23 @@ module Google
5951
6221
  # @return [String]
5952
6222
  attr_accessor :load_balancing_scheme
5953
6223
 
6224
+ # Opaque filter criteria used by Loadbalancer to restrict routing configuration
6225
+ # to a limited set xDS compliant clients. In their xDS requests to Loadbalancer,
6226
+ # xDS clients present node metadata. If a match takes place, the relevant
6227
+ # routing configuration is made available to those proxies.
6228
+ # For each metadataFilter in this list, if its filterMatchCriteria is set to
6229
+ # MATCH_ANY, at least one of the filterLabels must match the corresponding label
6230
+ # provided in the metadata. If its filterMatchCriteria is set to MATCH_ALL, then
6231
+ # all of its filterLabels must match with corresponding labels in the provided
6232
+ # metadata.
6233
+ # metadataFilters specified here can be overridden by those specified in the
6234
+ # UrlMap that this ForwardingRule references.
6235
+ # metadataFilters only applies to Loadbalancers that have their
6236
+ # loadBalancingScheme set to INTERNAL_SELF_MANAGED.
6237
+ # Corresponds to the JSON property `metadataFilters`
6238
+ # @return [Array<Google::Apis::ComputeV1::MetadataFilter>]
6239
+ attr_accessor :metadata_filters
6240
+
5954
6241
  # Name of the resource; provided by the client when the resource is created. The
5955
6242
  # name must be 1-63 characters long, and comply with RFC1035. Specifically, the
5956
6243
  # name must be 1-63 characters long and match the regular expression `[a-z]([-a-
@@ -6085,6 +6372,7 @@ module Google
6085
6372
  @ip_version = args[:ip_version] if args.key?(:ip_version)
6086
6373
  @kind = args[:kind] if args.key?(:kind)
6087
6374
  @load_balancing_scheme = args[:load_balancing_scheme] if args.key?(:load_balancing_scheme)
6375
+ @metadata_filters = args[:metadata_filters] if args.key?(:metadata_filters)
6088
6376
  @name = args[:name] if args.key?(:name)
6089
6377
  @network = args[:network] if args.key?(:network)
6090
6378
  @network_tier = args[:network_tier] if args.key?(:network_tier)
@@ -7483,6 +7771,258 @@ module Google
7483
7771
  end
7484
7772
  end
7485
7773
 
7774
+ # Specification for how requests are aborted as part of fault injection.
7775
+ class HttpFaultAbort
7776
+ include Google::Apis::Core::Hashable
7777
+
7778
+ # The HTTP status code used to abort the request.
7779
+ # The value must be between 200 and 599 inclusive.
7780
+ # Corresponds to the JSON property `httpStatus`
7781
+ # @return [Fixnum]
7782
+ attr_accessor :http_status
7783
+
7784
+ # The percentage of traffic (connections/operations/requests) which will be
7785
+ # aborted as part of fault injection.
7786
+ # The value must be between 0.0 and 100.0 inclusive.
7787
+ # Corresponds to the JSON property `percentage`
7788
+ # @return [Float]
7789
+ attr_accessor :percentage
7790
+
7791
+ def initialize(**args)
7792
+ update!(**args)
7793
+ end
7794
+
7795
+ # Update properties of this object
7796
+ def update!(**args)
7797
+ @http_status = args[:http_status] if args.key?(:http_status)
7798
+ @percentage = args[:percentage] if args.key?(:percentage)
7799
+ end
7800
+ end
7801
+
7802
+ # Specifies the delay introduced by Loadbalancer before forwarding the request
7803
+ # to the backend service as part of fault injection.
7804
+ class HttpFaultDelay
7805
+ include Google::Apis::Core::Hashable
7806
+
7807
+ # A Duration represents a fixed-length span of time represented as a count of
7808
+ # seconds and fractions of seconds at nanosecond resolution. It is independent
7809
+ # of any calendar and concepts like "day" or "month". Range is approximately 10,
7810
+ # 000 years.
7811
+ # Corresponds to the JSON property `fixedDelay`
7812
+ # @return [Google::Apis::ComputeV1::Duration]
7813
+ attr_accessor :fixed_delay
7814
+
7815
+ # The percentage of traffic (connections/operations/requests) on which delay
7816
+ # will be introduced as part of fault injection.
7817
+ # The value must be between 0.0 and 100.0 inclusive.
7818
+ # Corresponds to the JSON property `percentage`
7819
+ # @return [Float]
7820
+ attr_accessor :percentage
7821
+
7822
+ def initialize(**args)
7823
+ update!(**args)
7824
+ end
7825
+
7826
+ # Update properties of this object
7827
+ def update!(**args)
7828
+ @fixed_delay = args[:fixed_delay] if args.key?(:fixed_delay)
7829
+ @percentage = args[:percentage] if args.key?(:percentage)
7830
+ end
7831
+ end
7832
+
7833
+ # The specification for fault injection introduced into traffic to test the
7834
+ # resiliency of clients to backend service failure. As part of fault injection,
7835
+ # when clients send requests to a backend service, delays can be introduced by
7836
+ # Loadbalancer on a percentage of requests before sending those request to the
7837
+ # backend service. Similarly requests from clients can be aborted by the
7838
+ # Loadbalancer for a percentage of requests.
7839
+ class HttpFaultInjection
7840
+ include Google::Apis::Core::Hashable
7841
+
7842
+ # Specification for how requests are aborted as part of fault injection.
7843
+ # Corresponds to the JSON property `abort`
7844
+ # @return [Google::Apis::ComputeV1::HttpFaultAbort]
7845
+ attr_accessor :abort
7846
+
7847
+ # Specifies the delay introduced by Loadbalancer before forwarding the request
7848
+ # to the backend service as part of fault injection.
7849
+ # Corresponds to the JSON property `delay`
7850
+ # @return [Google::Apis::ComputeV1::HttpFaultDelay]
7851
+ attr_accessor :delay
7852
+
7853
+ def initialize(**args)
7854
+ update!(**args)
7855
+ end
7856
+
7857
+ # Update properties of this object
7858
+ def update!(**args)
7859
+ @abort = args[:abort] if args.key?(:abort)
7860
+ @delay = args[:delay] if args.key?(:delay)
7861
+ end
7862
+ end
7863
+
7864
+ # The request and response header transformations that take effect before the
7865
+ # request is passed along to the selected backendService.
7866
+ class HttpHeaderAction
7867
+ include Google::Apis::Core::Hashable
7868
+
7869
+ # Headers to add to a matching request prior to forwarding the request to the
7870
+ # backendService.
7871
+ # Corresponds to the JSON property `requestHeadersToAdd`
7872
+ # @return [Array<Google::Apis::ComputeV1::HttpHeaderOption>]
7873
+ attr_accessor :request_headers_to_add
7874
+
7875
+ # A list of header names for headers that need to be removed from the request
7876
+ # prior to forwarding the request to the backendService.
7877
+ # Corresponds to the JSON property `requestHeadersToRemove`
7878
+ # @return [Array<String>]
7879
+ attr_accessor :request_headers_to_remove
7880
+
7881
+ # Headers to add the response prior to sending the response back to the client.
7882
+ # Corresponds to the JSON property `responseHeadersToAdd`
7883
+ # @return [Array<Google::Apis::ComputeV1::HttpHeaderOption>]
7884
+ attr_accessor :response_headers_to_add
7885
+
7886
+ # A list of header names for headers that need to be removed from the response
7887
+ # prior to sending the response back to the client.
7888
+ # Corresponds to the JSON property `responseHeadersToRemove`
7889
+ # @return [Array<String>]
7890
+ attr_accessor :response_headers_to_remove
7891
+
7892
+ def initialize(**args)
7893
+ update!(**args)
7894
+ end
7895
+
7896
+ # Update properties of this object
7897
+ def update!(**args)
7898
+ @request_headers_to_add = args[:request_headers_to_add] if args.key?(:request_headers_to_add)
7899
+ @request_headers_to_remove = args[:request_headers_to_remove] if args.key?(:request_headers_to_remove)
7900
+ @response_headers_to_add = args[:response_headers_to_add] if args.key?(:response_headers_to_add)
7901
+ @response_headers_to_remove = args[:response_headers_to_remove] if args.key?(:response_headers_to_remove)
7902
+ end
7903
+ end
7904
+
7905
+ # matchRule criteria for request header matches.
7906
+ class HttpHeaderMatch
7907
+ include Google::Apis::Core::Hashable
7908
+
7909
+ # The value should exactly match contents of exactMatch.
7910
+ # Only one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or
7911
+ # rangeMatch must be set.
7912
+ # Corresponds to the JSON property `exactMatch`
7913
+ # @return [String]
7914
+ attr_accessor :exact_match
7915
+
7916
+ # The name of the HTTP header to match.
7917
+ # For matching against the HTTP request's authority, use a headerMatch with the
7918
+ # header name ":authority".
7919
+ # For matching a request's method, use the headerName ":method".
7920
+ # Corresponds to the JSON property `headerName`
7921
+ # @return [String]
7922
+ attr_accessor :header_name
7923
+
7924
+ # If set to false, the headerMatch is considered a match if the match criteria
7925
+ # above are met. If set to true, the headerMatch is considered a match if the
7926
+ # match criteria above are NOT met.
7927
+ # The default setting is false.
7928
+ # Corresponds to the JSON property `invertMatch`
7929
+ # @return [Boolean]
7930
+ attr_accessor :invert_match
7931
+ alias_method :invert_match?, :invert_match
7932
+
7933
+ # The value of the header must start with the contents of prefixMatch.
7934
+ # Only one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or
7935
+ # rangeMatch must be set.
7936
+ # Corresponds to the JSON property `prefixMatch`
7937
+ # @return [String]
7938
+ attr_accessor :prefix_match
7939
+
7940
+ # A header with the contents of headerName must exist. The match takes place
7941
+ # whether or not the request's header has a value or not.
7942
+ # Only one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or
7943
+ # rangeMatch must be set.
7944
+ # Corresponds to the JSON property `presentMatch`
7945
+ # @return [Boolean]
7946
+ attr_accessor :present_match
7947
+ alias_method :present_match?, :present_match
7948
+
7949
+ # HttpRouteRuleMatch criteria for field values that must stay within the
7950
+ # specified integer range.
7951
+ # Corresponds to the JSON property `rangeMatch`
7952
+ # @return [Google::Apis::ComputeV1::Int64RangeMatch]
7953
+ attr_accessor :range_match
7954
+
7955
+ # The value of the header must match the regualar expression specified in
7956
+ # regexMatch. For regular expression grammar, please see: en.cppreference.com/w/
7957
+ # cpp/regex/ecmascript
7958
+ # For matching against a port specified in the HTTP request, use a headerMatch
7959
+ # with headerName set to PORT and a regular expression that satisfies the
7960
+ # RFC2616 Host header's port specifier.
7961
+ # Only one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or
7962
+ # rangeMatch must be set.
7963
+ # Corresponds to the JSON property `regexMatch`
7964
+ # @return [String]
7965
+ attr_accessor :regex_match
7966
+
7967
+ # The value of the header must end with the contents of suffixMatch.
7968
+ # Only one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or
7969
+ # rangeMatch must be set.
7970
+ # Corresponds to the JSON property `suffixMatch`
7971
+ # @return [String]
7972
+ attr_accessor :suffix_match
7973
+
7974
+ def initialize(**args)
7975
+ update!(**args)
7976
+ end
7977
+
7978
+ # Update properties of this object
7979
+ def update!(**args)
7980
+ @exact_match = args[:exact_match] if args.key?(:exact_match)
7981
+ @header_name = args[:header_name] if args.key?(:header_name)
7982
+ @invert_match = args[:invert_match] if args.key?(:invert_match)
7983
+ @prefix_match = args[:prefix_match] if args.key?(:prefix_match)
7984
+ @present_match = args[:present_match] if args.key?(:present_match)
7985
+ @range_match = args[:range_match] if args.key?(:range_match)
7986
+ @regex_match = args[:regex_match] if args.key?(:regex_match)
7987
+ @suffix_match = args[:suffix_match] if args.key?(:suffix_match)
7988
+ end
7989
+ end
7990
+
7991
+ # Specification determining how headers are added to requests or responses.
7992
+ class HttpHeaderOption
7993
+ include Google::Apis::Core::Hashable
7994
+
7995
+ # The name of the header.
7996
+ # Corresponds to the JSON property `headerName`
7997
+ # @return [String]
7998
+ attr_accessor :header_name
7999
+
8000
+ # The value of the header to add.
8001
+ # Corresponds to the JSON property `headerValue`
8002
+ # @return [String]
8003
+ attr_accessor :header_value
8004
+
8005
+ # If false, headerValue is appended to any values that already exist for the
8006
+ # header. If true, headerValue is set for the header, discarding any values that
8007
+ # were set for that header.
8008
+ # The default value is false.
8009
+ # Corresponds to the JSON property `replace`
8010
+ # @return [Boolean]
8011
+ attr_accessor :replace
8012
+ alias_method :replace?, :replace
8013
+
8014
+ def initialize(**args)
8015
+ update!(**args)
8016
+ end
8017
+
8018
+ # Update properties of this object
8019
+ def update!(**args)
8020
+ @header_name = args[:header_name] if args.key?(:header_name)
8021
+ @header_value = args[:header_value] if args.key?(:header_value)
8022
+ @replace = args[:replace] if args.key?(:replace)
8023
+ end
8024
+ end
8025
+
7486
8026
  # Represents a legacy HTTP Health Check resource.
7487
8027
  # Legacy health checks are required by network load balancers. For more
7488
8028
  # information, read Health Check Concepts.
@@ -7708,6 +8248,400 @@ module Google
7708
8248
  end
7709
8249
  end
7710
8250
 
8251
+ # HttpRouteRuleMatch criteria for a request's query parameter.
8252
+ class HttpQueryParameterMatch
8253
+ include Google::Apis::Core::Hashable
8254
+
8255
+ # The queryParameterMatch matches if the value of the parameter exactly matches
8256
+ # the contents of exactMatch.
8257
+ # Only one of presentMatch, exactMatch and regexMatch must be set.
8258
+ # Corresponds to the JSON property `exactMatch`
8259
+ # @return [String]
8260
+ attr_accessor :exact_match
8261
+
8262
+ # The name of the query parameter to match. The query parameter must exist in
8263
+ # the request, in the absence of which the request match fails.
8264
+ # Corresponds to the JSON property `name`
8265
+ # @return [String]
8266
+ attr_accessor :name
8267
+
8268
+ # Specifies that the queryParameterMatch matches if the request contains the
8269
+ # query parameter, irrespective of whether the parameter has a value or not.
8270
+ # Only one of presentMatch, exactMatch and regexMatch must be set.
8271
+ # Corresponds to the JSON property `presentMatch`
8272
+ # @return [Boolean]
8273
+ attr_accessor :present_match
8274
+ alias_method :present_match?, :present_match
8275
+
8276
+ # The queryParameterMatch matches if the value of the parameter matches the
8277
+ # regular expression specified by regexMatch. For the regular expression grammar,
8278
+ # please see en.cppreference.com/w/cpp/regex/ecmascript
8279
+ # Only one of presentMatch, exactMatch and regexMatch must be set.
8280
+ # Corresponds to the JSON property `regexMatch`
8281
+ # @return [String]
8282
+ attr_accessor :regex_match
8283
+
8284
+ def initialize(**args)
8285
+ update!(**args)
8286
+ end
8287
+
8288
+ # Update properties of this object
8289
+ def update!(**args)
8290
+ @exact_match = args[:exact_match] if args.key?(:exact_match)
8291
+ @name = args[:name] if args.key?(:name)
8292
+ @present_match = args[:present_match] if args.key?(:present_match)
8293
+ @regex_match = args[:regex_match] if args.key?(:regex_match)
8294
+ end
8295
+ end
8296
+
8297
+ # Specifies settings for an HTTP redirect.
8298
+ class HttpRedirectAction
8299
+ include Google::Apis::Core::Hashable
8300
+
8301
+ # The host that will be used in the redirect response instead of the one that
8302
+ # was supplied in the request.
8303
+ # The value must be between 1 and 255 characters.
8304
+ # Corresponds to the JSON property `hostRedirect`
8305
+ # @return [String]
8306
+ attr_accessor :host_redirect
8307
+
8308
+ # If set to true, the URL scheme in the redirected request is set to https. If
8309
+ # set to false, the URL scheme of the redirected request will remain the same as
8310
+ # that of the request.
8311
+ # This must only be set for UrlMaps used in TargetHttpProxys. Setting this true
8312
+ # for TargetHttpsProxy is not permitted.
8313
+ # The default is set to false.
8314
+ # Corresponds to the JSON property `httpsRedirect`
8315
+ # @return [Boolean]
8316
+ attr_accessor :https_redirect
8317
+ alias_method :https_redirect?, :https_redirect
8318
+
8319
+ # The path that will be used in the redirect response instead of the one that
8320
+ # was supplied in the request.
8321
+ # Only one of pathRedirect or prefixRedirect must be specified.
8322
+ # The value must be between 1 and 1024 characters.
8323
+ # Corresponds to the JSON property `pathRedirect`
8324
+ # @return [String]
8325
+ attr_accessor :path_redirect
8326
+
8327
+ # The prefix that replaces the prefixMatch specified in the HttpRouteRuleMatch,
8328
+ # retaining the remaining portion of the URL before redirecting the request.
8329
+ # Corresponds to the JSON property `prefixRedirect`
8330
+ # @return [String]
8331
+ attr_accessor :prefix_redirect
8332
+
8333
+ # The HTTP Status code to use for this RedirectAction.
8334
+ # Supported values are:
8335
+ # - MOVED_PERMANENTLY_DEFAULT, which is the default value and corresponds to 301.
8336
+ #
8337
+ # - FOUND, which corresponds to 302.
8338
+ # - SEE_OTHER which corresponds to 303.
8339
+ # - TEMPORARY_REDIRECT, which corresponds to 307. In this case, the request
8340
+ # method will be retained.
8341
+ # - PERMANENT_REDIRECT, which corresponds to 308. In this case, the request
8342
+ # method will be retained.
8343
+ # Corresponds to the JSON property `redirectResponseCode`
8344
+ # @return [String]
8345
+ attr_accessor :redirect_response_code
8346
+
8347
+ # If set to true, any accompanying query portion of the original URL is removed
8348
+ # prior to redirecting the request. If set to false, the query portion of the
8349
+ # original URL is retained.
8350
+ # The default is set to false.
8351
+ # Corresponds to the JSON property `stripQuery`
8352
+ # @return [Boolean]
8353
+ attr_accessor :strip_query
8354
+ alias_method :strip_query?, :strip_query
8355
+
8356
+ def initialize(**args)
8357
+ update!(**args)
8358
+ end
8359
+
8360
+ # Update properties of this object
8361
+ def update!(**args)
8362
+ @host_redirect = args[:host_redirect] if args.key?(:host_redirect)
8363
+ @https_redirect = args[:https_redirect] if args.key?(:https_redirect)
8364
+ @path_redirect = args[:path_redirect] if args.key?(:path_redirect)
8365
+ @prefix_redirect = args[:prefix_redirect] if args.key?(:prefix_redirect)
8366
+ @redirect_response_code = args[:redirect_response_code] if args.key?(:redirect_response_code)
8367
+ @strip_query = args[:strip_query] if args.key?(:strip_query)
8368
+ end
8369
+ end
8370
+
8371
+ # The retry policy associates with HttpRouteRule
8372
+ class HttpRetryPolicy
8373
+ include Google::Apis::Core::Hashable
8374
+
8375
+ # Specifies the allowed number retries. This number must be > 0.
8376
+ # Corresponds to the JSON property `numRetries`
8377
+ # @return [Fixnum]
8378
+ attr_accessor :num_retries
8379
+
8380
+ # A Duration represents a fixed-length span of time represented as a count of
8381
+ # seconds and fractions of seconds at nanosecond resolution. It is independent
8382
+ # of any calendar and concepts like "day" or "month". Range is approximately 10,
8383
+ # 000 years.
8384
+ # Corresponds to the JSON property `perTryTimeout`
8385
+ # @return [Google::Apis::ComputeV1::Duration]
8386
+ attr_accessor :per_try_timeout
8387
+
8388
+ # Specfies one or more conditions when this retry rule applies. Valid values are:
8389
+ #
8390
+ # - 5xx: Loadbalancer will attempt a retry if the backend service responds with
8391
+ # any 5xx response code, or if the backend service does not respond at all,
8392
+ # example: disconnects, reset, read timeout, connection failure, and refused
8393
+ # streams.
8394
+ # - gateway-error: Similar to 5xx, but only applies to response codes 502, 503
8395
+ # or 504.
8396
+ # -
8397
+ # - connect-failure: Loadbalancer will retry on failures connecting to backend
8398
+ # services, for example due to connection timeouts.
8399
+ # - retriable-4xx: Loadbalancer will retry for retriable 4xx response codes.
8400
+ # Currently the only retriable error supported is 409.
8401
+ # - refused-stream:Loadbalancer will retry if the backend service resets the
8402
+ # stream with a REFUSED_STREAM error code. This reset type indicates that it is
8403
+ # safe to retry.
8404
+ # - cancelledLoadbalancer will retry if the gRPC status code in the response
8405
+ # header is set to cancelled
8406
+ # - deadline-exceeded: Loadbalancer will retry if the gRPC status code in the
8407
+ # response header is set to deadline-exceeded
8408
+ # - resource-exhausted: Loadbalancer will retry if the gRPC status code in the
8409
+ # response header is set to resource-exhausted
8410
+ # - unavailable: Loadbalancer will retry if the gRPC status code in the response
8411
+ # header is set to unavailable
8412
+ # Corresponds to the JSON property `retryConditions`
8413
+ # @return [Array<String>]
8414
+ attr_accessor :retry_conditions
8415
+
8416
+ def initialize(**args)
8417
+ update!(**args)
8418
+ end
8419
+
8420
+ # Update properties of this object
8421
+ def update!(**args)
8422
+ @num_retries = args[:num_retries] if args.key?(:num_retries)
8423
+ @per_try_timeout = args[:per_try_timeout] if args.key?(:per_try_timeout)
8424
+ @retry_conditions = args[:retry_conditions] if args.key?(:retry_conditions)
8425
+ end
8426
+ end
8427
+
8428
+ #
8429
+ class HttpRouteAction
8430
+ include Google::Apis::Core::Hashable
8431
+
8432
+ # The specification for allowing client side cross-origin requests. Please see
8433
+ # W3C Recommendation for Cross Origin Resource Sharing
8434
+ # Corresponds to the JSON property `corsPolicy`
8435
+ # @return [Google::Apis::ComputeV1::CorsPolicy]
8436
+ attr_accessor :cors_policy
8437
+
8438
+ # The specification for fault injection introduced into traffic to test the
8439
+ # resiliency of clients to backend service failure. As part of fault injection,
8440
+ # when clients send requests to a backend service, delays can be introduced by
8441
+ # Loadbalancer on a percentage of requests before sending those request to the
8442
+ # backend service. Similarly requests from clients can be aborted by the
8443
+ # Loadbalancer for a percentage of requests.
8444
+ # Corresponds to the JSON property `faultInjectionPolicy`
8445
+ # @return [Google::Apis::ComputeV1::HttpFaultInjection]
8446
+ attr_accessor :fault_injection_policy
8447
+
8448
+ # A policy that specifies how requests intended for the route's backends are
8449
+ # shadowed to a separate mirrored backend service. Loadbalancer does not wait
8450
+ # for responses from the shadow service. Prior to sending traffic to the shadow
8451
+ # service, the host / authority header is suffixed with -shadow.
8452
+ # Corresponds to the JSON property `requestMirrorPolicy`
8453
+ # @return [Google::Apis::ComputeV1::RequestMirrorPolicy]
8454
+ attr_accessor :request_mirror_policy
8455
+
8456
+ # The retry policy associates with HttpRouteRule
8457
+ # Corresponds to the JSON property `retryPolicy`
8458
+ # @return [Google::Apis::ComputeV1::HttpRetryPolicy]
8459
+ attr_accessor :retry_policy
8460
+
8461
+ # A Duration represents a fixed-length span of time represented as a count of
8462
+ # seconds and fractions of seconds at nanosecond resolution. It is independent
8463
+ # of any calendar and concepts like "day" or "month". Range is approximately 10,
8464
+ # 000 years.
8465
+ # Corresponds to the JSON property `timeout`
8466
+ # @return [Google::Apis::ComputeV1::Duration]
8467
+ attr_accessor :timeout
8468
+
8469
+ # The spec for modifying the path before sending the request to the matched
8470
+ # backend service.
8471
+ # Corresponds to the JSON property `urlRewrite`
8472
+ # @return [Google::Apis::ComputeV1::UrlRewrite]
8473
+ attr_accessor :url_rewrite
8474
+
8475
+ # A list of weighted backend services to send traffic to when a route match
8476
+ # occurs. The weights determine the fraction of traffic that flows to their
8477
+ # corresponding backend service. If all traffic needs to go to a single backend
8478
+ # service, there must be one weightedBackendService with weight set to a non 0
8479
+ # number.
8480
+ # Once a backendService is identified and before forwarding the request to the
8481
+ # backend service, advanced routing actions like Url rewrites and header
8482
+ # transformations are applied depending on additional settings specified in this
8483
+ # HttpRouteAction.
8484
+ # Corresponds to the JSON property `weightedBackendServices`
8485
+ # @return [Array<Google::Apis::ComputeV1::WeightedBackendService>]
8486
+ attr_accessor :weighted_backend_services
8487
+
8488
+ def initialize(**args)
8489
+ update!(**args)
8490
+ end
8491
+
8492
+ # Update properties of this object
8493
+ def update!(**args)
8494
+ @cors_policy = args[:cors_policy] if args.key?(:cors_policy)
8495
+ @fault_injection_policy = args[:fault_injection_policy] if args.key?(:fault_injection_policy)
8496
+ @request_mirror_policy = args[:request_mirror_policy] if args.key?(:request_mirror_policy)
8497
+ @retry_policy = args[:retry_policy] if args.key?(:retry_policy)
8498
+ @timeout = args[:timeout] if args.key?(:timeout)
8499
+ @url_rewrite = args[:url_rewrite] if args.key?(:url_rewrite)
8500
+ @weighted_backend_services = args[:weighted_backend_services] if args.key?(:weighted_backend_services)
8501
+ end
8502
+ end
8503
+
8504
+ # An HttpRouteRule specifies how to match an HTTP request and the corresponding
8505
+ # routing action that load balancing proxies will perform.
8506
+ class HttpRouteRule
8507
+ include Google::Apis::Core::Hashable
8508
+
8509
+ # The request and response header transformations that take effect before the
8510
+ # request is passed along to the selected backendService.
8511
+ # Corresponds to the JSON property `headerAction`
8512
+ # @return [Google::Apis::ComputeV1::HttpHeaderAction]
8513
+ attr_accessor :header_action
8514
+
8515
+ #
8516
+ # Corresponds to the JSON property `matchRules`
8517
+ # @return [Array<Google::Apis::ComputeV1::HttpRouteRuleMatch>]
8518
+ attr_accessor :match_rules
8519
+
8520
+ # In response to a matching matchRule, the load balancer performs advanced
8521
+ # routing actions like URL rewrites, header transformations, etc. prior to
8522
+ # forwarding the request to the selected backend. If routeAction specifies any
8523
+ # weightedBackendServices, service must not be set. Conversely if service is set,
8524
+ # routeAction cannot contain any weightedBackendServices.
8525
+ # Only one of routeAction or urlRedirect must be set.
8526
+ # Corresponds to the JSON property `routeAction`
8527
+ # @return [Google::Apis::ComputeV1::HttpRouteAction]
8528
+ attr_accessor :route_action
8529
+
8530
+ # The full or partial URL of the backend service resource to which traffic is
8531
+ # directed if this rule is matched. If routeAction is additionally specified,
8532
+ # advanced routing actions like URL Rewrites, etc. take effect prior to sending
8533
+ # the request to the backend. However, if service is specified, routeAction
8534
+ # cannot contain any weightedBackendService s. Conversely, if routeAction
8535
+ # specifies any weightedBackendServices, service must not be specified.
8536
+ # Only one of urlRedirect, service or routeAction.weightedBackendService must be
8537
+ # set.
8538
+ # Corresponds to the JSON property `service`
8539
+ # @return [String]
8540
+ attr_accessor :service
8541
+
8542
+ # Specifies settings for an HTTP redirect.
8543
+ # Corresponds to the JSON property `urlRedirect`
8544
+ # @return [Google::Apis::ComputeV1::HttpRedirectAction]
8545
+ attr_accessor :url_redirect
8546
+
8547
+ def initialize(**args)
8548
+ update!(**args)
8549
+ end
8550
+
8551
+ # Update properties of this object
8552
+ def update!(**args)
8553
+ @header_action = args[:header_action] if args.key?(:header_action)
8554
+ @match_rules = args[:match_rules] if args.key?(:match_rules)
8555
+ @route_action = args[:route_action] if args.key?(:route_action)
8556
+ @service = args[:service] if args.key?(:service)
8557
+ @url_redirect = args[:url_redirect] if args.key?(:url_redirect)
8558
+ end
8559
+ end
8560
+
8561
+ # HttpRouteRuleMatch specifies a set of criteria for matching requests to an
8562
+ # HttpRouteRule. All specified criteria must be satisfied for a match to occur.
8563
+ class HttpRouteRuleMatch
8564
+ include Google::Apis::Core::Hashable
8565
+
8566
+ # For satifying the matchRule condition, the path of the request must exactly
8567
+ # match the value specified in fullPathMatch after removing any query parameters
8568
+ # and anchor that may be part of the original URL.
8569
+ # FullPathMatch must be between 1 and 1024 characters.
8570
+ # Only one of prefixMatch, fullPathMatch or regexMatch must be specified.
8571
+ # Corresponds to the JSON property `fullPathMatch`
8572
+ # @return [String]
8573
+ attr_accessor :full_path_match
8574
+
8575
+ # Specifies a list of header match criteria, all of which must match
8576
+ # corresponding headers in the request.
8577
+ # Corresponds to the JSON property `headerMatches`
8578
+ # @return [Array<Google::Apis::ComputeV1::HttpHeaderMatch>]
8579
+ attr_accessor :header_matches
8580
+
8581
+ # Specifies that prefixMatch and fullPathMatch matches are case sensitive.
8582
+ # The default value is false.
8583
+ # caseSensitive must not be used with regexMatch.
8584
+ # Corresponds to the JSON property `ignoreCase`
8585
+ # @return [Boolean]
8586
+ attr_accessor :ignore_case
8587
+ alias_method :ignore_case?, :ignore_case
8588
+
8589
+ # Opaque filter criteria used by Loadbalancer to restrict routing configuration
8590
+ # to a limited set xDS compliant clients. In their xDS requests to Loadbalancer,
8591
+ # xDS clients present node metadata. If a match takes place, the relevant
8592
+ # routing configuration is made available to those proxies.
8593
+ # For each metadataFilter in this list, if its filterMatchCriteria is set to
8594
+ # MATCH_ANY, at least one of the filterLabels must match the corresponding label
8595
+ # provided in the metadata. If its filterMatchCriteria is set to MATCH_ALL, then
8596
+ # all of its filterLabels must match with corresponding labels in the provided
8597
+ # metadata.
8598
+ # metadataFilters specified here can be overrides those specified in
8599
+ # ForwardingRule that refers to this UrlMap.
8600
+ # metadataFilters only applies to Loadbalancers that have their
8601
+ # loadBalancingScheme set to INTERNAL_SELF_MANAGED.
8602
+ # Corresponds to the JSON property `metadataFilters`
8603
+ # @return [Array<Google::Apis::ComputeV1::MetadataFilter>]
8604
+ attr_accessor :metadata_filters
8605
+
8606
+ # For satifying the matchRule condition, the request's path must begin with the
8607
+ # specified prefixMatch. prefixMatch must begin with a /.
8608
+ # The value must be between 1 and 1024 characters.
8609
+ # Only one of prefixMatch, fullPathMatch or regexMatch must be specified.
8610
+ # Corresponds to the JSON property `prefixMatch`
8611
+ # @return [String]
8612
+ attr_accessor :prefix_match
8613
+
8614
+ # Specifies a list of query parameter match criteria, all of which must match
8615
+ # corresponding query parameters in the request.
8616
+ # Corresponds to the JSON property `queryParameterMatches`
8617
+ # @return [Array<Google::Apis::ComputeV1::HttpQueryParameterMatch>]
8618
+ attr_accessor :query_parameter_matches
8619
+
8620
+ # For satifying the matchRule condition, the path of the request must satisfy
8621
+ # the regular expression specified in regexMatch after removing any query
8622
+ # parameters and anchor supplied with the original URL. For regular expression
8623
+ # grammar please see en.cppreference.com/w/cpp/regex/ecmascript
8624
+ # Only one of prefixMatch, fullPathMatch or regexMatch must be specified.
8625
+ # Corresponds to the JSON property `regexMatch`
8626
+ # @return [String]
8627
+ attr_accessor :regex_match
8628
+
8629
+ def initialize(**args)
8630
+ update!(**args)
8631
+ end
8632
+
8633
+ # Update properties of this object
8634
+ def update!(**args)
8635
+ @full_path_match = args[:full_path_match] if args.key?(:full_path_match)
8636
+ @header_matches = args[:header_matches] if args.key?(:header_matches)
8637
+ @ignore_case = args[:ignore_case] if args.key?(:ignore_case)
8638
+ @metadata_filters = args[:metadata_filters] if args.key?(:metadata_filters)
8639
+ @prefix_match = args[:prefix_match] if args.key?(:prefix_match)
8640
+ @query_parameter_matches = args[:query_parameter_matches] if args.key?(:query_parameter_matches)
8641
+ @regex_match = args[:regex_match] if args.key?(:regex_match)
8642
+ end
8643
+ end
8644
+
7711
8645
  # Represents a legacy HTTPS Health Check resource.
7712
8646
  # Legacy health checks are required by network load balancers. For more
7713
8647
  # information, read Health Check Concepts.
@@ -11048,6 +11982,32 @@ module Google
11048
11982
  end
11049
11983
  end
11050
11984
 
11985
+ # HttpRouteRuleMatch criteria for field values that must stay within the
11986
+ # specified integer range.
11987
+ class Int64RangeMatch
11988
+ include Google::Apis::Core::Hashable
11989
+
11990
+ # The end of the range (exclusive) in signed long integer format.
11991
+ # Corresponds to the JSON property `rangeEnd`
11992
+ # @return [Fixnum]
11993
+ attr_accessor :range_end
11994
+
11995
+ # The start of the range (inclusive) in signed long integer format.
11996
+ # Corresponds to the JSON property `rangeStart`
11997
+ # @return [Fixnum]
11998
+ attr_accessor :range_start
11999
+
12000
+ def initialize(**args)
12001
+ update!(**args)
12002
+ end
12003
+
12004
+ # Update properties of this object
12005
+ def update!(**args)
12006
+ @range_end = args[:range_end] if args.key?(:range_end)
12007
+ @range_start = args[:range_start] if args.key?(:range_start)
12008
+ end
12009
+ end
12010
+
11051
12011
  # Represents an Interconnect resource.
11052
12012
  # An Interconnect resource is a dedicated connection between the GCP network and
11053
12013
  # your on-premises network. For more information, read the Dedicated
@@ -13728,6 +14688,82 @@ module Google
13728
14688
  end
13729
14689
  end
13730
14690
 
14691
+ # Opaque filter criteria used by loadbalancers to restrict routing configuration
14692
+ # to a limited set of loadbalancing proxies. Proxies and sidecars involved in
14693
+ # loadbalancing would typically present metadata to the loadbalancers which need
14694
+ # to match criteria specified here. If a match takes place, the relevant routing
14695
+ # configuration is made available to those proxies.
14696
+ # For each metadataFilter in this list, if its filterMatchCriteria is set to
14697
+ # MATCH_ANY, at least one of the filterLabels must match the corresponding label
14698
+ # provided in the metadata. If its filterMatchCriteria is set to MATCH_ALL, then
14699
+ # all of its filterLabels must match with corresponding labels in the provided
14700
+ # metadata.
14701
+ # An example for using metadataFilters would be: if loadbalancing involves
14702
+ # Envoys, they will only receive routing configuration when values in
14703
+ # metadataFilters match values supplied in <a href="https://www.envoyproxy.io/
14704
+ # docs/envoy/latest/api-v2/api/v2/core/base.proto#envoy-api-msg-core-node" Node
14705
+ # metadata of their XDS requests to loadbalancers.
14706
+ class MetadataFilter
14707
+ include Google::Apis::Core::Hashable
14708
+
14709
+ # The list of label value pairs that must match labels in the provided metadata
14710
+ # based on filterMatchCriteria
14711
+ # This list must not be empty and can have at the most 64 entries.
14712
+ # Corresponds to the JSON property `filterLabels`
14713
+ # @return [Array<Google::Apis::ComputeV1::MetadataFilterLabelMatch>]
14714
+ attr_accessor :filter_labels
14715
+
14716
+ # Specifies how individual filterLabel matches within the list of filterLabels
14717
+ # contribute towards the overall metadataFilter match.
14718
+ # Supported values are:
14719
+ # - MATCH_ANY: At least one of the filterLabels must have a matching label in
14720
+ # the provided metadata.
14721
+ # - MATCH_ALL: All filterLabels must have matching labels in the provided
14722
+ # metadata.
14723
+ # Corresponds to the JSON property `filterMatchCriteria`
14724
+ # @return [String]
14725
+ attr_accessor :filter_match_criteria
14726
+
14727
+ def initialize(**args)
14728
+ update!(**args)
14729
+ end
14730
+
14731
+ # Update properties of this object
14732
+ def update!(**args)
14733
+ @filter_labels = args[:filter_labels] if args.key?(:filter_labels)
14734
+ @filter_match_criteria = args[:filter_match_criteria] if args.key?(:filter_match_criteria)
14735
+ end
14736
+ end
14737
+
14738
+ # MetadataFilter label name value pairs that are expected to match corresponding
14739
+ # labels presented as metadata to the loadbalancer.
14740
+ class MetadataFilterLabelMatch
14741
+ include Google::Apis::Core::Hashable
14742
+
14743
+ # Name of metadata label.
14744
+ # The name can have a maximum length of 1024 characters and must be at least 1
14745
+ # character long.
14746
+ # Corresponds to the JSON property `name`
14747
+ # @return [String]
14748
+ attr_accessor :name
14749
+
14750
+ # The value of the label must match the specified value.
14751
+ # value can have a maximum length of 1024 characters.
14752
+ # Corresponds to the JSON property `value`
14753
+ # @return [String]
14754
+ attr_accessor :value
14755
+
14756
+ def initialize(**args)
14757
+ update!(**args)
14758
+ end
14759
+
14760
+ # Update properties of this object
14761
+ def update!(**args)
14762
+ @name = args[:name] if args.key?(:name)
14763
+ @value = args[:value] if args.key?(:value)
14764
+ end
14765
+ end
14766
+
13731
14767
  # The named port. For example: .
13732
14768
  class NamedPort
13733
14769
  include Google::Apis::Core::Hashable
@@ -17079,12 +18115,131 @@ module Google
17079
18115
  end
17080
18116
  end
17081
18117
 
18118
+ # Settings controlling eviction of unhealthy hosts from the load balancing pool.
18119
+ class OutlierDetection
18120
+ include Google::Apis::Core::Hashable
18121
+
18122
+ # A Duration represents a fixed-length span of time represented as a count of
18123
+ # seconds and fractions of seconds at nanosecond resolution. It is independent
18124
+ # of any calendar and concepts like "day" or "month". Range is approximately 10,
18125
+ # 000 years.
18126
+ # Corresponds to the JSON property `baseEjectionTime`
18127
+ # @return [Google::Apis::ComputeV1::Duration]
18128
+ attr_accessor :base_ejection_time
18129
+
18130
+ # Number of errors before a host is ejected from the connection pool. When the
18131
+ # backend host is accessed over HTTP, a 5xx return code qualifies as an error.
18132
+ # Defaults to 5.
18133
+ # Corresponds to the JSON property `consecutiveErrors`
18134
+ # @return [Fixnum]
18135
+ attr_accessor :consecutive_errors
18136
+
18137
+ # The number of consecutive gateway failures (502, 503, 504 status or connection
18138
+ # errors that are mapped to one of those status codes) before a consecutive
18139
+ # gateway failure ejection occurs. Defaults to 5.
18140
+ # Corresponds to the JSON property `consecutiveGatewayFailure`
18141
+ # @return [Fixnum]
18142
+ attr_accessor :consecutive_gateway_failure
18143
+
18144
+ # The percentage chance that a host will be actually ejected when an outlier
18145
+ # status is detected through consecutive 5xx. This setting can be used to
18146
+ # disable ejection or to ramp it up slowly. Defaults to 100.
18147
+ # Corresponds to the JSON property `enforcingConsecutiveErrors`
18148
+ # @return [Fixnum]
18149
+ attr_accessor :enforcing_consecutive_errors
18150
+
18151
+ # The percentage chance that a host will be actually ejected when an outlier
18152
+ # status is detected through consecutive gateway failures. This setting can be
18153
+ # used to disable ejection or to ramp it up slowly. Defaults to 0.
18154
+ # Corresponds to the JSON property `enforcingConsecutiveGatewayFailure`
18155
+ # @return [Fixnum]
18156
+ attr_accessor :enforcing_consecutive_gateway_failure
18157
+
18158
+ # The percentage chance that a host will be actually ejected when an outlier
18159
+ # status is detected through success rate statistics. This setting can be used
18160
+ # to disable ejection or to ramp it up slowly. Defaults to 100.
18161
+ # Corresponds to the JSON property `enforcingSuccessRate`
18162
+ # @return [Fixnum]
18163
+ attr_accessor :enforcing_success_rate
18164
+
18165
+ # A Duration represents a fixed-length span of time represented as a count of
18166
+ # seconds and fractions of seconds at nanosecond resolution. It is independent
18167
+ # of any calendar and concepts like "day" or "month". Range is approximately 10,
18168
+ # 000 years.
18169
+ # Corresponds to the JSON property `interval`
18170
+ # @return [Google::Apis::ComputeV1::Duration]
18171
+ attr_accessor :interval
18172
+
18173
+ # Maximum percentage of hosts in the load balancing pool for the backend service
18174
+ # that can be ejected. Defaults to 10%.
18175
+ # Corresponds to the JSON property `maxEjectionPercent`
18176
+ # @return [Fixnum]
18177
+ attr_accessor :max_ejection_percent
18178
+
18179
+ # The number of hosts in a cluster that must have enough request volume to
18180
+ # detect success rate outliers. If the number of hosts is less than this setting,
18181
+ # outlier detection via success rate statistics is not performed for any host
18182
+ # in the cluster. Defaults to 5.
18183
+ # Corresponds to the JSON property `successRateMinimumHosts`
18184
+ # @return [Fixnum]
18185
+ attr_accessor :success_rate_minimum_hosts
18186
+
18187
+ # The minimum number of total requests that must be collected in one interval (
18188
+ # as defined by the interval duration above) to include this host in success
18189
+ # rate based outlier detection. If the volume is lower than this setting,
18190
+ # outlier detection via success rate statistics is not performed for that host.
18191
+ # Defaults to 100.
18192
+ # Corresponds to the JSON property `successRateRequestVolume`
18193
+ # @return [Fixnum]
18194
+ attr_accessor :success_rate_request_volume
18195
+
18196
+ # This factor is used to determine the ejection threshold for success rate
18197
+ # outlier ejection. The ejection threshold is the difference between the mean
18198
+ # success rate, and the product of this factor and the standard deviation of the
18199
+ # mean success rate: mean - (stdev * success_rate_stdev_factor). This factor is
18200
+ # divided by a thousand to get a double. That is, if the desired factor is 1.9,
18201
+ # the runtime value should be 1900. Defaults to 1900.
18202
+ # Corresponds to the JSON property `successRateStdevFactor`
18203
+ # @return [Fixnum]
18204
+ attr_accessor :success_rate_stdev_factor
18205
+
18206
+ def initialize(**args)
18207
+ update!(**args)
18208
+ end
18209
+
18210
+ # Update properties of this object
18211
+ def update!(**args)
18212
+ @base_ejection_time = args[:base_ejection_time] if args.key?(:base_ejection_time)
18213
+ @consecutive_errors = args[:consecutive_errors] if args.key?(:consecutive_errors)
18214
+ @consecutive_gateway_failure = args[:consecutive_gateway_failure] if args.key?(:consecutive_gateway_failure)
18215
+ @enforcing_consecutive_errors = args[:enforcing_consecutive_errors] if args.key?(:enforcing_consecutive_errors)
18216
+ @enforcing_consecutive_gateway_failure = args[:enforcing_consecutive_gateway_failure] if args.key?(:enforcing_consecutive_gateway_failure)
18217
+ @enforcing_success_rate = args[:enforcing_success_rate] if args.key?(:enforcing_success_rate)
18218
+ @interval = args[:interval] if args.key?(:interval)
18219
+ @max_ejection_percent = args[:max_ejection_percent] if args.key?(:max_ejection_percent)
18220
+ @success_rate_minimum_hosts = args[:success_rate_minimum_hosts] if args.key?(:success_rate_minimum_hosts)
18221
+ @success_rate_request_volume = args[:success_rate_request_volume] if args.key?(:success_rate_request_volume)
18222
+ @success_rate_stdev_factor = args[:success_rate_stdev_factor] if args.key?(:success_rate_stdev_factor)
18223
+ end
18224
+ end
18225
+
17082
18226
  # A matcher for the path portion of the URL. The BackendService from the longest-
17083
18227
  # matched rule will serve the URL. If no rule was matched, the default service
17084
18228
  # will be used.
17085
18229
  class PathMatcher
17086
18230
  include Google::Apis::Core::Hashable
17087
18231
 
18232
+ # defaultRouteAction takes effect when none of the pathRules or routeRules
18233
+ # match. The load balancer performs advanced routing actions like URL rewrites,
18234
+ # header transformations, etc. prior to forwarding the request to the selected
18235
+ # backend. If defaultRouteAction specifies any weightedBackendServices,
18236
+ # defaultService must not be set. Conversely if defaultService is set,
18237
+ # defaultRouteAction cannot contain any weightedBackendServices.
18238
+ # Only one of defaultRouteAction or defaultUrlRedirect must be set.
18239
+ # Corresponds to the JSON property `defaultRouteAction`
18240
+ # @return [Google::Apis::ComputeV1::HttpRouteAction]
18241
+ attr_accessor :default_route_action
18242
+
17088
18243
  # The full or partial URL to the BackendService resource. This will be used if
17089
18244
  # none of the pathRules or routeRules defined by this PathMatcher are matched.
17090
18245
  # For example, the following are all valid URLs to a BackendService resource:
@@ -17107,12 +18262,23 @@ module Google
17107
18262
  # @return [String]
17108
18263
  attr_accessor :default_service
17109
18264
 
18265
+ # Specifies settings for an HTTP redirect.
18266
+ # Corresponds to the JSON property `defaultUrlRedirect`
18267
+ # @return [Google::Apis::ComputeV1::HttpRedirectAction]
18268
+ attr_accessor :default_url_redirect
18269
+
17110
18270
  # An optional description of this resource. Provide this property when you
17111
18271
  # create the resource.
17112
18272
  # Corresponds to the JSON property `description`
17113
18273
  # @return [String]
17114
18274
  attr_accessor :description
17115
18275
 
18276
+ # The request and response header transformations that take effect before the
18277
+ # request is passed along to the selected backendService.
18278
+ # Corresponds to the JSON property `headerAction`
18279
+ # @return [Google::Apis::ComputeV1::HttpHeaderAction]
18280
+ attr_accessor :header_action
18281
+
17116
18282
  # The name to which this PathMatcher is referred by the HostRule.
17117
18283
  # Corresponds to the JSON property `name`
17118
18284
  # @return [String]
@@ -17124,21 +18290,35 @@ module Google
17124
18290
  # first basis.
17125
18291
  # For example: a pathRule with a path /a/b/c/* will match before /a/b/*
17126
18292
  # irrespective of the order in which those paths appear in this list.
17127
- # Only one of pathRules or routeRules must be set.
18293
+ # Within a given pathMatcher, only one of pathRules or routeRules must be set.
17128
18294
  # Corresponds to the JSON property `pathRules`
17129
18295
  # @return [Array<Google::Apis::ComputeV1::PathRule>]
17130
18296
  attr_accessor :path_rules
17131
18297
 
18298
+ # The list of ordered HTTP route rules. Use this list instead of pathRules when
18299
+ # advanced route matching and routing actions are desired. The order of
18300
+ # specifying routeRules matters: the first rule that matches will cause its
18301
+ # specified routing action to take effect.
18302
+ # Within a given pathMatcher, only one of pathRules or routeRules must be set.
18303
+ # routeRules are not supported in UrlMaps intended for External Load balancers.
18304
+ # Corresponds to the JSON property `routeRules`
18305
+ # @return [Array<Google::Apis::ComputeV1::HttpRouteRule>]
18306
+ attr_accessor :route_rules
18307
+
17132
18308
  def initialize(**args)
17133
18309
  update!(**args)
17134
18310
  end
17135
18311
 
17136
18312
  # Update properties of this object
17137
18313
  def update!(**args)
18314
+ @default_route_action = args[:default_route_action] if args.key?(:default_route_action)
17138
18315
  @default_service = args[:default_service] if args.key?(:default_service)
18316
+ @default_url_redirect = args[:default_url_redirect] if args.key?(:default_url_redirect)
17139
18317
  @description = args[:description] if args.key?(:description)
18318
+ @header_action = args[:header_action] if args.key?(:header_action)
17140
18319
  @name = args[:name] if args.key?(:name)
17141
18320
  @path_rules = args[:path_rules] if args.key?(:path_rules)
18321
+ @route_rules = args[:route_rules] if args.key?(:route_rules)
17142
18322
  end
17143
18323
  end
17144
18324
 
@@ -17155,6 +18335,16 @@ module Google
17155
18335
  # @return [Array<String>]
17156
18336
  attr_accessor :paths
17157
18337
 
18338
+ # In response to a matching path, the load balancer performs advanced routing
18339
+ # actions like URL rewrites, header transformations, etc. prior to forwarding
18340
+ # the request to the selected backend. If routeAction specifies any
18341
+ # weightedBackendServices, service must not be set. Conversely if service is set,
18342
+ # routeAction cannot contain any weightedBackendServices.
18343
+ # Only one of routeAction or urlRedirect must be set.
18344
+ # Corresponds to the JSON property `routeAction`
18345
+ # @return [Google::Apis::ComputeV1::HttpRouteAction]
18346
+ attr_accessor :route_action
18347
+
17158
18348
  # The full or partial URL of the backend service resource to which traffic is
17159
18349
  # directed if this rule is matched. If routeAction is additionally specified,
17160
18350
  # advanced routing actions like URL Rewrites, etc. take effect prior to sending
@@ -17167,6 +18357,11 @@ module Google
17167
18357
  # @return [String]
17168
18358
  attr_accessor :service
17169
18359
 
18360
+ # Specifies settings for an HTTP redirect.
18361
+ # Corresponds to the JSON property `urlRedirect`
18362
+ # @return [Google::Apis::ComputeV1::HttpRedirectAction]
18363
+ attr_accessor :url_redirect
18364
+
17170
18365
  def initialize(**args)
17171
18366
  update!(**args)
17172
18367
  end
@@ -17174,7 +18369,9 @@ module Google
17174
18369
  # Update properties of this object
17175
18370
  def update!(**args)
17176
18371
  @paths = args[:paths] if args.key?(:paths)
18372
+ @route_action = args[:route_action] if args.key?(:route_action)
17177
18373
  @service = args[:service] if args.key?(:service)
18374
+ @url_redirect = args[:url_redirect] if args.key?(:url_redirect)
17178
18375
  end
17179
18376
  end
17180
18377
 
@@ -17240,7 +18437,12 @@ module Google
17240
18437
  # @return [Array<Google::Apis::ComputeV1::Rule>]
17241
18438
  attr_accessor :rules
17242
18439
 
17243
- # Deprecated.
18440
+ # Specifies the format of the policy.
18441
+ # Valid values are 0, 1, and 3. Requests specifying an invalid value will be
18442
+ # rejected.
18443
+ # Policies with any conditional bindings must specify version 3. Policies
18444
+ # without any conditional bindings may specify any valid value or leave the
18445
+ # field unset.
17244
18446
  # Corresponds to the JSON property `version`
17245
18447
  # @return [Fixnum]
17246
18448
  attr_accessor :version
@@ -18706,6 +19908,28 @@ module Google
18706
19908
  end
18707
19909
  end
18708
19910
 
19911
+ # A policy that specifies how requests intended for the route's backends are
19912
+ # shadowed to a separate mirrored backend service. Loadbalancer does not wait
19913
+ # for responses from the shadow service. Prior to sending traffic to the shadow
19914
+ # service, the host / authority header is suffixed with -shadow.
19915
+ class RequestMirrorPolicy
19916
+ include Google::Apis::Core::Hashable
19917
+
19918
+ # The full or partial URL to the BackendService resource being mirrored to.
19919
+ # Corresponds to the JSON property `backendService`
19920
+ # @return [String]
19921
+ attr_accessor :backend_service
19922
+
19923
+ def initialize(**args)
19924
+ update!(**args)
19925
+ end
19926
+
19927
+ # Update properties of this object
19928
+ def update!(**args)
19929
+ @backend_service = args[:backend_service] if args.key?(:backend_service)
19930
+ end
19931
+ end
19932
+
18709
19933
  # Represents a reservation resource. A reservation ensures that capacity is held
18710
19934
  # in a specific zone even if the reserved VMs are not running. For more
18711
19935
  # information, read Reserving zonal resources. (== resource_for beta.
@@ -26618,6 +27842,17 @@ module Google
26618
27842
  # @return [String]
26619
27843
  attr_accessor :creation_timestamp
26620
27844
 
27845
+ # defaultRouteAction takes effect when none of the hostRules match. The load
27846
+ # balancer performs advanced routing actions like URL rewrites, header
27847
+ # transformations, etc. prior to forwarding the request to the selected backend.
27848
+ # If defaultRouteAction specifies any weightedBackendServices, defaultService
27849
+ # must not be set. Conversely if defaultService is set, defaultRouteAction
27850
+ # cannot contain any weightedBackendServices.
27851
+ # Only one of defaultRouteAction or defaultUrlRedirect must be set.
27852
+ # Corresponds to the JSON property `defaultRouteAction`
27853
+ # @return [Google::Apis::ComputeV1::HttpRouteAction]
27854
+ attr_accessor :default_route_action
27855
+
26621
27856
  # The full or partial URL of the defaultService resource to which traffic is
26622
27857
  # directed if none of the hostRules match. If defaultRouteAction is additionally
26623
27858
  # specified, advanced routing actions like URL Rewrites, etc. take effect prior
@@ -26631,6 +27866,11 @@ module Google
26631
27866
  # @return [String]
26632
27867
  attr_accessor :default_service
26633
27868
 
27869
+ # Specifies settings for an HTTP redirect.
27870
+ # Corresponds to the JSON property `defaultUrlRedirect`
27871
+ # @return [Google::Apis::ComputeV1::HttpRedirectAction]
27872
+ attr_accessor :default_url_redirect
27873
+
26634
27874
  # An optional description of this resource. Provide this property when you
26635
27875
  # create the resource.
26636
27876
  # Corresponds to the JSON property `description`
@@ -26648,6 +27888,12 @@ module Google
26648
27888
  # @return [String]
26649
27889
  attr_accessor :fingerprint
26650
27890
 
27891
+ # The request and response header transformations that take effect before the
27892
+ # request is passed along to the selected backendService.
27893
+ # Corresponds to the JSON property `headerAction`
27894
+ # @return [Google::Apis::ComputeV1::HttpHeaderAction]
27895
+ attr_accessor :header_action
27896
+
26651
27897
  # The list of HostRules to use against the URL.
26652
27898
  # Corresponds to the JSON property `hostRules`
26653
27899
  # @return [Array<Google::Apis::ComputeV1::HostRule>]
@@ -26705,9 +27951,12 @@ module Google
26705
27951
  # Update properties of this object
26706
27952
  def update!(**args)
26707
27953
  @creation_timestamp = args[:creation_timestamp] if args.key?(:creation_timestamp)
27954
+ @default_route_action = args[:default_route_action] if args.key?(:default_route_action)
26708
27955
  @default_service = args[:default_service] if args.key?(:default_service)
27956
+ @default_url_redirect = args[:default_url_redirect] if args.key?(:default_url_redirect)
26709
27957
  @description = args[:description] if args.key?(:description)
26710
27958
  @fingerprint = args[:fingerprint] if args.key?(:fingerprint)
27959
+ @header_action = args[:header_action] if args.key?(:header_action)
26711
27960
  @host_rules = args[:host_rules] if args.key?(:host_rules)
26712
27961
  @id = args[:id] if args.key?(:id)
26713
27962
  @kind = args[:kind] if args.key?(:kind)
@@ -27185,6 +28434,36 @@ module Google
27185
28434
  end
27186
28435
  end
27187
28436
 
28437
+ # The spec for modifying the path before sending the request to the matched
28438
+ # backend service.
28439
+ class UrlRewrite
28440
+ include Google::Apis::Core::Hashable
28441
+
28442
+ # Prior to forwarding the request to the selected service, the request's host
28443
+ # header is replaced with contents of hostRewrite.
28444
+ # The value must be between 1 and 255 characters.
28445
+ # Corresponds to the JSON property `hostRewrite`
28446
+ # @return [String]
28447
+ attr_accessor :host_rewrite
28448
+
28449
+ # Prior to forwarding the request to the selected backend service, the matching
28450
+ # portion of the request's path is replaced by pathPrefixRewrite.
28451
+ # The value must be between 1 and 1024 characters.
28452
+ # Corresponds to the JSON property `pathPrefixRewrite`
28453
+ # @return [String]
28454
+ attr_accessor :path_prefix_rewrite
28455
+
28456
+ def initialize(**args)
28457
+ update!(**args)
28458
+ end
28459
+
28460
+ # Update properties of this object
28461
+ def update!(**args)
28462
+ @host_rewrite = args[:host_rewrite] if args.key?(:host_rewrite)
28463
+ @path_prefix_rewrite = args[:path_prefix_rewrite] if args.key?(:path_prefix_rewrite)
28464
+ end
28465
+ end
28466
+
27188
28467
  # Subnetwork which the current user has compute.subnetworks.use permission on.
27189
28468
  class UsableSubnetwork
27190
28469
  include Google::Apis::Core::Hashable
@@ -28685,6 +29964,50 @@ module Google
28685
29964
  end
28686
29965
  end
28687
29966
 
29967
+ # In contrast to a single BackendService in HttpRouteAction to which all
29968
+ # matching traffic is directed to, WeightedBackendService allows traffic to be
29969
+ # split across multiple BackendServices. The volume of traffic for each
29970
+ # BackendService is proportional to the weight specified in each
29971
+ # WeightedBackendService
29972
+ class WeightedBackendService
29973
+ include Google::Apis::Core::Hashable
29974
+
29975
+ # The full or partial URL to the default BackendService resource. Before
29976
+ # forwarding the request to backendService, the loadbalancer applies any
29977
+ # relevant headerActions specified as part of this backendServiceWeight.
29978
+ # Corresponds to the JSON property `backendService`
29979
+ # @return [String]
29980
+ attr_accessor :backend_service
29981
+
29982
+ # The request and response header transformations that take effect before the
29983
+ # request is passed along to the selected backendService.
29984
+ # Corresponds to the JSON property `headerAction`
29985
+ # @return [Google::Apis::ComputeV1::HttpHeaderAction]
29986
+ attr_accessor :header_action
29987
+
29988
+ # Specifies the fraction of traffic sent to backendService, computed as weight /
29989
+ # (sum of all weightedBackendService weights in routeAction) .
29990
+ # The selection of a backend service is determined only for new traffic. Once a
29991
+ # user's request has been directed to a backendService, subsequent requests will
29992
+ # be sent to the same backendService as determined by the BackendService's
29993
+ # session affinity policy.
29994
+ # The value must be between 0 and 1000
29995
+ # Corresponds to the JSON property `weight`
29996
+ # @return [Fixnum]
29997
+ attr_accessor :weight
29998
+
29999
+ def initialize(**args)
30000
+ update!(**args)
30001
+ end
30002
+
30003
+ # Update properties of this object
30004
+ def update!(**args)
30005
+ @backend_service = args[:backend_service] if args.key?(:backend_service)
30006
+ @header_action = args[:header_action] if args.key?(:header_action)
30007
+ @weight = args[:weight] if args.key?(:weight)
30008
+ end
30009
+ end
30010
+
28688
30011
  #
28689
30012
  class XpnHostList
28690
30013
  include Google::Apis::Core::Hashable