1/*
2Copyright 2018 Google LLC
3
4Licensed under the Apache License, Version 2.0 (the "License");
5you may not use this file except in compliance with the License.
6You may obtain a copy of the License at
7
8https://www.apache.org/licenses/LICENSE-2.0
9
10Unless required by applicable law or agreed to in writing, software
11distributed under the License is distributed on an "AS IS" BASIS,
12WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13See the License for the specific language governing permissions and
14limitations under the License.
15*/
16
17package meta
18
19import (
20	"reflect"
21
22	alpha "google.golang.org/api/compute/v0.alpha"
23	beta "google.golang.org/api/compute/v0.beta"
24	ga "google.golang.org/api/compute/v1"
25)
26
27// Version of the API (ga, alpha, beta).
28type Version string
29
30const (
31	// NoGet prevents the Get() method from being generated.
32	NoGet = 1 << iota
33	// NoList prevents the List() method from being generated.
34	NoList = 1 << iota
35	// NoDelete prevents the Delete() method from being generated.
36	NoDelete = 1 << iota
37	// NoInsert prevents the Insert() method from being generated.
38	NoInsert = 1 << iota
39	// CustomOps specifies that an empty interface xxxOps will be generated to
40	// enable custom method calls to be attached to the generated service
41	// interface.
42	CustomOps = 1 << iota
43	// AggregatedList will generated a method for AggregatedList().
44	AggregatedList = 1 << iota
45
46	// ReadOnly specifies that the given resource is read-only and should not
47	// have insert() or delete() methods generated for the wrapper.
48	ReadOnly = NoDelete | NoInsert
49
50	// VersionGA is the API version in compute.v1.
51	VersionGA Version = "ga"
52	// VersionAlpha is the API version in computer.v0.alpha.
53	VersionAlpha Version = "alpha"
54	// VersionBeta is the API version in computer.v0.beta.
55	VersionBeta Version = "beta"
56)
57
58// AllVersions is a list of all versions of the GCE API.
59var AllVersions = []Version{
60	VersionGA,
61	VersionAlpha,
62	VersionBeta,
63}
64
65// AllServices are a list of all the services to generate code for. Keep
66// this list in lexiographical order by object type.
67var AllServices = []*ServiceInfo{
68	{
69		Object:      "Address",
70		Service:     "Addresses",
71		Resource:    "addresses",
72		keyType:     Regional,
73		serviceType: reflect.TypeOf(&ga.AddressesService{}),
74		options:     AggregatedList,
75	},
76	{
77		Object:      "Address",
78		Service:     "Addresses",
79		Resource:    "addresses",
80		version:     VersionAlpha,
81		keyType:     Regional,
82		serviceType: reflect.TypeOf(&alpha.AddressesService{}),
83		options:     AggregatedList,
84	},
85	{
86		Object:      "Address",
87		Service:     "Addresses",
88		Resource:    "addresses",
89		version:     VersionBeta,
90		keyType:     Regional,
91		serviceType: reflect.TypeOf(&beta.AddressesService{}),
92		options:     AggregatedList,
93	},
94	{
95		Object:      "Address",
96		Service:     "GlobalAddresses",
97		Resource:    "addresses",
98		version:     VersionAlpha,
99		keyType:     Global,
100		serviceType: reflect.TypeOf(&alpha.GlobalAddressesService{}),
101	},
102	{
103		Object:      "Address",
104		Service:     "GlobalAddresses",
105		Resource:    "addresses",
106		keyType:     Global,
107		serviceType: reflect.TypeOf(&ga.GlobalAddressesService{}),
108	},
109	{
110		Object:      "BackendService",
111		Service:     "BackendServices",
112		Resource:    "backendServices",
113		keyType:     Global,
114		serviceType: reflect.TypeOf(&ga.BackendServicesService{}),
115		additionalMethods: []string{
116			"GetHealth",
117			"Patch",
118			"Update",
119		},
120	},
121	{
122		Object:      "BackendService",
123		Service:     "BackendServices",
124		Resource:    "backendServices",
125		version:     VersionBeta,
126		keyType:     Global,
127		serviceType: reflect.TypeOf(&beta.BackendServicesService{}),
128		additionalMethods: []string{
129			"Update",
130			"SetSecurityPolicy",
131		},
132	},
133	{
134		Object:      "BackendService",
135		Service:     "BackendServices",
136		Resource:    "backendServices",
137		version:     VersionAlpha,
138		keyType:     Global,
139		serviceType: reflect.TypeOf(&alpha.BackendServicesService{}),
140		additionalMethods: []string{
141			"Update",
142			"SetSecurityPolicy",
143		},
144	},
145	{
146		Object:      "BackendService",
147		Service:     "RegionBackendServices",
148		Resource:    "backendServices",
149		version:     VersionGA,
150		keyType:     Regional,
151		serviceType: reflect.TypeOf(&ga.RegionBackendServicesService{}),
152		additionalMethods: []string{
153			"GetHealth",
154			"Update",
155		},
156	},
157	{
158		Object:      "BackendService",
159		Service:     "RegionBackendServices",
160		Resource:    "backendServices",
161		version:     VersionAlpha,
162		keyType:     Regional,
163		serviceType: reflect.TypeOf(&alpha.RegionBackendServicesService{}),
164		additionalMethods: []string{
165			"GetHealth",
166			"Update",
167		},
168	},
169	{
170		Object:      "BackendService",
171		Service:     "RegionBackendServices",
172		Resource:    "backendServices",
173		version:     VersionBeta,
174		keyType:     Regional,
175		serviceType: reflect.TypeOf(&beta.RegionBackendServicesService{}),
176		additionalMethods: []string{
177			"GetHealth",
178			"Update",
179		},
180	},
181	{
182		Object:      "Disk",
183		Service:     "Disks",
184		Resource:    "disks",
185		keyType:     Zonal,
186		serviceType: reflect.TypeOf(&ga.DisksService{}),
187		additionalMethods: []string{
188			"Resize",
189		},
190	},
191	{
192		Object:      "Disk",
193		Service:     "RegionDisks",
194		Resource:    "disks",
195		version:     VersionGA,
196		keyType:     Regional,
197		serviceType: reflect.TypeOf(&ga.RegionDisksService{}),
198		additionalMethods: []string{
199			"Resize",
200		},
201	},
202	{
203		Object:      "Firewall",
204		Service:     "Firewalls",
205		Resource:    "firewalls",
206		version:     VersionAlpha,
207		keyType:     Global,
208		serviceType: reflect.TypeOf(&alpha.FirewallsService{}),
209		additionalMethods: []string{
210			"Update",
211		},
212	},
213	{
214		Object:      "Firewall",
215		Service:     "Firewalls",
216		Resource:    "firewalls",
217		version:     VersionBeta,
218		keyType:     Global,
219		serviceType: reflect.TypeOf(&beta.FirewallsService{}),
220		additionalMethods: []string{
221			"Update",
222		},
223	},
224	{
225		Object:      "Firewall",
226		Service:     "Firewalls",
227		Resource:    "firewalls",
228		keyType:     Global,
229		serviceType: reflect.TypeOf(&ga.FirewallsService{}),
230		additionalMethods: []string{
231			"Update",
232		},
233	},
234	{
235		Object:      "ForwardingRule",
236		Service:     "ForwardingRules",
237		Resource:    "forwardingRules",
238		keyType:     Regional,
239		serviceType: reflect.TypeOf(&ga.ForwardingRulesService{}),
240		additionalMethods: []string{
241			"SetTarget",
242		},
243	},
244	{
245		Object:      "ForwardingRule",
246		Service:     "ForwardingRules",
247		Resource:    "forwardingRules",
248		version:     VersionAlpha,
249		keyType:     Regional,
250		serviceType: reflect.TypeOf(&alpha.ForwardingRulesService{}),
251		additionalMethods: []string{
252			"SetTarget",
253		},
254	},
255	{
256		Object:      "ForwardingRule",
257		Service:     "ForwardingRules",
258		Resource:    "forwardingRules",
259		version:     VersionBeta,
260		keyType:     Regional,
261		serviceType: reflect.TypeOf(&beta.ForwardingRulesService{}),
262		additionalMethods: []string{
263			"SetTarget",
264		},
265	},
266	{
267		Object:      "ForwardingRule",
268		Service:     "GlobalForwardingRules",
269		Resource:    "forwardingRules",
270		version:     VersionAlpha,
271		keyType:     Global,
272		serviceType: reflect.TypeOf(&alpha.GlobalForwardingRulesService{}),
273		additionalMethods: []string{
274			"SetTarget",
275		},
276	},
277	{
278		Object:      "ForwardingRule",
279		Service:     "GlobalForwardingRules",
280		Resource:    "forwardingRules",
281		version:     VersionBeta,
282		keyType:     Global,
283		serviceType: reflect.TypeOf(&beta.GlobalForwardingRulesService{}),
284		additionalMethods: []string{
285			"SetTarget",
286		},
287	},
288	{
289		Object:      "ForwardingRule",
290		Service:     "GlobalForwardingRules",
291		Resource:    "forwardingRules",
292		keyType:     Global,
293		serviceType: reflect.TypeOf(&ga.GlobalForwardingRulesService{}),
294		additionalMethods: []string{
295			"SetTarget",
296		},
297	},
298	{
299		Object:      "HealthCheck",
300		Service:     "HealthChecks",
301		Resource:    "healthChecks",
302		keyType:     Global,
303		serviceType: reflect.TypeOf(&ga.HealthChecksService{}),
304		additionalMethods: []string{
305			"Update",
306		},
307	},
308	{
309		Object:      "HealthCheck",
310		Service:     "HealthChecks",
311		Resource:    "healthChecks",
312		version:     VersionAlpha,
313		keyType:     Global,
314		serviceType: reflect.TypeOf(&alpha.HealthChecksService{}),
315		additionalMethods: []string{
316			"Update",
317		},
318	},
319	{
320		Object:      "HealthCheck",
321		Service:     "HealthChecks",
322		Resource:    "healthChecks",
323		version:     VersionBeta,
324		keyType:     Global,
325		serviceType: reflect.TypeOf(&beta.HealthChecksService{}),
326		additionalMethods: []string{
327			"Update",
328		},
329	},
330	{
331		Object:      "HealthCheck",
332		Service:     "RegionHealthChecks",
333		Resource:    "healthChecks",
334		version:     VersionAlpha,
335		keyType:     Regional,
336		serviceType: reflect.TypeOf(&alpha.RegionHealthChecksService{}),
337		additionalMethods: []string{
338			"Update",
339		},
340	},
341	{
342		Object:      "HealthCheck",
343		Service:     "RegionHealthChecks",
344		Resource:    "healthChecks",
345		version:     VersionBeta,
346		keyType:     Regional,
347		serviceType: reflect.TypeOf(&beta.RegionHealthChecksService{}),
348		additionalMethods: []string{
349			"Update",
350		},
351	},
352	{
353		Object:      "HealthCheck",
354		Service:     "RegionHealthChecks",
355		Resource:    "healthChecks",
356		version:     VersionGA,
357		keyType:     Regional,
358		serviceType: reflect.TypeOf(&ga.RegionHealthChecksService{}),
359		additionalMethods: []string{
360			"Update",
361		},
362	},
363	{
364		Object:      "HttpHealthCheck",
365		Service:     "HttpHealthChecks",
366		Resource:    "httpHealthChecks",
367		keyType:     Global,
368		serviceType: reflect.TypeOf(&ga.HttpHealthChecksService{}),
369		additionalMethods: []string{
370			"Update",
371		},
372	},
373	{
374		Object:      "HttpsHealthCheck",
375		Service:     "HttpsHealthChecks",
376		Resource:    "httpsHealthChecks",
377		keyType:     Global,
378		serviceType: reflect.TypeOf(&ga.HttpsHealthChecksService{}),
379		additionalMethods: []string{
380			"Update",
381		},
382	},
383	{
384		Object:      "InstanceGroup",
385		Service:     "InstanceGroups",
386		Resource:    "instanceGroups",
387		keyType:     Zonal,
388		serviceType: reflect.TypeOf(&ga.InstanceGroupsService{}),
389		additionalMethods: []string{
390			"AddInstances",
391			"ListInstances",
392			"RemoveInstances",
393			"SetNamedPorts",
394		},
395	},
396	{
397		Object:      "Instance",
398		Service:     "Instances",
399		Resource:    "instances",
400		keyType:     Zonal,
401		serviceType: reflect.TypeOf(&ga.InstancesService{}),
402		additionalMethods: []string{
403			"AttachDisk",
404			"DetachDisk",
405		},
406	},
407	{
408		Object:      "Instance",
409		Service:     "Instances",
410		Resource:    "instances",
411		version:     VersionBeta,
412		keyType:     Zonal,
413		serviceType: reflect.TypeOf(&beta.InstancesService{}),
414		additionalMethods: []string{
415			"AttachDisk",
416			"DetachDisk",
417			"UpdateNetworkInterface",
418		},
419	},
420	{
421		Object:      "Instance",
422		Service:     "Instances",
423		Resource:    "instances",
424		version:     VersionAlpha,
425		keyType:     Zonal,
426		serviceType: reflect.TypeOf(&alpha.InstancesService{}),
427		additionalMethods: []string{
428			"AttachDisk",
429			"DetachDisk",
430			"UpdateNetworkInterface",
431		},
432	},
433	{
434		Object:      "Network",
435		Service:     "Networks",
436		Resource:    "networks",
437		version:     VersionAlpha,
438		keyType:     Global,
439		serviceType: reflect.TypeOf(&alpha.NetworksService{}),
440	},
441	{
442		Object:      "Network",
443		Service:     "Networks",
444		Resource:    "networks",
445		version:     VersionBeta,
446		keyType:     Global,
447		serviceType: reflect.TypeOf(&alpha.NetworksService{}),
448	},
449	{
450		Object:      "Network",
451		Service:     "Networks",
452		Resource:    "networks",
453		version:     VersionGA,
454		keyType:     Global,
455		serviceType: reflect.TypeOf(&alpha.NetworksService{}),
456	},
457	{
458		Object:      "NetworkEndpointGroup",
459		Service:     "NetworkEndpointGroups",
460		Resource:    "networkEndpointGroups",
461		version:     VersionAlpha,
462		keyType:     Zonal,
463		serviceType: reflect.TypeOf(&alpha.NetworkEndpointGroupsService{}),
464		additionalMethods: []string{
465			"AttachNetworkEndpoints",
466			"DetachNetworkEndpoints",
467			"ListNetworkEndpoints",
468		},
469		options: AggregatedList,
470	},
471	{
472		Object:      "NetworkEndpointGroup",
473		Service:     "NetworkEndpointGroups",
474		Resource:    "networkEndpointGroups",
475		version:     VersionBeta,
476		keyType:     Zonal,
477		serviceType: reflect.TypeOf(&beta.NetworkEndpointGroupsService{}),
478		additionalMethods: []string{
479			"AttachNetworkEndpoints",
480			"DetachNetworkEndpoints",
481			"ListNetworkEndpoints",
482		},
483		options: AggregatedList,
484	},
485	{
486		Object:      "NetworkEndpointGroup",
487		Service:     "NetworkEndpointGroups",
488		Resource:    "networkEndpointGroups",
489		version:     VersionGA,
490		keyType:     Zonal,
491		serviceType: reflect.TypeOf(&ga.NetworkEndpointGroupsService{}),
492		additionalMethods: []string{
493			"AttachNetworkEndpoints",
494			"DetachNetworkEndpoints",
495			"ListNetworkEndpoints",
496		},
497		options: AggregatedList,
498	},
499	{
500		Object:   "Project",
501		Service:  "Projects",
502		Resource: "projects",
503		keyType:  Global,
504		// Generate only the stub with no methods.
505		options:     NoGet | NoList | NoInsert | NoDelete | CustomOps,
506		serviceType: reflect.TypeOf(&ga.ProjectsService{}),
507	},
508	{
509		Object:      "Region",
510		Service:     "Regions",
511		Resource:    "regions",
512		keyType:     Global,
513		options:     ReadOnly,
514		serviceType: reflect.TypeOf(&ga.RegionsService{}),
515	},
516	{
517		Object:      "Route",
518		Service:     "Routes",
519		Resource:    "routes",
520		keyType:     Global,
521		serviceType: reflect.TypeOf(&ga.RoutesService{}),
522	},
523	{
524		Object:      "SecurityPolicy",
525		Service:     "SecurityPolicies",
526		Resource:    "securityPolicies",
527		version:     VersionBeta,
528		keyType:     Global,
529		serviceType: reflect.TypeOf(&beta.SecurityPoliciesService{}),
530		additionalMethods: []string{
531			"AddRule",
532			"GetRule",
533			"Patch",
534			"PatchRule",
535			"RemoveRule",
536		},
537	},
538	{
539		Object:      "SslCertificate",
540		Service:     "SslCertificates",
541		Resource:    "sslCertificates",
542		keyType:     Global,
543		serviceType: reflect.TypeOf(&ga.SslCertificatesService{}),
544	},
545	{
546		Object:      "SslCertificate",
547		Service:     "SslCertificates",
548		Resource:    "sslCertificates",
549		version:     VersionBeta,
550		keyType:     Global,
551		serviceType: reflect.TypeOf(&beta.SslCertificatesService{}),
552	},
553	{
554		Object:      "SslCertificate",
555		Service:     "SslCertificates",
556		Resource:    "sslCertificates",
557		version:     VersionAlpha,
558		keyType:     Global,
559		serviceType: reflect.TypeOf(&alpha.SslCertificatesService{}),
560	},
561	{
562		Object:      "SslCertificate",
563		Service:     "RegionSslCertificates",
564		Resource:    "sslCertificates",
565		version:     VersionAlpha,
566		keyType:     Regional,
567		serviceType: reflect.TypeOf(&alpha.RegionSslCertificatesService{}),
568	},
569	{
570		Object:      "SslCertificate",
571		Service:     "RegionSslCertificates",
572		Resource:    "sslCertificates",
573		version:     VersionBeta,
574		keyType:     Regional,
575		serviceType: reflect.TypeOf(&beta.RegionSslCertificatesService{}),
576	},
577	{
578		Object:      "SslCertificate",
579		Service:     "RegionSslCertificates",
580		Resource:    "sslCertificates",
581		version:     VersionGA,
582		keyType:     Regional,
583		serviceType: reflect.TypeOf(&ga.RegionSslCertificatesService{}),
584	},
585	{
586		Object:      "SslPolicy",
587		Service:     "SslPolicies",
588		Resource:    "sslPolicies",
589		keyType:     Global,
590		serviceType: reflect.TypeOf(&ga.SslPoliciesService{}),
591		options:     NoList, // List() naming convention is different in GCE API for this resource
592	},
593	{
594		Object:      "Subnetwork",
595		Service:     "Subnetworks",
596		Resource:    "subnetworks",
597		version:     VersionAlpha,
598		keyType:     Regional,
599		serviceType: reflect.TypeOf(&alpha.SubnetworksService{}),
600	},
601	{
602		Object:      "Subnetwork",
603		Service:     "Subnetworks",
604		Resource:    "subnetworks",
605		version:     VersionBeta,
606		keyType:     Regional,
607		serviceType: reflect.TypeOf(&alpha.SubnetworksService{}),
608	},
609	{
610		Object:      "Subnetwork",
611		Service:     "Subnetworks",
612		Resource:    "subnetworks",
613		version:     VersionGA,
614		keyType:     Regional,
615		serviceType: reflect.TypeOf(&alpha.SubnetworksService{}),
616	},
617	{
618		Object:      "TargetHttpProxy",
619		Service:     "TargetHttpProxies",
620		Resource:    "targetHttpProxies",
621		version:     VersionAlpha,
622		keyType:     Global,
623		serviceType: reflect.TypeOf(&alpha.TargetHttpProxiesService{}),
624		additionalMethods: []string{
625			"SetUrlMap",
626		},
627	},
628	{
629		Object:      "TargetHttpProxy",
630		Service:     "TargetHttpProxies",
631		Resource:    "targetHttpProxies",
632		version:     VersionBeta,
633		keyType:     Global,
634		serviceType: reflect.TypeOf(&beta.TargetHttpProxiesService{}),
635		additionalMethods: []string{
636			"SetUrlMap",
637		},
638	},
639	{
640		Object:      "TargetHttpProxy",
641		Service:     "TargetHttpProxies",
642		Resource:    "targetHttpProxies",
643		keyType:     Global,
644		serviceType: reflect.TypeOf(&ga.TargetHttpProxiesService{}),
645		additionalMethods: []string{
646			"SetUrlMap",
647		},
648	},
649	{
650		Object:      "TargetHttpProxy",
651		Service:     "RegionTargetHttpProxies",
652		Resource:    "targetHttpProxies",
653		version:     VersionAlpha,
654		keyType:     Regional,
655		serviceType: reflect.TypeOf(&alpha.RegionTargetHttpProxiesService{}),
656		additionalMethods: []string{
657			"SetUrlMap",
658		},
659	},
660	{
661		Object:      "TargetHttpProxy",
662		Service:     "RegionTargetHttpProxies",
663		Resource:    "targetHttpProxies",
664		version:     VersionBeta,
665		keyType:     Regional,
666		serviceType: reflect.TypeOf(&beta.RegionTargetHttpProxiesService{}),
667		additionalMethods: []string{
668			"SetUrlMap",
669		},
670	},
671	{
672		Object:      "TargetHttpProxy",
673		Service:     "RegionTargetHttpProxies",
674		Resource:    "targetHttpProxies",
675		version:     VersionGA,
676		keyType:     Regional,
677		serviceType: reflect.TypeOf(&ga.RegionTargetHttpProxiesService{}),
678		additionalMethods: []string{
679			"SetUrlMap",
680		},
681	},
682	{
683		Object:      "TargetHttpsProxy",
684		Service:     "TargetHttpsProxies",
685		Resource:    "targetHttpsProxies",
686		keyType:     Global,
687		serviceType: reflect.TypeOf(&ga.TargetHttpsProxiesService{}),
688		additionalMethods: []string{
689			"SetSslCertificates",
690			"SetSslPolicy",
691			"SetUrlMap",
692		},
693	},
694	{
695		Object:      "TargetHttpsProxy",
696		Service:     "TargetHttpsProxies",
697		Resource:    "targetHttpsProxies",
698		version:     VersionAlpha,
699		keyType:     Global,
700		serviceType: reflect.TypeOf(&alpha.TargetHttpsProxiesService{}),
701		additionalMethods: []string{
702			"SetSslCertificates",
703			"SetSslPolicy",
704			"SetUrlMap",
705		},
706	},
707	{
708		Object:      "TargetHttpsProxy",
709		Service:     "TargetHttpsProxies",
710		Resource:    "targetHttpsProxies",
711		version:     VersionBeta,
712		keyType:     Global,
713		serviceType: reflect.TypeOf(&beta.TargetHttpsProxiesService{}),
714		additionalMethods: []string{
715			"SetSslCertificates",
716			"SetSslPolicy",
717			"SetUrlMap",
718		},
719	},
720	{
721		Object:      "TargetHttpsProxy",
722		Service:     "RegionTargetHttpsProxies",
723		Resource:    "targetHttpsProxies",
724		version:     VersionAlpha,
725		keyType:     Regional,
726		serviceType: reflect.TypeOf(&alpha.RegionTargetHttpsProxiesService{}),
727		additionalMethods: []string{
728			"SetSslCertificates",
729			"SetUrlMap",
730		},
731	},
732	{
733		Object:      "TargetHttpsProxy",
734		Service:     "RegionTargetHttpsProxies",
735		Resource:    "targetHttpsProxies",
736		version:     VersionBeta,
737		keyType:     Regional,
738		serviceType: reflect.TypeOf(&beta.RegionTargetHttpsProxiesService{}),
739		additionalMethods: []string{
740			"SetSslCertificates",
741			"SetUrlMap",
742		},
743	},
744	{
745		Object:      "TargetHttpsProxy",
746		Service:     "RegionTargetHttpsProxies",
747		Resource:    "targetHttpsProxies",
748		version:     VersionGA,
749		keyType:     Regional,
750		serviceType: reflect.TypeOf(&ga.RegionTargetHttpsProxiesService{}),
751		additionalMethods: []string{
752			"SetSslCertificates",
753			"SetUrlMap",
754		},
755	},
756	{
757		Object:      "TargetPool",
758		Service:     "TargetPools",
759		Resource:    "targetPools",
760		keyType:     Regional,
761		serviceType: reflect.TypeOf(&ga.TargetPoolsService{}),
762		additionalMethods: []string{
763			"AddInstance",
764			"RemoveInstance",
765		},
766	},
767	{
768		Object:      "UrlMap",
769		Service:     "UrlMaps",
770		Resource:    "urlMaps",
771		version:     VersionAlpha,
772		keyType:     Global,
773		serviceType: reflect.TypeOf(&alpha.UrlMapsService{}),
774		additionalMethods: []string{
775			"Update",
776		},
777	},
778	{
779		Object:      "UrlMap",
780		Service:     "UrlMaps",
781		Resource:    "urlMaps",
782		version:     VersionBeta,
783		keyType:     Global,
784		serviceType: reflect.TypeOf(&beta.UrlMapsService{}),
785		additionalMethods: []string{
786			"Update",
787		},
788	},
789	{
790		Object:      "UrlMap",
791		Service:     "UrlMaps",
792		Resource:    "urlMaps",
793		keyType:     Global,
794		serviceType: reflect.TypeOf(&ga.UrlMapsService{}),
795		additionalMethods: []string{
796			"Update",
797		},
798	},
799	{
800		Object:      "UrlMap",
801		Service:     "RegionUrlMaps",
802		Resource:    "urlMaps",
803		version:     VersionAlpha,
804		keyType:     Regional,
805		serviceType: reflect.TypeOf(&alpha.RegionUrlMapsService{}),
806		additionalMethods: []string{
807			"Update",
808		},
809	},
810	{
811		Object:      "UrlMap",
812		Service:     "RegionUrlMaps",
813		Resource:    "urlMaps",
814		version:     VersionBeta,
815		keyType:     Regional,
816		serviceType: reflect.TypeOf(&beta.RegionUrlMapsService{}),
817		additionalMethods: []string{
818			"Update",
819		},
820	},
821	{
822		Object:      "UrlMap",
823		Service:     "RegionUrlMaps",
824		Resource:    "urlMaps",
825		version:     VersionGA,
826		keyType:     Regional,
827		serviceType: reflect.TypeOf(&ga.RegionUrlMapsService{}),
828		additionalMethods: []string{
829			"Update",
830		},
831	},
832	{
833		Object:      "Zone",
834		Service:     "Zones",
835		Resource:    "zones",
836		keyType:     Global,
837		options:     ReadOnly,
838		serviceType: reflect.TypeOf(&ga.ZonesService{}),
839	},
840}
841